fosrl.pangolin/server/db/index.ts

53 lines
1.4 KiB
TypeScript
Raw Normal View History

2024-09-27 21:39:03 -04:00
import { drizzle } from "drizzle-orm/better-sqlite3";
import Database from "better-sqlite3";
2025-03-23 17:11:48 -04:00
import * as schema from "@server/db/schemas";
import path from "path";
2024-12-25 16:40:39 -05:00
import fs from "fs/promises";
2025-01-01 21:41:31 -05:00
import { APP_PATH } from "@server/lib/consts";
import { existsSync, mkdirSync } from "fs";
2024-09-27 21:39:03 -04:00
2024-12-25 15:49:35 -05:00
export const location = path.join(APP_PATH, "db", "db.sqlite");
2024-12-25 16:40:39 -05:00
export const exists = await checkFileExists(location);
2024-10-26 23:37:25 -04:00
bootstrapVolume();
2024-10-06 11:13:50 -04:00
const sqlite = new Database(location);
2024-09-27 21:39:03 -04:00
export const db = drizzle(sqlite, { schema });
export default db;
2024-12-25 16:40:39 -05:00
async function checkFileExists(filePath: string): Promise<boolean> {
try {
await fs.access(filePath);
return true;
} catch {
return false;
}
}
function bootstrapVolume() {
const appPath = APP_PATH;
const dbDir = path.join(appPath, "db");
const logsDir = path.join(appPath, "logs");
// check if the db directory exists and create it if it doesn't
if (!existsSync(dbDir)) {
mkdirSync(dbDir, { recursive: true });
}
// check if the logs directory exists and create it if it doesn't
if (!existsSync(logsDir)) {
mkdirSync(logsDir, { recursive: true });
}
// THIS IS FOR TRAEFIK; NOT REALLY NEEDED, BUT JUST IN CASE
const traefikDir = path.join(appPath, "traefik");
// check if the traefik directory exists and create it if it doesn't
if (!existsSync(traefikDir)) {
mkdirSync(traefikDir, { recursive: true });
}
}