10
|
1 local Luan = require "luan:Luan.luan"
|
|
2 local error = Luan.error
|
|
3 local ipairs = Luan.ipairs or error()
|
|
4 local Number = require "luan:Number.luan"
|
|
5 local long = Number.long or error()
|
|
6 local Db = require "site:/lib/Db.luan"
|
|
7
|
|
8
|
|
9 local Post = {}
|
|
10
|
|
11 local function from_doc(doc)
|
|
12 doc.type == "post" or error "wrong type"
|
|
13 return Post.new {
|
|
14 id = doc.id
|
|
15 chat_id = doc.post_chat_id
|
|
16 author_id = doc.author_id
|
|
17 date = doc.date
|
|
18 content = doc.content
|
|
19 }
|
|
20 end
|
|
21
|
|
22 local function to_doc(post)
|
|
23 return {
|
|
24 type = "post"
|
|
25 id = post.id
|
|
26 post_chat_id = long(post.chat_id)
|
|
27 author_id = long(post.author_id)
|
|
28 date = long(post.date)
|
|
29 content = post.content or error()
|
|
30 }
|
|
31 end
|
|
32
|
|
33 function Post.new(post)
|
|
34 function post.save()
|
|
35 local doc = to_doc(post)
|
|
36 Db.save(doc)
|
|
37 post.id = doc.id
|
|
38 end
|
|
39
|
|
40 return post
|
|
41 end
|
|
42
|
|
43 function Post.search(query,sort,rows)
|
|
44 rows = rows or 1000000
|
|
45 local posts = {}
|
|
46 local docs = Db.search(query,1,rows,{sort=sort})
|
|
47 for _, doc in ipairs(docs) do
|
|
48 posts[#posts+1] = from_doc(doc)
|
|
49 end
|
|
50 return posts
|
|
51 end
|
|
52
|
|
53 return Post
|