Mercurial Hosting > chat
comparison src/lib/Post.luan @ 10:f9e6a4cc4f7d
add Post
| author | Franklin Schmidt <fschmidt@gmail.com> | 
|---|---|
| date | Wed, 30 Oct 2024 23:18:45 -0600 | 
| parents | |
| children | c54c806fcc6e | 
   comparison
  equal
  deleted
  inserted
  replaced
| 9:b8b12fd8be22 | 10:f9e6a4cc4f7d | 
|---|---|
| 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 | 
