feat(db): add @atomcms/db package skeleton + mysql2/drizzle client
This commit is contained in:
1 parent
c2366fe6c9
commit
0966aa7dda
5 files changed
+848
No files matched your search
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "@atomcms/db",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"main": "./src/index.ts",
|
||||||
|
"types": "./src/index.ts",
|
||||||
|
"scripts": {
|
||||||
|
"test": "vitest run",
|
||||||
|
"typecheck": "tsc --noEmit",
|
||||||
|
"db:pull": "drizzle-kit pull"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"drizzle-orm": "^0.38.0",
|
||||||
|
"mysql2": "^3.11.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"drizzle-kit": "^0.30.0",
|
||||||
|
"typescript": "^5.7.0",
|
||||||
|
"vitest": "^2.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
import { drizzle, type MySql2Database } from "drizzle-orm/mysql2";
|
||||||
|
import mysql from "mysql2/promise";
|
||||||
|
import * as schema from "./schema/index.js";
|
||||||
|
|
||||||
|
export type Database = MySql2Database<typeof schema>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a Drizzle client backed by a mysql2 pool.
|
||||||
|
* The connection targets the LIVE emulator-owned database; this layer
|
||||||
|
* only ever reads/writes data — it never runs migrations.
|
||||||
|
*/
|
||||||
|
export function createDb(databaseUrl: string): { db: Database; pool: mysql.Pool } {
|
||||||
|
const pool = mysql.createPool(databaseUrl);
|
||||||
|
const db = drizzle(pool, { schema, mode: "default" });
|
||||||
|
return { db, pool };
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig.base.json",
|
||||||
|
"compilerOptions": { "rootDir": "src", "outDir": "dist" },
|
||||||
|
"include": ["src"]
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import { defineConfig } from "vitest/config";
|
||||||
|
|
||||||
|
// Local config so Vitest does not walk up into the parent Laravel repo's
|
||||||
|
// vite.config.js (this monorepo is nested inside the Laravel project).
|
||||||
|
export default defineConfig({
|
||||||
|
test: {
|
||||||
|
environment: "node",
|
||||||
|
},
|
||||||
|
});
|
||||||
Generated
+796
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user