feat(catalog): persist idempotent bulk operations and retryable deliveries
This commit is contained in:
1 parent
76e46d295c
commit
13665e0c3c
53 files changed
+1316
-76
No files matched your search
@@ -0,0 +1,35 @@
|
||||
"use server";
|
||||
import { revalidatePath } from "next/cache";
|
||||
import { requirePermission } from "@/lib/admin/guard";
|
||||
import { logger } from "@/lib/logger";
|
||||
import { PERMS } from "@/lib/permission-slugs";
|
||||
import { logAudit } from "@/lib/services/audit";
|
||||
import { retryEffect } from "./server";
|
||||
export async function retryDelivery(id: string) {
|
||||
const staff = await requirePermission(PERMS.DEVOPS_EDIT);
|
||||
try {
|
||||
await retryEffect(id);
|
||||
} catch {
|
||||
return {
|
||||
ok: false as const,
|
||||
error: "Delivery could not be retried. Refresh and try again.",
|
||||
};
|
||||
}
|
||||
await logAudit({
|
||||
userId: staff.id,
|
||||
action: "operation_delivery_retry",
|
||||
target: "operations",
|
||||
after: { deliveryId: id },
|
||||
}).catch((error) =>
|
||||
logger.error("Delivery retried; audit failed", {
|
||||
module: "operations",
|
||||
error,
|
||||
}),
|
||||
);
|
||||
try {
|
||||
revalidatePath("/admin/devops/deliveries");
|
||||
} catch {
|
||||
/* Delivery retry remains saved. */
|
||||
}
|
||||
return { ok: true as const, data: {} };
|
||||
}
|
||||
Reference in new issue
Block a user