Mercurial Hosting > luan
diff src/luan/modules/lucene/Lucene.luan @ 1429:82415c9c0015
move versioning into Lucene
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 24 Nov 2019 23:07:21 -0700 |
parents | a076e89a2879 |
children | f3a417074cea |
line wrap: on
line diff
--- a/src/luan/modules/lucene/Lucene.luan Sun Nov 24 21:02:38 2019 -0700 +++ b/src/luan/modules/lucene/Lucene.luan Sun Nov 24 23:07:21 2019 -0700 @@ -2,10 +2,13 @@ local Luan = require "luan:Luan.luan" local error = Luan.error local ipairs = Luan.ipairs or error() +local pairs = Luan.pairs or error() local type = Luan.type or error() local set_metatable = Luan.set_metatable or error() local Boot = require "luan:Boot.luan" local Html = require "luan:Html.luan" +local Number = require "luan:Number.luan" +local integer = Number.integer or error() local Io = require "luan:Io.luan" local uri = Io.uri or error() local String = require "luan:String.luan" @@ -159,6 +162,25 @@ end index.restore = Boot.no_security(index.restore) + function index.update(steps) + local version = 0 + for i in pairs(steps) do + if version < i then + version = i + end + end + local doc = index.get_document"type:version" or { type="version", version=integer(0) } + while doc.version < version do + doc.version = integer(doc.version + 1) + logger.error("step "..doc.version) + index.run_in_transaction( function() + local step = steps[doc.version] or error("missing step "..doc.version) + step() + index.save(doc) + end ) + end + end + local function multi_error() error "multiple lucene instances" end