From 65af07fffa7ee3a2fe25e727758bf086f11b69e0 Mon Sep 17 00:00:00 2001 From: Alexey Date: Thu, 9 Oct 2025 20:00:40 +0300 Subject: [PATCH] add delete method --- com/Unit/Delete.lua | 78 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/com/Unit/Delete.lua b/com/Unit/Delete.lua index e69de29..0de17f0 100644 --- a/com/Unit/Delete.lua +++ b/com/Unit/Delete.lua @@ -0,0 +1,78 @@ +-- File com/Unit/Delete.lua +-- +-- Created at 2025-05-10 19:18 +-- +-- Updated at - + +local log = require("internal.log") +local db = require("internal.database.sqlite").connect("db/unit.db", {log = true}) +local session = require("internal.session") +local crypt = require("internal.crypt.bcrypt") +local sha256 = require("internal.crypt.sha256") + +local common = require("com/Unit/_common") + +-- Preparing for first db query +local function close_db() + if db then + log.debug("Closing DB connection") + db:close() + db = nil + end +end + +local params = session.request.params.get() + +local ok, mp = common.CheckMissingElement({"user_id"}, params) +if not ok then + close_db() + session.response.send_error(-32602, "Missing params", mp) +end + +local existing, err = db:query([[ + SELECT 1 + FROM units + WHERE user_id = ? + AND entry_status != 'deleted' + AND deleted_at IS NULL + LIMIT 1 +]], { + params.user_id +}) + +if err ~= nil then + log.error("Email check failed: "..tostring(err)) + close_db() + session.response.send_error() +end + +if existing and #existing == 0 then + close_db() + session.response.send_error(-32102, "Unit is not exists") +end + +local ctx, err = db:exec( + [[ + UPDATE units + SET entry_status = 'deleted', + deleted_at = CURRENT_TIMESTAMP + WHERE user_id = ? AND deleted_at is NULL + ]], + { params.user_id } +) + +if err ~= nil then + log.error("Soft delete failed: " .. tostring(err)) + close_db() + session.response.send_error("Failed to delete unit") +end + +local res, err = ctx:wait() +if err ~= nil then + log.error("Soft delete confirmation failed: " .. tostring(err)) + close_db() + session.response.send_error("Failed to delete unit") +end + +close_db() +session.response.send({message = "Unit deleted successfully", unit_id = params.user_id}) \ No newline at end of file