596
|
1 local Luan = require "luan:Luan"
|
|
2 local error = Luan.error
|
|
3 local ipairs = Luan.ipairs or error()
|
|
4 local assert_string = Luan.assert_string or error()
|
|
5 local Time = require "luan:Time"
|
|
6 local now = Time.now or error()
|
|
7 local Db = require "site:/lib/Db"
|
|
8
|
|
9
|
|
10 local M = {}
|
|
11
|
|
12 local function from_doc(doc)
|
|
13 return M.new {
|
|
14 id = doc.id;
|
|
15 subject = doc.subject;
|
|
16 content = doc.content;
|
|
17 date = doc.date;
|
|
18 }
|
|
19 end
|
|
20
|
|
21 function M.new(this)
|
|
22 assert_string(this.subject)
|
|
23 assert_string(this.content)
|
|
24 this.date = this.date or now()
|
|
25
|
|
26 function this.save()
|
|
27 local doc = {
|
|
28 type = "post";
|
|
29 id = this.id;
|
|
30 subject = this.subject;
|
|
31 content = this.content;
|
|
32 date = this.date;
|
|
33 }
|
|
34 Db.save(doc)
|
|
35 this.id = doc.id
|
|
36 end
|
|
37
|
|
38 return this
|
|
39 end
|
|
40
|
|
41 function M.get_by_id(id)
|
|
42 local doc = Db.get_document("id:"..id)
|
|
43 return doc and from_doc(doc)
|
|
44 end
|
|
45
|
|
46 function M.get_all()
|
|
47 local docs = Db.search("type:post",1,1000,"id desc")
|
|
48 local posts = {}
|
|
49 for _, doc in ipairs(docs) do
|
|
50 posts[#posts+1] = from_doc(doc)
|
|
51 end
|
|
52 return posts
|
|
53 end
|
|
54
|
|
55 return M
|