Mercurial Hosting > linkmystyle
diff src/lib/Db.luan @ 0:8f4df159f06b
start public repo
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 11 Jul 2025 20:57:49 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/lib/Db.luan Fri Jul 11 20:57:49 2025 -0600 @@ -0,0 +1,60 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.error +local new_error = Luan.new_error or error() +local ipairs = Luan.ipairs or error() +local Lucene = require "luan:lucene/Lucene.luan" +local Io = require "luan:Io.luan" +local uri = Io.uri or error() +local Http = require "luan:http/Http.luan" +local Thread = require "luan:Thread.luan" +local Time = require "luan:Time.luan" +local Logging = require "luan:logging/Logging.luan" +local logger = Logging.logger "Db" + + +local dir = uri("site:/private/local/lucene") + +local Db = Lucene.index( dir, { + log_dir = uri("site:/private/local/lucene_log") + name = "lucene" + version = 1 +} ) + +Db.indexed_fields.user_email = Lucene.type.lowercase +Db.indexed_fields.user_name = Lucene.type.lowercase +Db.indexed_fields.user_registered = Lucene.type.long + +Db.indexed_fields.link_owner_id = Lucene.type.long +Db.indexed_fields.link_user_id = Lucene.type.long +Db.indexed_fields.link_order = Lucene.type.float + +Db.indexed_fields.pic_user_id = Lucene.type.long +Db.indexed_fields.pic_order = Lucene.type.float + +Db.indexed_fields.icon_name = Lucene.type.string +Db.indexed_fields.icon_user_id = Lucene.type.long +Db.indexed_fields.icon_order = Lucene.type.float + +function Db.not_in_transaction() + logger.error(new_error("not in transaction")) +end + +Db.restore_from_log() + +Db.update{ + [1] = function() + local docs = Db.search("type:pic",1,1000000) + for _, doc in ipairs(docs) do + if doc.title == nil then + doc.title = "Error" + Db.save(doc) + end + end + end +} + +if Http.is_serving then + Thread.schedule( Db.check, { delay=0, repeating_delay=Time.period{hours=1} } ) +end + +return Db