Mercurial Hosting > linkmystyle
view src/report.js.luan @ 2:e32e4120dc70
minor
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 11 Jul 2025 21:23:39 -0600 |
parents | 8f4df159f06b |
children |
line wrap: on
line source
local Luan = require "luan:Luan.luan" local error = Luan.error local ipairs = Luan.ipairs or error() local stringify = Luan.stringify or error() local String = require "luan:String.luan" local to_number = String.to_number or error() local Number = require "luan:Number.luan" local long = Number.long or error() local Table = require "luan:Table.luan" local copy = Table.copy or error() local Io = require "luan:Io.luan" local Http = require "luan:http/Http.luan" local Reporting = require "site:/lib/Reporting.luan" local db = Reporting.db or error() local Utils = require "site:/lib/Utils.luan" local to_list = Utils.to_list or error() local Logging = require "luan:logging/Logging.luan" local logger = Logging.logger "report.js" -- modified from Lucene.luan local function get_document(query) local doc local function fn(_,doc_fn,_) doc = doc_fn() end local total_hits = db.advanced_search(query,fn,1) if total_hits > 1 then logger.error("found "..total_hits.." documents for query: "..stringify(query)) end return doc end return function() local types = Http.request.parameters.type or error() types = to_list(types) local owner = Http.request.parameters.owner or error() local today = Http.request.parameters.today or error() today = to_number(today) or error(today) today = long(today) db.run_in_transaction( function() for _, type in ipairs(types) do local value = Http.request.parameters[type] local before = Http.request.parameters[type.."_before"] before = before and long(to_number(before)) --logger.info(type.." ~ "..owner.." ~ "..value) local keys = { type = type owner = owner value = value day = today } local found = get_document(keys) if found == nil then local doc = copy(keys) doc.count = 1 db.save(doc) --logger.info(1) else found.count = found.count + 1 db.save(found) --logger.info(found.count) end if before ~= nil then keys.day = before found = get_document(keys) if found == nil then logger.warn("before not found: "..stringify(keys)) else local count = found.count if count <= 0 then logger.warn("before count is "..count.." for: "..stringify(keys)) else found.count = count - 1 db.save(found) --logger.info("before") end end end end_for end ) end