Files
chronus/src/db/index.ts
Atridad Lahiji df82a02f41
All checks were successful
Docker Deploy / build-and-push (push) Successful in 4m3s
2.2.1 - Misc improvements and cleanup
2026-01-19 21:08:46 -07:00

42 lines
934 B
TypeScript

import { drizzle } from "drizzle-orm/libsql";
import { createClient } from "@libsql/client";
import * as schema from "./schema";
import path from "path";
import fs from "fs";
type Database = ReturnType<typeof drizzle<typeof schema>>;
let _db: Database | null = null;
function initDb(): Database {
if (!_db) {
const dataDir = process.env.DATA_DIR
? process.env.DATA_DIR
: import.meta.env.DATA_DIR;
if (!dataDir) {
throw new Error("DATA_DIR environment variable is not set");
}
if (!fs.existsSync(dataDir)) {
fs.mkdirSync(dataDir, { recursive: true });
}
const url = `file:${path.join(dataDir, "chronus.db")}`;
const client = createClient({
url,
});
_db = drizzle(client, { schema });
}
return _db;
}
export const db = new Proxy({} as Database, {
get(_target, prop) {
const database = initDb();
return database[prop as keyof Database];
},
});