31 lines
969 B
TypeScript
31 lines
969 B
TypeScript
import Database from 'better-sqlite3';
|
|
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
|
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
|
|
import * as schema from './schema.js';
|
|
import path from 'node:path';
|
|
import fs from 'node:fs';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
|
const dbPath = process.env.DATABASE_PATH || './ka-note.db';
|
|
|
|
// Ensure parent directory exists
|
|
fs.mkdirSync(path.dirname(dbPath), { recursive: true });
|
|
|
|
console.log('[db] Opening database at:', dbPath);
|
|
const sqlite = new Database(dbPath);
|
|
console.log('[db] Database opened successfully');
|
|
|
|
sqlite.pragma('journal_mode = WAL');
|
|
sqlite.pragma('foreign_keys = ON');
|
|
|
|
export const db = drizzle(sqlite, { schema });
|
|
export { sqlite };
|
|
|
|
// Run migrations on startup
|
|
const migrationsFolder = path.resolve(__dirname, '../../drizzle');
|
|
migrate(db, { migrationsFolder });
|
|
|
|
console.log(`Database connected: ${dbPath}`);
|