From 76fed578ff1b744174c4aee2f269a771c60f21cd Mon Sep 17 00:00:00 2001 From: Alexey Date: Thu, 9 Oct 2025 20:26:25 +0300 Subject: [PATCH] create fully functional get method --- com/Unit/Get.lua | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/com/Unit/Get.lua b/com/Unit/Get.lua index e69de29..898c331 100644 --- a/com/Unit/Get.lua +++ b/com/Unit/Get.lua @@ -0,0 +1,54 @@ +-- File com/Unit/Get.lua +-- +-- Created at 2025-09-25 20:04 +-- +-- 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 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({"by", "value"}, params) +if not ok then + close_db() + session.response.send_error(-32602, "Missing params", mp) +end + +if not (params.by == "email" or params.by == "username" or params.by == "user_id") then + close_db() + session.response.send_error(-32602, "Invalid 'by' param") +end + +local unit, err = db:query_row( + "SELECT user_id, username, email, created_at, updated_at, deleted_at, entry_status FROM units WHERE "..params.by.." = ? AND deleted_at IS NULL LIMIT 1", + { + params.value + } +) + +if err then + close_db() + log.error("DB query error: " .. tostring(err)) + session.response.send_error("Database query failed") +end + +if not unit then + close_db() + session.response.send_error(-32102, "Unit is not exists") +end + +close_db() +session.response.send(unit) \ No newline at end of file