mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2025-01-23 05:38:24 +00:00
jsshDB: read write single key/value pairs
This commit is contained in:
parent
aad0bfecd8
commit
55c9d8bb4d
@ -11,7 +11,7 @@
|
||||
# This file is public domain in the USA and all free countries.
|
||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||
#
|
||||
#### $$VERSION$$ v0.91-2-g1e851bd
|
||||
#### $$VERSION$$ v0.91-3-g4594e05
|
||||
#
|
||||
# Exit Codes:
|
||||
# - 0 sucess (hopefully)
|
||||
|
@ -286,5 +286,5 @@ fi
|
||||
|
||||
#### [Prev Function Reference](6_reference.md)
|
||||
|
||||
#### $$VERSION$$ v0.91-1-gdb03e23
|
||||
#### $$VERSION$$ v0.91-4-gaad0bfe
|
||||
|
||||
|
@ -5,12 +5,12 @@
|
||||
# This file is public domain in the USA and all free countries.
|
||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||
#
|
||||
#### $$VERSION$$ v0.91-0-g31808a9
|
||||
#### $$VERSION$$ v0.91-4-gaad0bfe
|
||||
#
|
||||
# source from commands.sh to use jsonDB functions
|
||||
#
|
||||
# jsonDB rovides simple functions to read and store bash Arrays
|
||||
# from to file in JSON.sh output format
|
||||
# jsonDB provides simple functions to read and store bash Arrays
|
||||
# from to file in JSON.sh output format, its a simple key/value storage.
|
||||
|
||||
# read content of a file in JSON.sh format into given ARRAY
|
||||
# $1 ARRAY name, must be delared with "declare -A ARRAY" upfront
|
||||
@ -18,7 +18,7 @@
|
||||
jssh_readDB() {
|
||||
local DB; DB="$(jssh_checkname "$2")"
|
||||
[ "${DB}" = "" ] && return 1
|
||||
[ ! -f "${DB}" ] && return 1
|
||||
[ ! -f "${DB}" ] && return 2
|
||||
Json2Array "$1" <"${DB}"
|
||||
}
|
||||
|
||||
@ -28,15 +28,42 @@ jssh_readDB() {
|
||||
jssh_writeDB() {
|
||||
local DB; DB="$(jssh_checkname "$2")"
|
||||
[ "${DB}" = "" ] && return 1
|
||||
[ ! -f "${DB}" ] && return 1
|
||||
[ ! -f "${DB}" ] && return 2
|
||||
Array2Json "$1" >"${DB}"
|
||||
}
|
||||
|
||||
# insert, update, apped key/value to jsshDB
|
||||
# $1 key name, can onyl contain -a-zA-Z0-9,._
|
||||
# $2 key value
|
||||
# $3 filename (must exist!), must be relative to BASHBOT_ETC, and not contain '..'
|
||||
jssh_insertDB() {
|
||||
[[ "$1" =~ ^[-a-zA-Z0-9,._]+$ ]] || return 3
|
||||
local key="$1" value="$2"
|
||||
local DB; DB="$(jssh_checkname "$3")"
|
||||
[ "${DB}" = "" ] && return 1
|
||||
[ ! -f "${DB}" ] && return 2
|
||||
# its append, but last one counts, its a simple DB ...
|
||||
printf '["%s"]\t"%s"\n' "${key//,/\",\"}" "${value//\"/\\\"}" >>"${DB}"
|
||||
|
||||
}
|
||||
|
||||
# get key/value from jsshDB
|
||||
# $1 key name, can onyl contain -a-zA-Z0-9,._
|
||||
# $2 key value
|
||||
# $3 filename (must exist!), must be relative to BASHBOT_ETC, and not contain '..'
|
||||
# returns value
|
||||
jssh_getDB() {
|
||||
[[ "$1" =~ ^[-a-zA-Z0-9,._]+$ ]] || return 3
|
||||
declare -A getARR
|
||||
jssh_readDB "getARR" "$3" || return "$?"
|
||||
printf '%s\n' "${getARR[${key}]}"
|
||||
}
|
||||
|
||||
# $1 filename (must exist!), must be relative to BASHBOT_ETC, and not contain '..'
|
||||
jssh_newDB() {
|
||||
local DB; DB="$(jssh_checkname "$1")"
|
||||
[ "${DB}" = "" ] && return 1
|
||||
[ -f "${DB}" ] && return 1 # already exist, do not zero out
|
||||
[ -f "${DB}" ] && return 2 # already exist, do not zero out
|
||||
printf '\n' >"${DB}"
|
||||
}
|
||||
|
||||
@ -45,6 +72,7 @@ jssh_checkname(){
|
||||
[ "$1" = "" ] && return 1
|
||||
local DB="${BASHBOT_ETC:-.}/$1.jssh"
|
||||
[[ "$1" = "${BASHBOT_ETC:-.}"* ]] && DB="$1.jssh"
|
||||
[[ "$1" = *'..'* ]] && return 1
|
||||
[[ "$1" = *'..'* ]] && return 2
|
||||
printf '%s\n' "${DB}"
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user