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