Mercurial Hosting > luan
diff blog/src/lib/Post.luan @ 596:6bb0c83116e9
add blog sample app
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 15 Sep 2015 21:30:33 -0600 |
parents | |
children | 50540f0813e2 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/blog/src/lib/Post.luan Tue Sep 15 21:30:33 2015 -0600 @@ -0,0 +1,55 @@ +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 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 + +return M