From 89d58d047e48e3870da05ccc6d27212727438774 Mon Sep 17 00:00:00 2001 From: Angie Date: Fri, 1 Aug 2025 02:38:30 +0200 Subject: [PATCH] feat: update database, added unique for userId, so now the shop can have reports of the same date more than just from 1 user --- backend/database/init.js | 2 +- backend/routes/reports.js | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/backend/database/init.js b/backend/database/init.js index 5850b27..baae1f7 100644 --- a/backend/database/init.js +++ b/backend/database/init.js @@ -78,7 +78,7 @@ async function initDatabase() { FOREIGN KEY (storeId) REFERENCES stores (id), FOREIGN KEY (userId) REFERENCES users (id), FOREIGN KEY (verifiedBy) REFERENCES users (id), - UNIQUE(storeId, reportDate) + UNIQUE(storeId, reportDate, userId) )`); // 4. Backfill plaintext passwords for all existing users diff --git a/backend/routes/reports.js b/backend/routes/reports.js index 4863a20..c1c1ad3 100644 --- a/backend/routes/reports.js +++ b/backend/routes/reports.js @@ -66,8 +66,19 @@ router.post( finalCash, ], function (err) { - console.error("DB error:", err); - if (err) return res.status(500).json({ error: "Database error" }); + if (err) { + if ( + err.message && + err.message.toLowerCase().includes("unique constraint failed") + ) { + return res.status(409).json({ + error: + "Отчет за этот магазин и дату уже был отправлен этим пользователем.", + }); + } + console.error("DB error:", err); + return res.status(500).json({ error: "Database error" }); + } res.status(201).json({ id: this.lastID }); } );