Payment
In the Payment logic, in the controller, we should have the route payOrder(), as usual.
@Post(':id')
payOrder(@Param() { id }: IdDto) {
return this.paymentsService.payOrder(id);
}And in the service, this is how the method would be. Note that, as we don't need a reference to the order, due to the way prisma udpates the entity, the implementation becomes a bit cleaner. Also note that we create a payment as an empty object, as its data will be generated automatically.
async payOrder(id: number) {
const { payment } = await this.prisma.order.findUniqueOrThrow({
where: { id },
include: { payment: true },
});
if (payment) {
throw new ConflictException('Order already paid');
}
return this.prisma.order.update({
where: { id },
data: {
status: OrderStatus.AWAITING_SHIPMENT,
payment: { create: {} },
},
});
}Commit - Implementing payment logic
Last updated