"use server"

import { setSetting, deleteSetting } from "@/lib/settings"
import { ANTHROPIC_KEY_SETTING } from "@/lib/anthropic"
import { AICOS_KEY_SETTING, AICOS_BASE_URL_SETTING, AICOS_MODEL_SETTING } from "@/lib/aicos"
import { revalidatePath } from "next/cache"

export type SettingsState = { error?: string; success?: boolean }

export async function saveAnthropicKey(
  _prev: SettingsState,
  formData: FormData
): Promise<SettingsState> {
  const key = String(formData.get("apiKey") ?? "").trim()
  if (!key) return { error: "Clé requise" }
  if (!key.startsWith("sk-ant-")) {
    return { error: "Une clé API Anthropic commence par « sk-ant- »" }
  }
  await setSetting(ANTHROPIC_KEY_SETTING, key)
  revalidatePath("/admin/settings")
  return { success: true }
}

export async function clearAnthropicKey() {
  await deleteSetting(ANTHROPIC_KEY_SETTING)
  revalidatePath("/admin/settings")
}

export async function saveAicosSettings(
  _prev: SettingsState,
  formData: FormData
): Promise<SettingsState> {
  const key = String(formData.get("apiKey") ?? "").trim()
  const baseUrl = String(formData.get("baseUrl") ?? "").trim()
  const model = String(formData.get("model") ?? "").trim()

  if (!key && !baseUrl && !model) return { error: "Au moins un champ est requis" }
  if (key && !key.startsWith("aicos_tp_")) {
    return { error: "Une clé AICOS commence par « aicos_tp_ »" }
  }
  if (baseUrl && !/^https?:\/\//.test(baseUrl)) {
    return { error: "L'adresse AICOS doit commencer par http:// ou https://" }
  }

  if (key) await setSetting(AICOS_KEY_SETTING, key)
  if (baseUrl) await setSetting(AICOS_BASE_URL_SETTING, baseUrl.replace(/\/+$/, ""))
  if (model) await setSetting(AICOS_MODEL_SETTING, model)

  revalidatePath("/admin/settings")
  return { success: true }
}

export async function clearAicosSettings() {
  await deleteSetting(AICOS_KEY_SETTING)
  await deleteSetting(AICOS_BASE_URL_SETTING)
  await deleteSetting(AICOS_MODEL_SETTING)
  revalidatePath("/admin/settings")
}
