import { logApiError } from "@/lib/api/security";
import { NextResponse } from "next/server";
import { createRouteClient } from "@/lib/supabase/route";
import { getWorkspaceMemory, saveWorkspaceMemory } from "@/lib/ai/workspace-memory";

export async function GET(req: Request) {
  try {
    const supabase = await createRouteClient();
    const {
      data: { user },
    } = await supabase.auth.getUser();

    if (!user) {
      return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
    }

    const { searchParams } = new URL(req.url);
    const teamId = searchParams.get("teamId");
    const record = await getWorkspaceMemory(user.id, {
      activeTeamId: teamId || null,
    });

    return NextResponse.json({
      memory: record?.memory || "",
      source: record?.source || null,
      updatedAt: record?.updated_at || null,
      teamId: record?.team_id || null,
    });
  } catch (error) {
    logApiError("AI memory GET error:", error);
    return NextResponse.json(
      { error: "Could not load workspace memory." },
      { status: 500 }
    );
  }
}

export async function POST(req: Request) {
  try {
    const supabase = await createRouteClient();
    const {
      data: { user },
    } = await supabase.auth.getUser();

    if (!user) {
      return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
    }

    const body = await req.json();
    const memory = typeof body.memory === "string" ? body.memory : "";
    const teamId = typeof body.teamId === "string" ? body.teamId : null;
    const source = typeof body.source === "string" ? body.source : "manual";

    const record = await saveWorkspaceMemory({
      userId: user.id,
      memory,
      source,
      context: { activeTeamId: teamId },
    });

    return NextResponse.json({
      memory: record?.memory || "",
      source: record?.source || null,
      updatedAt: record?.updated_at || null,
      teamId: record?.team_id || null,
    });
  } catch (error) {
    logApiError("AI memory POST error:", error);
    return NextResponse.json(
      { error: "Could not save workspace memory." },
      { status: 500 }
    );
  }
}
