s4
changeset 344:7ff49d1c2987
Support '<', '>' for date search keyword
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Tue, 25 Oct 2016 13:04:49 +0859 |
parents | c3311da3f059 |
children | 8134b548b385 |
files | s4-blog.sh |
diffstat | 1 files changed, 14 insertions(+), 5 deletions(-) [+] |
line diff
1.1 --- a/s4-blog.sh Tue Oct 25 11:29:32 2016 +0859 1.2 +++ b/s4-blog.sh Tue Oct 25 13:04:49 2016 +0859 1.3 @@ -471,16 +471,25 @@ 1.4 rowid=$((${kwd#\#} + 0)) # Force to be a number 1.5 kc="ar.rowid = $rowid" 1.6 else 1.7 - for k in `echo "$kwd" | sed "s/'/''/g"`; do 1.8 - if expr x"$k" : 'x@[1-9][][0-9]*-[][0-9:-]*$' >/dev/null 1>&2; then 1.9 - # Like '@2016-10-10', expands to "s.ctime GLOB '@2016-10-10'" 1.10 - ctime=${k#@} 1.11 + for k in `echo "$kwd" | sed "s/'/''/g"`; do # With wrap quotes 1.12 + if expr x"$k" : 'x@[><= ]*[1-9][][0-9]*-[][0-9:-]*$' >/dev/null >&2; then 1.13 + # '@<2016-10-10' -> ctime < '2016-10-10' 1.14 + # '@>=2016-10-10' -> ctime >= '2016-10-10' 1.15 + # '@2016-10-10' -> ctime GLOB '@2016-10-10' 1.16 + k=${k#@} 1.17 + case "$k" in 1.18 + [\<\>]*) op=${k%%[!<>=]*}; ctime=${k##*[><= ]} ;; 1.19 + *) op='GLOB'; ctime="${k##*[><= ]}*" ;; 1.20 + esac 1.21 + kc=$kc${kc:+" AND "}"ctime $op '${ctime}'" 1.22 # Not sure GROUP BY a.blogid is comfortable for searchers...? 1.23 - kc=$kc${kc:+" AND "}"ctime GLOB '${ctime}*'" 1.24 ##### kwdgrp=" GROUP BY a.blogid" ## Add this to lessen results 1.25 elif [ x"$k" = x"@today" -o x"$k" = x"@今日" ]; then 1.26 ctime=`date +%F` 1.27 kc=$kc${kc:+" AND "}"ctime GLOB '${ctime}*'" 1.28 + elif [ x"$k" = x"@week" ]; then 1.29 + ctime=`query "SELECT datetime('now', 'localtime', '-7 days');"` 1.30 + kc=$kc${kc:+" AND "}"ctime > '${ctime}'" 1.31 else 1.32 kc=$kc${kc:+" AND "}"content LIKE '%$k%'" 1.33 fi