import { createClient, type Client } from "@libsql/client";
import { drizzle } from "drizzle-orm/libsql";
import * as schema from "./schema";

// Lokal: file:./data/app.db — deploy: libsql://... + auth token.
// db.ts'teki better-sqlite3 bağlantısı gibi hot-reload'a karşı globalThis'te saklanır.

const globalForAppDb = globalThis as unknown as { __appDbClient?: Client };

function getClient(): Client {
  if (!globalForAppDb.__appDbClient) {
    const url = process.env.APP_DB_URL ?? "file:./data/app.db";
    globalForAppDb.__appDbClient = createClient({
      url,
      authToken: process.env.APP_DB_AUTH_TOKEN,
    });
  }
  return globalForAppDb.__appDbClient;
}

export const appDb = drizzle(getClient(), { schema });
export { schema };
