44 lines
992 B
Plaintext
44 lines
992 B
Plaintext
|
SELECT
|
||
|
posts.id,
|
||
|
posts.post_title,
|
||
|
posts.isanon,
|
||
|
authors.name,
|
||
|
posts.post_time
|
||
|
FROM
|
||
|
posts,authors
|
||
|
WHERE
|
||
|
authors.id = posts.authorid
|
||
|
<% for field, values in pairs(result) do -%>
|
||
|
<% for _,value in pairs(values) do -%>
|
||
|
<% local pn,expr,value = unpack(value) -%>
|
||
|
<% local n = (pn == "+" and "" or "NOT") -%>
|
||
|
<% if field == "title" then -%>
|
||
|
AND <%= n %> posts.post_title LIKE ?
|
||
|
<% elseif field == "author" then -%>
|
||
|
AND <%= n %> authors.name LIKE ?
|
||
|
<% elseif field == "date" then -%>
|
||
|
AND <%= n %> posts.post_time <%- expr %> ?
|
||
|
<% elseif field == "hits" then -%>
|
||
|
AND posts.views <%- expr -%> ?
|
||
|
<% end -%>
|
||
|
<% end -%>
|
||
|
<% end -%>
|
||
|
<% for _,tag in pairs(result.tags) do -%>
|
||
|
INTERSECT
|
||
|
SELECT
|
||
|
posts.id,
|
||
|
posts.post_title,
|
||
|
posts.isanon,
|
||
|
authors.name,
|
||
|
posts.post_time
|
||
|
FROM
|
||
|
posts,authors,tags
|
||
|
WHERE
|
||
|
posts.authorid = authors.id
|
||
|
AND tags.postid = posts.id
|
||
|
<% local n,v,t = unpack(tag) -%>
|
||
|
<% n = (n == "-" and "NOT" or "") -%>
|
||
|
AND <%= n %> tags.tag = ?
|
||
|
<% end -%>
|
||
|
;
|