import { NextResponse } from "next/server";
;
import { prisma } from '@/lib/prisma';

export async function POST(request: Request) {
  try {
    const {
      finalPrompt,
      commands,
      companies,
      introText,
      strategiesText,
      rulesText,
      templateText,
      welcomeText,
      skillPrompt,
      enthusiasmPrompt,
      customerPrompt,
      companyRankingPrompt,
      aiModel
    } = await request.json();

    // Find if any record exists
    const existingLiteral = await prisma.literals.findFirst();

    let literal;
    
    // Check if commands and companies are already objects or need parsing
    const parsedCommands = typeof commands === 'string' ? JSON.parse(commands) : commands;
    const parsedCompanies = typeof companies === 'string' ? JSON.parse(companies) : companies;

    if (existingLiteral) {
      console.log("🚀 Updating existing record");
      literal = await prisma.literals.update({
        where: { id: existingLiteral.id },
        data: {
          finalPrompt,
          commands: parsedCommands,
          companies: parsedCompanies,
          introText,
          strategiesText,
          rulesText,
          templateText,
          welcomeText,
          skillPrompt,
          enthusiasmPrompt,
          customerPrompt,
          companyRankingPrompt,
          aiModel
        },
      });
    } else {
      // Create new record if none exists
      console.log("🚀 Creating new record");
      literal = await prisma.literals.create({
        data: {
          finalPrompt,
          commands: parsedCommands,
          companies: parsedCompanies,
          introText,
          strategiesText,
          rulesText,
          templateText,
          welcomeText,
          skillPrompt,
          enthusiasmPrompt,
          customerPrompt,
          companyRankingPrompt,
          aiModel
        },
      });
    }

    return NextResponse.json({ success: true, literal }, { status: 201 });
  } catch (error) {
    console.error("Error saving literals:", error);
    return NextResponse.json(
      { success: false, error: "Failed to save literals" },
      { status: 500 }
    );
  }
}

export async function GET() {
  try {
    const latest = await prisma.literals.findFirst({
      orderBy: {
        createdAt: "desc",
      },
    });
    return NextResponse.json({ success: true, literal: latest });
  } catch (error) {
    console.error("Error fetching latest literal:", error);
    return NextResponse.json(
      { success: false, error: "Failed to fetch latest literal" },
      { status: 500 }
    );
  }
}