iSQlite Version (for history) - dossier - console collection manager Err bitreich.org 70 1Log /scm/dossier/log.gph bitreich.org 70 1Files /scm/dossier/files.gph bitreich.org 70 1Refs /scm/dossier/refs.gph bitreich.org 70 1Tags /scm/dossier/tag bitreich.org 70 1README /scm/dossier/file/README.gph bitreich.org 70 1LICENSE /scm/dossier/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 67938e405b6efa96c2815577e70c7ec6d367fcab /scm/dossier/commit/67938e405b6efa96c2815577e70c7ec6d367fcab.gph bitreich.org 70 1parent 9720541044836a4a509a41f038fcd22f64ec1116 /scm/dossier/commit/9720541044836a4a509a41f038fcd22f64ec1116.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Sun, 15 Jul 2018 01:42:51 +0200 Err bitreich.org 70 i Err bitreich.org 70 iSQlite Version (for history) Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i A cdb_sqlite | 142 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 142 insertions(+), 0 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/cdb_sqlite b/cdb_sqlite /scm/dossier/file/cdb_sqlite.gph bitreich.org 70 i@@ -0,0 +1,142 @@ Err bitreich.org 70 i+#!/bin/sh Err bitreich.org 70 i+ Err bitreich.org 70 i+if [ ! -f "database.sqlite" ] Err bitreich.org 70 i+then Err bitreich.org 70 i+ printf 'CREATE TABLE collection ( id text primary key );' | \ Err bitreich.org 70 i+ sqlite3 database.sqlite || exit 1 Err bitreich.org 70 i+fi Err bitreich.org 70 i+#mkdir -p "${REPO}" || exit 1 Err bitreich.org 70 i+ Err bitreich.org 70 i+# displays the values of an identifier Err bitreich.org 70 i+# $1 identifier Err bitreich.org 70 i+show() { Err bitreich.org 70 i+ printf "SELECT * FROM collection WHERE id = '%s';" \ Err bitreich.org 70 i+ "$1" | \ Err bitreich.org 70 i+ sqlite3 database.sqlite -line Err bitreich.org 70 i+ Err bitreich.org 70 i+ if [ "$?" -eq 0 ] Err bitreich.org 70 i+ then Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+ else Err bitreich.org 70 i+ printf '%s is not in the library.\n' "$1" Err bitreich.org 70 i+ exit 1 Err bitreich.org 70 i+ fi Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# export the data in csv format "data","data","data" Err bitreich.org 70 i+# we assume it'll works with the dataset Err bitreich.org 70 i+export_csv() { Err bitreich.org 70 i+ sqlite3 database.sqlite -header -csv 'select * from collection;' Err bitreich.org 70 i+ exit $? Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# delete identifier from attributes Err bitreich.org 70 i+# $1 identifier Err bitreich.org 70 i+delete() { Err bitreich.org 70 i+ printf "DELETE from collection where id = '%s';" "$1" | \ Err bitreich.org 70 i+ sqlite3 database.sqlite Err bitreich.org 70 i+ Err bitreich.org 70 i+ if [ "$?" -ne 0 ] Err bitreich.org 70 i+ then Err bitreich.org 70 i+ printf "%s is not in the library!\n" "$1" Err bitreich.org 70 i+ exit 1 Err bitreich.org 70 i+ else Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+ fi Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# displays list of identifiers Err bitreich.org 70 i+show_list() { Err bitreich.org 70 i+ printf "SELECT id from collection;" | \ Err bitreich.org 70 i+ sqlite3 database.sqlite Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# displays attributes used Err bitreich.org 70 i+show_attributes() { Err bitreich.org 70 i+ sqlite3 database.sqlite 'PRAGMA table_info(collection)' | \ Err bitreich.org 70 i+ cut -d '|' -f 2 Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# add/modify a value Err bitreich.org 70 i+# $@ identifier / attr / value / attr / value / .... Err bitreich.org 70 i+# shift to have attr / value again and again Err bitreich.org 70 i+add_value() { Err bitreich.org 70 i+ ID="$1" Err bitreich.org 70 i+ shift Err bitreich.org 70 i+ Err bitreich.org 70 i+ while [ "$#" -gt 1 ] Err bitreich.org 70 i+ do Err bitreich.org 70 i+ ATTRIBUTE="$1" Err bitreich.org 70 i+ VALUE="$2" Err bitreich.org 70 i+ shift 2 Err bitreich.org 70 i+ Err bitreich.org 70 i+ # add a column if it doesn't exist Err bitreich.org 70 i+ if [ -z "$(sqlite3 database.sqlite 'PRAGMA table_info(collection);' | grep "|${ATTRIBUTE}|")" ] Err bitreich.org 70 i+ then Err bitreich.org 70 i+ printf 'ALTER TABLE collection ADD COLUMN %s text;' "${ATTRIBUTE}" | \ Err bitreich.org 70 i+ sqlite3 database.sqlite Err bitreich.org 70 i+ fi Err bitreich.org 70 i+ printf "INSERT INTO collection('id') VALUES ('%s');" "$ID" | \ Err bitreich.org 70 i+ sqlite3 database.sqlite >/dev/null 2>&1 Err bitreich.org 70 i+ Err bitreich.org 70 i+ printf "UPDATE collection SET %s = '%s' WHERE id = '%s';" \ Err bitreich.org 70 i+ "$ATTRIBUTE" "$VALUE" "$ID" | \ Err bitreich.org 70 i+ sqlite3 database.sqlite Err bitreich.org 70 i+ done Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# returns identifiers having attribute=value Err bitreich.org 70 i+# $1 attribute Err bitreich.org 70 i+# $2 value Err bitreich.org 70 i+search_value() { Err bitreich.org 70 i+ printf "SELECT id FROM collection WHERE %s = '%s';" \ Err bitreich.org 70 i+ "$1" "$2" | \ Err bitreich.org 70 i+ sqlite3 database.sqlite Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# returns list of identifiers in a attribute Err bitreich.org 70 i+# $1 attribute Err bitreich.org 70 i+list() { Err bitreich.org 70 i+ printf "SELECT id,%s as attribute FROM collection WHERE attribute <> '';" \ Err bitreich.org 70 i+ "$1" | \ Err bitreich.org 70 i+ sqlite3 database.sqlite Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# displays usage Err bitreich.org 70 i+usage() { Err bitreich.org 70 i+ printf '%s\n' \ Err bitreich.org 70 i+ "cdb help" \ Err bitreich.org 70 i+ "cdb export" \ Err bitreich.org 70 i+ "cdb show [identifier]" \ Err bitreich.org 70 i+ "cdb search [attribute [value]]" \ Err bitreich.org 70 i+ "cdb identifier attribute value ... attribute value ..." Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+if [ "$1" = "export" ] ; then export_csv ; fi Err bitreich.org 70 i+if [ "$1" = "rm" ] && [ "$#" -eq 2 ] ; then delete "$2" ; fi Err bitreich.org 70 i+if [ "$1" = "help" ] ; then usage ; fi Err bitreich.org 70 i+ Err bitreich.org 70 i+# dealing with identifiers Err bitreich.org 70 i+if [ "$1" = "show" ] Err bitreich.org 70 i+then Err bitreich.org 70 i+ if [ "$#" -eq 1 ]; then show_list ; fi Err bitreich.org 70 i+ if [ "$#" -eq 2 ]; then show "$2" ; fi Err bitreich.org 70 i+fi Err bitreich.org 70 i+ Err bitreich.org 70 i+# dealing with attributes Err bitreich.org 70 i+if [ "$1" = "search" ]; Err bitreich.org 70 i+then Err bitreich.org 70 i+ if [ "$#" -eq 1 ]; then show_attributes ; fi Err bitreich.org 70 i+ if [ "$#" -eq 2 ]; then list "$2" ; fi Err bitreich.org 70 i+ if [ "$#" -eq 3 ]; then search_value "$2" "$3" ; fi Err bitreich.org 70 i+fi Err bitreich.org 70 i+ Err bitreich.org 70 i+if [ "$#" -ge 3 ]; then add_value "$@" ; fi Err bitreich.org 70 i+ Err bitreich.org 70 i+usage Err bitreich.org 70 .