add:order notes crud

This commit is contained in:
derrick
2026-09-24 21:07:19 +09:00
parent 2e2694354d
commit 97438aaa56
5 changed files with 85 additions and 2 deletions
+42 -1
View File
@@ -1,6 +1,6 @@
import type { DatabaseContext } from "../db/database";
import { canEditOrderItems } from "./order-status";
import { appendAuditEvent, findOrderDetail, findOrderItemRecord, updateOrderItemQuantity, updateOrderTimestamp } from "./order-repository";
import { appendAuditEvent, findOrderDetail, findOrderItemRecord, updateOrderItemQuantity, updateOrderNotes as saveOrderNotes, updateOrderTimestamp } from "./order-repository";
export async function changeOrderItemQuantity(
context: DatabaseContext,
@@ -47,3 +47,44 @@ export async function changeOrderItemQuantity(
order: await findOrderDetail(context, input.orderId)
} as const;
}
export async function updateOrderNotes(
context: DatabaseContext,
input: {
orderId: string;
notes: string;
actor: string;
}
) {
const order = await findOrderDetail(context, input.orderId);
if (!order) {
return { statusCode: 404, message: "Order not found." } as const;
}
const notes = input.notes.trim();
if (!notes) {
return { statusCode: 400, message: "Notes cannot be empty." } as const;
}
if (notes.length > 1000) {
return { statusCode: 400, message: "Notes must be 1000 characters or fewer." } as const;
}
const updatedAt = new Date().toISOString();
await saveOrderNotes(context, input.orderId, notes);
await updateOrderTimestamp(context, input.orderId, updatedAt);
await appendAuditEvent(context, {
orderId: input.orderId,
actor: input.actor,
type: "order.notes_updated",
message: "Updated internal order notes.",
createdAt: updatedAt
});
return {
statusCode: 200,
order: await findOrderDetail(context, input.orderId)
} as const;
}