46 lines
1.1 KiB
Lua
46 lines
1.1 KiB
Lua
local db = require("db")
|
|
local log = require("log")
|
|
|
|
local RatingHandler = {}
|
|
|
|
function RatingHandler.handle(event)
|
|
local conn, err = db.get_connection()
|
|
if not conn then
|
|
error("Database connection failed: " .. tostring(err))
|
|
end
|
|
|
|
local ok, handler_err = pcall(function()
|
|
conn:query([[
|
|
CREATE TABLE IF NOT EXISTS rating_events (
|
|
id SERIAL PRIMARY KEY,
|
|
device_id INTEGER,
|
|
user_id VARCHAR(255),
|
|
score INTEGER,
|
|
processed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
)
|
|
]])
|
|
|
|
conn:query(
|
|
"INSERT INTO rating_events (device_id, user_id, score) VALUES ($1, $2, $3)",
|
|
tonumber(event.device_id) or 0,
|
|
event.user_id or "",
|
|
tonumber(event.score) or 0
|
|
)
|
|
end)
|
|
|
|
conn:disconnect()
|
|
|
|
if not ok then
|
|
error(handler_err)
|
|
end
|
|
|
|
log.info("Rating event logged", {
|
|
component = "rating_handler",
|
|
device_id = event.device_id,
|
|
score = event.score,
|
|
request_id = event.request_id,
|
|
})
|
|
end
|
|
|
|
return RatingHandler
|