20 lines
700 B
TypeScript
20 lines
700 B
TypeScript
import Database from 'better-sqlite3';
|
|
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
|
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
|
|
import { mkdirSync } from 'node:fs';
|
|
import { dirname } from 'node:path';
|
|
import { env } from '$env/dynamic/private';
|
|
import * as schema from './schema';
|
|
|
|
const dbPath = env.DATABASE_PATH ?? './data/app.db';
|
|
mkdirSync(dirname(dbPath), { recursive: true });
|
|
|
|
const sqlite = new Database(dbPath);
|
|
sqlite.pragma('journal_mode = WAL');
|
|
sqlite.pragma('foreign_keys = ON');
|
|
|
|
export const db = drizzle(sqlite, { schema });
|
|
|
|
// Apply any pending migrations on startup so a fresh deploy self-initialises.
|
|
migrate(db, { migrationsFolder: './drizzle' });
|