This commit is contained in:
1 parent
8efd032cc6
commit
df38dccbf1
735 files changed
+128321
-120870
No files matched your search
@@ -2,46 +2,48 @@ 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;
|
||||
id: string;
|
||||
name: string;
|
||||
furnidataUrl: string;
|
||||
nitroBaseUrl: string;
|
||||
iconBaseUrl: string;
|
||||
}
|
||||
|
||||
const KEY = "clone_sources";
|
||||
|
||||
export async function listSources(): Promise<CloneSource[]> {
|
||||
const raw = (await siteSettings.get(KEY, "[]")) ?? "[]";
|
||||
try {
|
||||
const arr = JSON.parse(raw);
|
||||
return Array.isArray(arr) ? arr : [];
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
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<CloneSource, "id"> & { id?: string }): Promise<CloneSource> {
|
||||
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 upsertSource(
|
||||
src: Omit<CloneSource, "id"> & { id?: string },
|
||||
): Promise<CloneSource> {
|
||||
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<void> {
|
||||
const sources = (await listSources()).filter((s) => s.id !== id);
|
||||
await siteSettings.update(KEY, JSON.stringify(sources));
|
||||
const sources = (await listSources()).filter((s) => s.id !== id);
|
||||
await siteSettings.update(KEY, JSON.stringify(sources));
|
||||
}
|
||||
|
||||
export async function getSource(id: string): Promise<CloneSource | null> {
|
||||
return (await listSources()).find((s) => s.id === id) ?? null;
|
||||
return (await listSources()).find((s) => s.id === id) ?? null;
|
||||
}
|
||||
Reference in new issue
Block a user