30 lines
898 B
TypeScript
30 lines
898 B
TypeScript
"use server";
|
|
|
|
import { revalidatePath } from "next/cache";
|
|
import { z } from "zod";
|
|
import { executeLegacyEconomyMutation } from "@/features/housekeeping/domains/economy/services/mutations";
|
|
import { PERMS } from "@/lib/permissions";
|
|
import { adminAction } from "@/lib/safe-action";
|
|
import { actionOk } from "@/lib/safe-action-shared";
|
|
|
|
const updateSchema = z.object({
|
|
id: z.coerce.number().int().positive(),
|
|
fields: z.record(z.string(), z.unknown()),
|
|
});
|
|
|
|
export const updateItemsBase = adminAction(
|
|
{ permission: PERMS.CATALOG_EDIT, schema: updateSchema },
|
|
async (context) => {
|
|
const { id, fields } = context.data;
|
|
await executeLegacyEconomyMutation(
|
|
{ id: Number(context.session.user.id) },
|
|
"items-base.update",
|
|
{ id, fields },
|
|
);
|
|
revalidatePath("/admin/items");
|
|
revalidatePath(`/admin/items/${id}`);
|
|
revalidatePath("/admin/catalog");
|
|
return actionOk({ id });
|
|
},
|
|
);
|