import { sql } from "drizzle-orm";
import { appDb } from "./index";

/**
 * Prod volume'ündeki app.db'ye sonradan eklenen tabloları güvenceye alır.
 *
 * Projede drizzle migration akışı yok: şema lokalde `pnpm db:push` ile
 * uygulanıp data/app.db seed olarak taşınıyor; ama docker-entrypoint.sh
 * app.db'yi yalnızca volume BOŞKEN kopyalar — mevcut prod volume'üne yeni
 * tablolar başka türlü gelmez. Burası sunucu açılışında (instrumentation)
 * bir kez koşar; yalnızca additive DDL içerir, idempotenttir.
 *
 * NOT: schema.ts'e tablo/kolon eklendiğinde buradaki DDL de güncellenmeli.
 */
export async function semayiGuvenceyeAl(): Promise<void> {
  await appDb.run(sql`
    CREATE TABLE IF NOT EXISTS tadimlik_havuzu (
      id TEXT PRIMARY KEY,
      kova_slug TEXT NOT NULL,
      tur TEXT NOT NULL,
      kategori_slug TEXT NOT NULL,
      program_id TEXT NOT NULL,
      dilim TEXT NOT NULL,
      gerekce TEXT NOT NULL,
      risk_notu TEXT NOT NULL,
      trend_ozeti TEXT NOT NULL,
      program TEXT NOT NULL,
      ornek_sira INTEGER NOT NULL,
      uretim_at INTEGER NOT NULL
    )
  `);
  await appDb.run(
    sql`CREATE UNIQUE INDEX IF NOT EXISTS tadimlik_anahtar ON tadimlik_havuzu (kova_slug, tur, kategori_slug)`,
  );
  await appDb.run(sql`
    CREATE TABLE IF NOT EXISTS saved_lists (
      id TEXT PRIMARY KEY,
      user_id TEXT NOT NULL UNIQUE REFERENCES user(id),
      items TEXT NOT NULL,
      profil TEXT,
      created_at INTEGER NOT NULL,
      updated_at INTEGER NOT NULL
    )
  `);
}
