25 lines
734 B
TypeScript
25 lines
734 B
TypeScript
import { env } from '$env/dynamic/private';
|
|
import { mkdirSync } from 'node:fs';
|
|
import { dirname } from 'node:path';
|
|
import Database from 'better-sqlite3';
|
|
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
|
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
|
|
import { sql } from 'drizzle-orm';
|
|
|
|
const databaseUrl = env.DATABASE_URL ?? './data/holodream.db';
|
|
|
|
if (databaseUrl !== ':memory:') {
|
|
mkdirSync(dirname(databaseUrl), { recursive: true });
|
|
}
|
|
|
|
const sqlite = new Database(databaseUrl);
|
|
sqlite.pragma('journal_mode = WAL');
|
|
sqlite.pragma('foreign_keys = ON');
|
|
|
|
export const db = drizzle(sqlite);
|
|
migrate(db, { migrationsFolder: './drizzle' });
|
|
|
|
export function checkDatabase(): void {
|
|
db.run(sql`select 1`);
|
|
}
|