#-i insert, otherwise search
op=search
-action='log'
+action=
+json=0
pkgfile=${ZPMDB:-/var/lib/zpm/local.db}
-while getopts f:t:a:T:i opt; do
+while getopts f:t:a:T:ij opt; do
case $opt in
f) pkgfile="$OPTARG" ;;
t) target="$OPTARG" ;;
a) action="$OPTARG" ;;
T) timestamp="$OPTARG" ;;
i) op=insert ;;
+ j) json=1 ;;
*) printf '%s unknown option %s\n' "$0" "$opt" ; exit 1 ;;
esac
done
fi
+cols='ts,target,action,info'
+
if [ $op = 'search' ]; then
+
+if [ $json -eq 1 ]; then
+ cols="json_group_array(json_object('ts',ts,'target',target,'action',action,'info',info))"
+fi
+
{
- printf 'select ts,action,target,info from zpmlog where\n';
+ printf ".separator ' '\n"
+ printf 'select %s from zpmlog where\n' "$cols";
if [ -n "$timestamp" ]; then
printf "ts >= '%s' and " "$timestamp"
fi
if [ -n "$action" ]; then
- printf "action = '%s' and " "$action"
+ printf "action like '%s' and " "$action"
fi
if [ -n "$target" ]; then
- printf "target = '%s' and " "$target"
+ printf "target like '%s' and " "$target"
fi
- printf "true;\n"
+ printf "true order by ts;\n"
} | zpm shell $pkgfile
fi
-