Sebuah aplikasi e-commerce memiliki fitur redeem voucher promosi. Untuk melindungi margin bisnis, setiap voucher hanya dapat digunakan 1 kali oleh setiap pengguna, dan setiap voucher memiliki kuota yang terbatas.
Anda diminta membuat logika endpoint REST API Express.js untuk:
POST /redeem
⏱️ Alokasi Waktu Live Coding (20 Menit):
- 5 Menit Pertama: Memahami aturan validasi, status code HTTP, dan skenario kegagalan.
- 15 Menit Koding: Mengimplementasikan pengecekan in-memory dan status code 200/400/404.
{
"userId": 1,
"voucherCode": "PROMO50"
}
{
"message": "Voucher redeemed successfully"
}
const vouchers = [
{ code: "PROMO50", quota: 5 },
{ code: "WELCOME", quota: 10 }
];
const redeemedVouchers = [];
userId atau voucherCode tidak diisi di request body, kembalikan HTTP 400 dengan pesan error.voucherCode tidak ditemukan di array vouchers, kembalikan HTTP 404 dengan pesan "Voucher tidak ditemukan".HTTP 400 dengan pesan "Anda sudah pernah mengklaim voucher ini".quota <= 0). Kembalikan HTTP 400 dengan pesan "Kuota voucher sudah habis".voucher.quota -= 1).{ userId, voucherCode } ke dalam array redeemedVouchers.Penanganan Race Condition di PostgreSQL Jelaskan bagaimana cara mencegah race condition (overselling kuota saat concurrent requests) menggunakan
SELECT FOR UPDATEatauAtomic UPDATE query.