| name | nx-database |
| description | Database management with Drizzle ORM. Use when modifying schemas, running migrations, or working with database operations. |
Database Management (Drizzle ORM)
Location
Database infrastructure: libs/infra/db
libs/infra/db/
├── src/
│ ├── schema/ # Drizzle schemas
│ ├── migrations/ # SQL migrations
│ ├── scripts/seed.ts # Seeder
│ └── client.ts # Drizzle client
├── drizzle.config.ts
└── project.json
Commands
pnpm nx run infra-db:db:generate
pnpm nx run infra-db:db:migrate
pnpm nx run infra-db:db:studio
pnpm nx run infra-db:db:push
pnpm nx run infra-db:db:seed
pnpm nx run infra-db:db:drop
Schema Change Workflow
pnpm nx run infra-db:db:generate
pnpm nx run infra-db:db:migrate
Schema Conventions
import { pgTable, text, bigint, uuid, jsonb } from 'drizzle-orm/pg-core';
import { uuidv7 } from 'uuidv7';
export const users = pgTable('users', {
id: uuid('id')
.primaryKey()
.$defaultFn(() => uuidv7()),
createdAt: bigint('created_at', { mode: 'number' })
.notNull()
.$defaultFn(() => Date.now()),
metadata: jsonb('metadata').$type<Record<string, unknown>>(),
realmId: uuid('realm_id').references(() => realms.id),
});
Key Patterns
- UUIDv7: Time-ordered primary keys
- BIGINT epoch: Timestamps as milliseconds
- JSONB: Flexible metadata
- Realm-based: Multi-tenancy support
Docker Database
docker compose up -d postgres
docker compose exec postgres psql -U postgres -d qauth
Environment
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/qauth