⚙️ 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
| Handler | Pipeline role | Inputs / context | Result / behavior / errors | Used by routes |
|---|---|---|---|---|
createOrder | Handler | requestBody, db.orders | Writes base entity; 400 for empty or failed insert, 500 for database failure. | createOrderRoute |
updateOrder | Handler | Path/context order ID, requestBody, db.orders | Writes base update; 400, 404, or 500. | updateOrderRoute |
getOrderById | Handler | Path/context order ID, db.orders | Writes orderGroup; 400, 404, or 500. | createOrderRoute, getOrderRoute, updateOrderRoute |
findOrders | Handler | requestQuery, db.orders | Writes orderGroups; 500 on query failure. | findOrdersRoute |
deleteOrder | Handler | Path/context order ID, db.orders | Writes deletion flag; 400, 404, or 500. | deleteOrderRoute |
createOrderTerminator | Terminator | context.data.orderGroup | Removes _id and returns { data, statusCode: 201 }. | createOrderRoute |
normalizeOrderTerminator | Terminator | context.data.orderGroup | Removes _id and returns the order group; absent group is 404. | getOrderRoute, updateOrderRoute |
normalizeOrdersListTerminator | Terminator | context.data.orderGroups | Removes _id from every order group; preserves paginated metadata. | findOrdersRoute |
deleteOrderTerminator | Terminator | context.data.orderGroupDeleted | Returns { 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
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
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.