Skip to main content
Version: 🚧 Canary

⚙️ Order handlers

Order handlers are route-pipeline functions, not Express middleware. They read RouteHandlerPayload values from params and context, merge successful values into context.data, or terminate a successful Result with an HTTP response descriptor.

Inventory

HandlerPipeline roleInputs / contextResult / behavior / errorsUsed by routes
createOrderHandlerrequestBody, db.ordersWrites base entity; 400 for empty or failed insert, 500 for database failure.createOrderRoute
updateOrderHandlerPath/context order ID, requestBody, db.ordersWrites base update; 400, 404, or 500.updateOrderRoute
getOrderByIdHandlerPath/context order ID, db.ordersWrites orderGroup; 400, 404, or 500.createOrderRoute, getOrderRoute, updateOrderRoute
findOrdersHandlerrequestQuery, db.ordersWrites orderGroups; 500 on query failure.findOrdersRoute
deleteOrderHandlerPath/context order ID, db.ordersWrites deletion flag; 400, 404, or 500.deleteOrderRoute
createOrderTerminatorTerminatorcontext.data.orderGroupRemoves _id and returns { data, statusCode: 201 }.createOrderRoute
normalizeOrderTerminatorTerminatorcontext.data.orderGroupRemoves _id and returns the order group; absent group is 404.getOrderRoute, updateOrderRoute
normalizeOrdersListTerminatorTerminatorcontext.data.orderGroupsRemoves _id from every order group; preserves paginated metadata.findOrdersRoute
deleteOrderTerminatorTerminatorcontext.data.orderGroupDeletedReturns { statusCode: 204 }; absent flag is 500.deleteOrderRoute

Details

createOrder

Implementation

Requires nonempty params.requestBody, calls createBaseEntity, inserts into context.db.orders, and stores orderId. Errors are 400 Request body is required, 400 Failed to create order, or 500 Unknown error creating order. Used by create.

updateOrder

Implementation

Uses context.data.orderId before path orderId, requires a nonempty body, and calls updateOne. It stores the ID on success; errors are 400 missing ID/body or failed modification, 404 Order not found, and 500 Failed to update order. Used by update.

getOrderById

Implementation

Uses data/path order ID, finds by public id, and stores orderGroup; errors are 400 missing ID, 404 Order not found, or 500 Failed to get order. Used by create, get, and update.

findOrders

Implementation

Uses params.requestQuery unchanged as the Mongo filter, calls find(...).toArray(), and stores orderGroups; failure is 500 Failed to find orders. Used by find.

deleteOrder

Implementation

Uses data/path order ID, deletes by public id, and stores orderGroupDeleted: true; errors are 400 missing ID, 404 zero deletions, and 500 Failed to delete order. Used by delete.

createOrderTerminator

Implementation

Throws an error result; otherwise requires orderGroup, removes _id, and returns { data: orderGroup, statusCode: 201 }. Used by create.

normalizeOrderTerminator

Implementation

Throws an error result; otherwise requires orderGroup, removes _id, and returns the document. Used by get and update.

normalizeOrdersListTerminator

Implementation

Accepts an array or paginated { data, metadata }, removes each _id, preserves pagination metadata, and throws 500 Unknown error normalizing orders list for another shape. Used by find.

deleteOrderTerminator

Implementation

Throws an error result, requires orderGroupDeleted, and returns { statusCode: 204 }; a missing flag is 500 Unknown error deleting order. Used by delete.