import { drizzle } from "drizzle-orm/better-sqlite3";
import Database from "better-sqlite3";
import * as schema from "@server/db/schema";
import { __DIRNAME, APP_PATH } from "@server/config";
import path from "path";
import fs from "fs";
import logger from "@server/logger";
import { migrate } from "drizzle-orm/better-sqlite3/migrator";

const location = path.join(APP_PATH, "db", "db.sqlite");

let dbExists = true;
if (!fs.existsSync(location)) {
    dbExists = false;
}

const sqlite = new Database(location);
export const db = drizzle(sqlite, { schema });

if (!dbExists && process.env.ENVIRONMENT === "prod") {
    logger.info("Running migrations...");
    try {
        migrate(db, {
            migrationsFolder: path.join(__DIRNAME, "migrations"),
        });
        logger.info("Migrations completed successfully.");
    } catch (error) {
        logger.error("Error running migrations:", error);
        process.exit(1);
    }
}

export default db;