CLI
generate
Create TypeScript types from migrations
What it does
Reads all migration files, applies them to an in-memory database, produces:
| Output | Purpose |
|---|---|
./damian/.generated/tables.ts | TypeScript table definitions for queries |
./damian/.generated/typings.ts | Wraps custom typings from ./damian/typings.ts |
./damian/.generated/db.sql | SQL dump of current schema (for version control) |
tables.ts follows output from damian.config.ts:
output.kind: "damian"imports from@damiandb/pgoutput.kind: "drizzle"imports fromdrizzle-orm/pg-core
For Drizzle output, output.casing controls generated property names:
"preserve"keeps database column names as-is"camel"converts generated property names to camelCase"snake"converts generated property names to snake_case
Default: output: { kind: "damian", casing: "preserve" }
Run
npx damian generatepnpm damian generateyarn damian generateSkip migrations from dump
Use devDumpIgnore in damian.config.ts to exclude specific files from generated db.sql while including them in type generation. Useful for cleaning up schema dumps by omitting seed data:
import { config } from 'damian'
export default config({
driver: 'postgres',
output: {
kind: 'damian',
casing: 'preserve'
},
url: process.env.DATABASE_URL,
devDumpIgnore: ['20240101000000_seed_dev_data.sql']
})Generate Drizzle tables
import { config } from 'damian'
export default config({
driver: 'postgres',
output: {
kind: 'drizzle',
casing: 'preserve',
isoTimestamp: true,
},
url: process.env.DATABASE_URL
})