comparison examples/blog/src/lib/Post.luan @ 1220:4721c482c86b

cleaner Db example
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 21 Mar 2018 15:54:57 -0600
parents 1f9d34a6f308
children 709f7498a363
comparison
equal deleted inserted replaced
1219:b602badc876b 1220:4721c482c86b
4 local type = Luan.type or error() 4 local type = Luan.type or error()
5 local Time = require "luan:Time.luan" 5 local Time = require "luan:Time.luan"
6 local now = Time.now or error() 6 local now = Time.now or error()
7 local String = require "luan:String.luan" 7 local String = require "luan:String.luan"
8 local trim = String.trim or error() 8 local trim = String.trim or error()
9 local Db = require "site:/lib/Db.luan" 9 local db = require("site:/lib/Db.luan").db or error()
10 10
11 11
12 local Post = {} 12 local Post = {}
13 13
14 local function from_doc(doc) 14 local function from_doc(doc)
31 id = this.id 31 id = this.id
32 subject = this.subject 32 subject = this.subject
33 content = this.content 33 content = this.content
34 date = this.date 34 date = this.date
35 } 35 }
36 Db.save(doc) 36 db.save(doc)
37 this.id = doc.id 37 this.id = doc.id
38 end 38 end
39 39
40 return this 40 return this
41 end 41 end
42 42
43 function Post.get_by_id(id) 43 function Post.get_by_id(id)
44 local doc = Db.get_document("id:"..id) 44 local doc = db.get_document("id:"..id)
45 return doc and from_doc(doc) 45 return doc and from_doc(doc)
46 end 46 end
47 47
48 function Post.get_all() 48 function Post.get_all()
49 local docs = Db.search("type:post",1,1000,"id desc") 49 local docs = db.search("type:post",1,1000,"id desc")
50 local posts = {} 50 local posts = {}
51 for _, doc in ipairs(docs) do 51 for _, doc in ipairs(docs) do
52 posts[#posts+1] = from_doc(doc) 52 posts[#posts+1] = from_doc(doc)
53 end 53 end
54 return posts 54 return posts
57 function Post.search(query) 57 function Post.search(query)
58 query = trim(query) 58 query = trim(query)
59 if #query == 0 then 59 if #query == 0 then
60 return Post.get_all() 60 return Post.get_all()
61 end 61 end
62 local docs = Db.search(query,1,1000) 62 local docs = db.search(query,1,1000)
63 local posts = {} 63 local posts = {}
64 for _, doc in ipairs(docs) do 64 for _, doc in ipairs(docs) do
65 posts[#posts+1] = from_doc(doc) 65 posts[#posts+1] = from_doc(doc)
66 end 66 end
67 return posts 67 return posts