Something went wrong. Try again.
I will pick a better name later.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536import fs from "node:fs";import path from "node:path";import { Database } from "bun:sqlite";import { drizzle } from "drizzle-orm/bun-sqlite";import * as schema from "./schema";
const globalForDb = globalThis as unknown as { __laterSqlite?: Database; __laterDb?: ReturnType<typeof drizzle<typeof schema>>;};
export function sqlitePath() { const configured = process.env.DATABASE_URL || "file:./data/read-later.db"; if (configured === ":memory:") return configured; return configured.startsWith("file:") ? configured.slice("file:".length) : configured;}
function createSqlite() { const filename = sqlitePath(); if (filename !== ":memory:") { fs.mkdirSync(path.dirname(path.resolve(filename)), { recursive: true }); } const sqlite = new Database(filename, { create: true, readwrite: true }); sqlite.exec("PRAGMA journal_mode = WAL"); sqlite.exec("PRAGMA foreign_keys = ON"); return sqlite;}
export const sqlite = globalForDb.__laterSqlite ?? createSqlite();export const db = globalForDb.__laterDb ?? drizzle(sqlite, { schema });
if (process.env.NODE_ENV !== "production") { globalForDb.__laterSqlite = sqlite; globalForDb.__laterDb = db;}