Я пишу некоторые запросы knex, чтобы проверить, является ли предоставленный код, иначе известный как voucher
, допустимым при 4 ограничениях.
- Ваучер существует
- Срок действия ваучера не истек
- Ваучер на правильное мероприятие
- Осталось достаточно ваучеров
Мой текущий код (несмотря на то, что он не закончен) следующий:
export default () => (async (req, res) => {
const { eventId, orderId, voucher, left } = req.params;
const [{ code }, { eventId }, { expiryDate }, {quantity}] = await Promise.all([
knex('vouchers')
.where({
code: voucher
})
.first(),
knex('vouchers')
.where({
event_id
})
.first(),
knex('mv_vouchers')
.where({
voucher_id: code,
// 'left', > , 0,
})
.first(),
]);
if (code && eventId && expiryDate && quantity) {
await knex.insert([{order_id: orderId}, {voucher_id: voucher}], 'id').into('order_vouchers');
res.status(202).end();
} else{
res.status(404).end();
}
});
Секция, о которой я беспокоюсь, - это секционный код. Я видел, как кто-то использовал это онлайн где-то, но больше не могу найти его в стеке потока. По моему предположению, все константы code
, eventId
и т. Д. Должны возвращать true или false и затем иметь возможность использоваться в моей логике if. Это правильно или совершенно неправильно?