import { accountPayablePermissions, createContext, DomainError, ensurePermission, } from "@tailor-platform/erp-kit/app"; import { createResolver, t } from "@tailor-platform/sdk"; import { getDB } from "@/generated/kysely-tailordb"; export default createResolver({ name: "deleteAccountPayableDocumentAttachment", operation: "mutation", input: { id: t.string().description("Attachment ID"), }, body: async (context) => { const caller = createContext(context); if (!caller.actorId) throw new DomainError("Authentication is required"); try { ensurePermission( { ...caller, actorId: caller.actorId, permissions: caller.permissions ?? [] }, accountPayablePermissions.accountPayableDocument.updateAccountPayableDocument, ); } catch { throw new DomainError("You do not have permission to modify invoice attachments"); } const db = getDB("main-db"); await db .deleteFrom("AccountPayableDocumentAttachment") .where("id", "=", context.input.id) .execute(); return { id: context.input.id }; }, output: t.object({ id: t.uuid().description("Deleted attachment ID") }), });