Fundamentals
Quickstart
Install and run your first migration
Install
npm install -D damian && npm install @damiandb/pgpnpm add -D damian && pnpm add @damiandb/pgyarn add -D damian && yarn add @damiandb/pgConfigure
import { config } from "damian"
export default config({
driver: "postgres",
root: "./damian",
env: ".env",
url: process.env.DATABASE_URL
})Create migration
npx damian new create_users_tableEdit the file under ./damian/.migrations/:
-- migrate:up
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
)
-- migrate:down
DROP TABLE usersApply migration
npx damian migrateGenerate types
npx damian generateProduces tables.ts, typings.ts, and db.sql.
Setup path alias
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"tables": ["./damian/.generated/tables.ts"]
}
}
}{
"imports": {
"#tables": "./damian/.generated/tables.js"
}
}Create database client
import { createDb, createSQL } from '@damiandb/pg'
export const db = await createDb({
connectionString: process.env.DATABASE_URL as string
})
export const sql = createSQL()Write a query
import { db, sql } from './db'
import { UsersTable } from 'tables'
const { rows } = await db.query(
sql(UsersTable)`SELECT * FROM ${UsersTable} WHERE ${UsersTable.name} = ${"Alice"}`
)
const user = rows[0]Update gitignore
./damian/.generated