docs(db): add introspect-only drizzle config and DB README
This commit is contained in:
1 parent
d04ed42586
commit
2a304c94a4
2 files changed
+36
No files matched your search
@@ -0,0 +1,24 @@
|
||||
# @atomcms/db
|
||||
|
||||
Typed data-access layer over the **emulator-owned** MySQL database.
|
||||
|
||||
## Hard rule: introspect-only
|
||||
|
||||
The database schema is owned and written live by the Habbo game emulator.
|
||||
**Never** run `drizzle-kit push`, `generate`, or `migrate` against it. The only
|
||||
allowed schema command is introspection:
|
||||
|
||||
DATABASE_URL=mysql://user:pass@host:3306/db pnpm --filter @atomcms/db db:pull
|
||||
|
||||
`db:pull` reads the live schema and writes a snapshot to `./drizzle`. The
|
||||
hand-authored files in `src/schema/` cover only the tables the web tier needs
|
||||
first (users, users_currency, bans, website_settings); regenerate the full
|
||||
122-table set from the live DB with `db:pull` when you need more tables.
|
||||
|
||||
## Usage
|
||||
|
||||
import { createDb, makeUsersRepo } from "@atomcms/db";
|
||||
const { db, pool } = createDb(process.env.DATABASE_URL!);
|
||||
const users = makeUsersRepo(db);
|
||||
const sysacc = await users.findByUsername("Systemaccount");
|
||||
await pool.end();
|
||||
@@ -0,0 +1,12 @@
|
||||
import { defineConfig } from "drizzle-kit";
|
||||
|
||||
// INTROSPECT-ONLY. We never generate or push migrations against this database —
|
||||
// it is owned and written live by the game emulator. Use only `drizzle-kit pull`.
|
||||
export default defineConfig({
|
||||
dialect: "mysql",
|
||||
schema: "./src/schema/index.ts",
|
||||
out: "./drizzle", // where `pull` writes the introspected schema snapshot
|
||||
dbCredentials: {
|
||||
url: process.env.DATABASE_URL ?? "",
|
||||
},
|
||||
});
|
||||
Reference in new issue
Block a user