comparison src/lib/Post.luan @ 18:94e26bffd4fb

UI work
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 11 Jul 2022 12:14:05 -0600
parents bff178656073
children 0c1b820fff34
comparison
equal deleted inserted replaced
17:a602a5735a37 18:94e26bffd4fb
8 local html_encode = Html.encode or error() 8 local html_encode = Html.encode or error()
9 local Db = require "site:/lib/Db.luan" 9 local Db = require "site:/lib/Db.luan"
10 10
11 11
12 local Post = {} 12 local Post = {}
13
14 local times = {
15 {
16 time = 1000*60*60*24*365
17 unit = "year"
18 }
19 {
20 time = 1000*60*60*24*7
21 unit = "week"
22 }
23 {
24 time = 1000*60*60*24
25 unit = "day"
26 }
27 {
28 time = 1000*60*60
29 unit = "hour"
30 }
31 {
32 time = 1000*60
33 unit = "minute"
34 }
35 }
13 36
14 local function from_doc(doc) 37 local function from_doc(doc)
15 doc.type == "post" or error "wrong type" 38 doc.type == "post" or error "wrong type"
16 return Post.new { 39 return Post.new {
17 id = doc.id 40 id = doc.id
89 local User = require "site:/lib/User.luan" 112 local User = require "site:/lib/User.luan"
90 local user = User.current() 113 local user = User.current()
91 return user ~= nil and user.name == post.author_name 114 return user ~= nil and user.name == post.author_name
92 end 115 end
93 116
117 function post.ago(now)
118 local diff = now - post.date
119 for _, t in ipairs(times) do
120 local n = diff // t.time
121 if n > 0 then
122 %><%=n%> <%=t.unit%><%
123 if n > 1 then
124 %>s<%
125 end
126 return
127 end
128 end
129 %>0 minutes<%
130 end
131
94 set_metatable(post,metatable) 132 set_metatable(post,metatable)
95 return post 133 return post
96 end 134 end
97 135
98 function Post.get_by_id(id) 136 function Post.get_by_id(id)