import { NextRequest, NextResponse } from "next/server";
import { getDb } from "@/lib/db";
import { getRepositorySourcePath, readWikiManifest, ensureWikiFresh } from "@optage/sdk";
import { PgWikiCheckpointStore } from "@/lib/wiki-checkpoint";
import "@/lib/sdk-init";

export async function GET(request: NextRequest) {
  const repositoryId = request.nextUrl.searchParams.get("repositoryId");
  if (!repositoryId) {
    return NextResponse.json({ error: "repositoryId required" }, { status: 400 });
  }

  const db = await getDb();

  const [sessionsResult, sourcePath] = await Promise.all([
    db.query(
      `SELECT id, repository_id, thread_id, title, created_at, updated_at
       FROM chat_sessions
       WHERE repository_id = $1
       ORDER BY updated_at DESC
       LIMIT 50`,
      [repositoryId],
    ),
    getRepositorySourcePath(repositoryId),
  ]);

  const sessions = sessionsResult.rows;

  let activeSession = null;
  if (sessions.length > 0) {
    const { rows } = await db.query(
      "SELECT * FROM chat_sessions WHERE id = $1",
      [sessions[0].id],
    );
    activeSession = rows[0] || null;
  }

  let manifest = null;
  if (sourcePath) {
    ensureWikiFresh(repositoryId, sourcePath, new PgWikiCheckpointStore(repositoryId));
    manifest = readWikiManifest(sourcePath);
  }

  return NextResponse.json({ sessions, activeSession, manifest });
}
