import { randomUUID } from 'node:crypto' import { siteSettings } from '@/lib/services/site-settings' export interface CloneSource { id: string name: string furnidataUrl: string nitroBaseUrl: string iconBaseUrl: string } const KEY = 'clone_sources' export async function listSources(): Promise { const raw = (await siteSettings.get(KEY, '[]')) ?? '[]' try { const arr = JSON.parse(raw) return Array.isArray(arr) ? arr : [] } catch { return [] } } export async function upsertSource( src: Omit & { id?: string }, ): Promise { const sources = await listSources() const entry: CloneSource = { id: src.id || randomUUID(), name: src.name.trim(), furnidataUrl: src.furnidataUrl.trim(), nitroBaseUrl: src.nitroBaseUrl.trim().replace(/\/+$/, ''), iconBaseUrl: src.iconBaseUrl.trim().replace(/\/+$/, ''), } const idx = sources.findIndex((s) => s.id === entry.id) if (idx >= 0) sources[idx] = entry else sources.push(entry) await siteSettings.update(KEY, JSON.stringify(sources)) return entry } export async function deleteSource(id: string): Promise { const sources = (await listSources()).filter((s) => s.id !== id) await siteSettings.update(KEY, JSON.stringify(sources)) } export async function getSource(id: string): Promise { return (await listSources()).find((s) => s.id === id) ?? null }