Mercurial Hosting > luan
view blog/src/lib/Post.luan @ 599:50540f0813e2
support default search fields in lucene;
add search to blog;
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 16 Sep 2015 20:55:49 -0600 |
parents | 6bb0c83116e9 |
children | b73f005f3735 |
line wrap: on
line source
local Luan = require "luan:Luan" local error = Luan.error local ipairs = Luan.ipairs or error() local assert_string = Luan.assert_string or error() local Time = require "luan:Time" local now = Time.now or error() local String = require "luan:String" local trim = String.trim or error() local Db = require "site:/lib/Db" local M = {} local function from_doc(doc) return M.new { id = doc.id; subject = doc.subject; content = doc.content; date = doc.date; } end function M.new(this) assert_string(this.subject) assert_string(this.content) this.date = this.date or now() function this.save() local doc = { type = "post"; id = this.id; subject = this.subject; content = this.content; date = this.date; } Db.save(doc) this.id = doc.id end return this end function M.get_by_id(id) local doc = Db.get_document("id:"..id) return doc and from_doc(doc) end function M.get_all() local docs = Db.search("type:post",1,1000,"id desc") local posts = {} for _, doc in ipairs(docs) do posts[#posts+1] = from_doc(doc) end return posts end function M.search(query) query = trim(query) if #query == 0 then return M.get_all() end local docs = Db.search(query,1,1000) local posts = {} for _, doc in ipairs(docs) do posts[#posts+1] = from_doc(doc) end return posts end return M