feat(commissions): add editable assignment and artwork linkage

This commit is contained in:
2026-02-12 22:59:53 +01:00
parent 7a82934fe7
commit 741883465c
7 changed files with 235 additions and 9 deletions

View File

@@ -23,7 +23,21 @@ export const createCommissionInputSchema = z.object({
description: z.string().max(4000).nullable().optional(),
status: commissionStatusSchema.default("new"),
customerId: z.string().uuid().nullable().optional(),
assignedUserId: z.string().max(120).nullable().optional(),
assignedUserId: z.string().uuid().nullable().optional(),
linkedArtworkIds: z.array(z.string().uuid()).default([]),
budgetMin: z.number().nonnegative().nullable().optional(),
budgetMax: z.number().nonnegative().nullable().optional(),
dueAt: z.date().nullable().optional(),
})
export const updateCommissionInputSchema = z.object({
id: z.string().uuid(),
title: z.string().min(1).max(180).optional(),
description: z.string().max(4000).nullable().optional(),
status: commissionStatusSchema.optional(),
customerId: z.string().uuid().nullable().optional(),
assignedUserId: z.string().uuid().nullable().optional(),
linkedArtworkIds: z.array(z.string().uuid()).optional(),
budgetMin: z.number().nonnegative().nullable().optional(),
budgetMax: z.number().nonnegative().nullable().optional(),
dueAt: z.date().nullable().optional(),
@@ -57,6 +71,7 @@ export const updateCommissionStatusInputSchema = z.object({
export type CommissionStatus = z.infer<typeof commissionStatusSchema>
export type CreateCustomerInput = z.infer<typeof createCustomerInputSchema>
export type CreateCommissionInput = z.infer<typeof createCommissionInputSchema>
export type UpdateCommissionInput = z.infer<typeof updateCommissionInputSchema>
export type CreatePublicCommissionRequestInput = z.infer<
typeof createPublicCommissionRequestInputSchema
>

View File

@@ -0,0 +1,2 @@
ALTER TABLE "Commission"
ADD COLUMN "linkedArtworkIds" TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[];

View File

@@ -386,6 +386,7 @@ model Commission {
status String
customerId String?
assignedUserId String?
linkedArtworkIds String[] @default([])
budgetMin Float?
budgetMax Float?
dueAt DateTime?

View File

@@ -3,6 +3,7 @@ import {
createCommissionInputSchema,
createCustomerInputSchema,
createPublicCommissionRequestInputSchema,
updateCommissionInputSchema,
updateCommissionStatusInputSchema,
} from "@cms/content"
@@ -57,6 +58,16 @@ export async function createCommission(input: unknown) {
})
}
export async function updateCommission(input: unknown) {
const payload = updateCommissionInputSchema.parse(input)
const { id, ...data } = payload
return db.commission.update({
where: { id },
data,
})
}
export async function createPublicCommissionRequest(input: unknown) {
const payload = createPublicCommissionRequestInputSchema.parse(input)
const normalizedEmail = payload.customerEmail.trim().toLowerCase()

View File

@@ -14,6 +14,7 @@ export {
createPublicCommissionRequest,
listCommissions,
listCustomers,
updateCommission,
updateCommissionStatus,
} from "./commissions"
export {