From a40c286cff106b387f55763d648f5ebd94af045d Mon Sep 17 00:00:00 2001 From: Nathan Wagner Date: Thu, 25 Oct 2018 13:37:52 +0000 Subject: [PATCH] add json to sqlite add json output option to zpm-log --- sqlite/config.h | 2 ++ zpm-log | 23 ++++++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/sqlite/config.h b/sqlite/config.h index 3ef85f9..2667358 100644 --- a/sqlite/config.h +++ b/sqlite/config.h @@ -14,3 +14,5 @@ #ifdef __APPLE__ #define OSATOMIC_USE_INLINED 1 #endif + +#define SQLITE_ENABLE_JSON1 1 diff --git a/zpm-log b/zpm-log index f4fdab8..8e53f62 100755 --- a/zpm-log +++ b/zpm-log @@ -6,17 +6,19 @@ #-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 @@ -50,21 +52,28 @@ if [ $op = 'insert' ]; then 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 - -- 2.40.0