Ka-Note/ka-note/server/src/db/connection.ts

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}`);