Next.js 16, React 19, Monaco editor, Anthropic SDK, multi-provider AI, Wandbox Python execution, iframe HTML preview, SQLite auth + session persistence. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
19 lines
576 B
TypeScript
19 lines
576 B
TypeScript
import Database from 'better-sqlite3';
|
|
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
|
import * as schema from './schema';
|
|
|
|
type DrizzleDb = ReturnType<typeof drizzle<typeof schema>>;
|
|
const globalForDb = globalThis as unknown as { _professorDb?: DrizzleDb };
|
|
|
|
function createDb(): DrizzleDb {
|
|
const sqlite = new Database('professor.db');
|
|
sqlite.pragma('journal_mode = WAL');
|
|
return drizzle(sqlite, { schema });
|
|
}
|
|
|
|
export const db: DrizzleDb = globalForDb._professorDb ?? createDb();
|
|
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
globalForDb._professorDb = db;
|
|
}
|