mirror of
https://github.com/akyaiy/GoSally-mvp.git
synced 2026-01-03 04:52:26 +00:00
optimise db exec
This commit is contained in:
@@ -37,31 +37,6 @@ end
|
|||||||
local hashPass = crypt.generate(params.password, crypt.DefaultCost)
|
local hashPass = crypt.generate(params.password, crypt.DefaultCost)
|
||||||
local unitID = string.sub(sha256.hash(session.__seed), 1, 16)
|
local unitID = string.sub(sha256.hash(session.__seed), 1, 16)
|
||||||
|
|
||||||
-- First db query: check if username or email already exists among active users
|
|
||||||
local existing, err = db:query([[
|
|
||||||
SELECT 1
|
|
||||||
FROM units
|
|
||||||
WHERE (email = ? OR username = ?)
|
|
||||||
AND entry_status != 'deleted'
|
|
||||||
AND deleted_at IS NULL
|
|
||||||
LIMIT 1
|
|
||||||
]], {
|
|
||||||
params.email,
|
|
||||||
params.username
|
|
||||||
})
|
|
||||||
|
|
||||||
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(errors.UNIT_EXISTS.code, errors.UNIT_EXISTS.message)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Second db query: insert new unit
|
|
||||||
local ctx, err = db:exec(
|
local ctx, err = db:exec(
|
||||||
"INSERT INTO units (user_id, username, email, password) VALUES (?, ?, ?, ?)",
|
"INSERT INTO units (user_id, username, email, password) VALUES (?, ?, ?, ?)",
|
||||||
{
|
{
|
||||||
@@ -71,17 +46,22 @@ local ctx, err = db:exec(
|
|||||||
hashPass,
|
hashPass,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
if err ~= nil then
|
if err ~= nil then
|
||||||
log.error("Insert failed: "..tostring(err))
|
log.error("Insert failed: "..tostring(err))
|
||||||
close_db()
|
close_db()
|
||||||
session.response.send_error(errors.DB_INSERT_FAILED.code, errors.DB_INSERT_FAILED.message)
|
session.response.send_error(errors.DB_INSERT_FAILED.code, errors.DB_INSERT_FAILED.message)
|
||||||
end
|
end
|
||||||
|
|
||||||
local res, err = ctx:wait()
|
local _, err = ctx:wait()
|
||||||
if err ~= nil then
|
if err ~= nil then
|
||||||
log.error("Insert confirmation failed: "..tostring(err))
|
|
||||||
close_db()
|
close_db()
|
||||||
session.response.send_error(errors.DB_INSERT_FAILED.code, errors.DB_INSERT_FAILED.message)
|
if tostring(err):match("UNIQUE constraint failed") then
|
||||||
|
session.response.send_error(errors.UNIT_EXISTS.code, errors.UNIT_EXISTS.message)
|
||||||
|
else
|
||||||
|
log.error("Insert confirmation failed: "..tostring(err))
|
||||||
|
session.response.send_error()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
close_db()
|
close_db()
|
||||||
|
|||||||
@@ -101,6 +101,5 @@ close_db()
|
|||||||
|
|
||||||
session.response.send({
|
session.response.send({
|
||||||
message = "User updated successfully",
|
message = "User updated successfully",
|
||||||
fields_updated = #set_clauses - 1, -- excluding updated_at
|
|
||||||
fields = params.fields
|
fields = params.fields
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user