Додане повідомлення про оновлення застосунку Оновлен Service Worker Перероблен WebSocket APІ
66 lines
2.3 KiB
JavaScript
66 lines
2.3 KiB
JavaScript
const db = require("../config/db");
|
|
|
|
function lockingStand(user, data) {
|
|
return new Promise((resolve, reject) => {
|
|
const sheepId = Number(data.sheep_id) || null;
|
|
|
|
if (!user.possibilities.can_view_stand) {
|
|
return reject(new Error("Forbidden: no rights to view stand"));
|
|
}
|
|
if ((sheepId !== user.id && sheepId !== null) && !user.possibilities.can_manager_stand) {
|
|
return reject(new Error("Forbidden: no rights to view stand"));
|
|
}
|
|
|
|
resolve({ update: "ok", id: data.id });
|
|
});
|
|
}
|
|
|
|
function unlockingStand(user, data) {
|
|
return new Promise((resolve, reject) => {
|
|
const sheepId = Number(data.sheep_id) || null;
|
|
|
|
if (!user.possibilities.can_view_stand) {
|
|
return reject(new Error("Forbidden: no rights to view stand"));
|
|
}
|
|
if ((sheepId !== user.id && sheepId !== null) && !user.possibilities.can_manager_stand) {
|
|
return reject(new Error("Forbidden: no rights to view stand"));
|
|
}
|
|
|
|
resolve({ update: "ok", id: data.id });
|
|
});
|
|
}
|
|
|
|
function updateStand(user, data) {
|
|
return new Promise((resolve, reject) => {
|
|
const sheepId = Number(data.sheep_id) || null;
|
|
|
|
if (!user.possibilities.can_view_stand) {
|
|
return reject(new Error("Forbidden: no rights to view stand"));
|
|
}
|
|
if ((sheepId !== user.id && sheepId !== null) && !user.possibilities.can_manager_stand) {
|
|
return reject(new Error("Forbidden: no rights to view stand"));
|
|
}
|
|
|
|
const sql = `
|
|
UPDATE stand_schedule
|
|
SET sheep_id = ?, updated_at = ?
|
|
WHERE id = ?`;
|
|
|
|
db.run(sql, [sheepId, Date.now(), data.id], function (err) {
|
|
if (err) return reject(err);
|
|
if (this.changes === 0) return reject(new Error("Stand not found"));
|
|
|
|
const insertSql = `
|
|
INSERT INTO stand_schedule_history
|
|
(stand_schedule_id, sheep_id, created_at)
|
|
VALUES (?, ?, ?)`;
|
|
|
|
db.run(insertSql, [Number(data.id), sheepId, Date.now()], function (err) {
|
|
if (err) return reject(err);
|
|
resolve({ update: "ok", id: data.id, historyId: this.lastID });
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
module.exports = { lockingStand, unlockingStand, updateStand }; |