feat : update
CI / Verify (push) Successful in 1m16s
CI / Build immutable images and deploy (push) Successful in 1m58s

This commit is contained in:
2026-09-05 22:36:31 +07:00 Unverified
parent 66238795bf
commit 2de07c4917
12 changed files with 637 additions and 146 deletions
+62
View File
@@ -21,13 +21,17 @@ import { requireAdmin } from "@/lib/auth/server";
import { builtInTemplates } from "@/lib/templates";
import { persistTemplateApplication } from "@/lib/templates/persist";
import {
createExtraSection,
createGuide,
deleteExtraSection,
GuideVersionConflictError,
permanentlyDeleteGuide,
reorderExtraSections,
restoreGuide,
runCatalogSync,
saveArtifacts,
saveConstellations,
saveExtraSection,
saveExtraSections,
saveTeams,
setGuideVisibility,
@@ -274,6 +278,64 @@ export async function saveExtraSectionList(guideId: string, input: unknown) {
return result;
}
export async function createGuideExtra(guideId: string, input: unknown) {
await requireAdmin();
try {
const section = await createExtraSection(z.string().uuid().parse(guideId), input);
updateTag(pageCacheTag(guideId));
return {
status: "saved" as const,
version: section.version,
section: { id: section.id, slug: section.slug, title: section.title },
};
} catch (cause) {
return {
status: "error" as const,
message: cause instanceof z.ZodError
? cause.issues.map((issue) => issue.message).join(" • ")
: cause instanceof Error
? cause.message
: "สร้าง Extra section ไม่สำเร็จ",
};
}
}
export async function saveGuideExtra(
guideId: string,
sectionId: string,
input: unknown,
) {
await requireAdmin();
const parsedGuideId = z.string().uuid().parse(guideId);
const parsedSectionId = z.string().uuid().parse(sectionId);
const result = await runGuideAction(() =>
saveExtraSection(parsedGuideId, parsedSectionId, input),
);
if (result.status === "saved") updateTag(pageCacheTag(guideId));
return result;
}
export async function deleteGuideExtra(guideId: string, sectionId: string) {
await requireAdmin();
const result = await runGuideAction(() =>
deleteExtraSection(
z.string().uuid().parse(guideId),
z.string().uuid().parse(sectionId),
),
);
if (result.status === "saved") updateTag(pageCacheTag(guideId));
return result;
}
export async function reorderGuideExtras(guideId: string, input: unknown) {
await requireAdmin();
const result = await runGuideAction(() =>
reorderExtraSections(z.string().uuid().parse(guideId), input),
);
if (result.status === "saved") updateTag(pageCacheTag(guideId));
return result;
}
export async function moveGuideToTrash(guideId: string) {
await requireAdmin();
return runGuideAction(() => trashGuide(guideId));