mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-05-29 00:10:53 +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.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v0.91-2-g1e851bd
|
#### $$VERSION$$ v0.91-3-g4594e05
|
||||||
#
|
#
|
||||||
# Exit Codes:
|
# Exit Codes:
|
||||||
# - 0 sucess (hopefully)
|
# - 0 sucess (hopefully)
|
||||||
|
|
|
@ -87,7 +87,7 @@ This means if you register a every 5 Minutes event its first execution may < 5 M
|
||||||
* 0 ignored
|
* 0 ignored
|
||||||
* 1 execute every minute
|
* 1 execute every minute
|
||||||
* x execute every x minutes
|
* x execute every x minutes
|
||||||
* -x execute ONCE in x minutes*\**
|
* -x execute ONCE in x minutes *\**
|
||||||
|
|
||||||
*\* if you really want "in x minutes" you must use ```-(EVENT_TIMER+x)```*
|
*\* if you really want "in x minutes" you must use ```-(EVENT_TIMER+x)```*
|
||||||
|
|
||||||
|
@ -286,5 +286,5 @@ fi
|
||||||
|
|
||||||
#### [Prev Function Reference](6_reference.md)
|
#### [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.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# 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
|
# source from commands.sh to use jsonDB functions
|
||||||
#
|
#
|
||||||
# jsonDB rovides simple functions to read and store bash Arrays
|
# jsonDB provides simple functions to read and store bash Arrays
|
||||||
# from to file in JSON.sh output format
|
# 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
|
# read content of a file in JSON.sh format into given ARRAY
|
||||||
# $1 ARRAY name, must be delared with "declare -A ARRAY" upfront
|
# $1 ARRAY name, must be delared with "declare -A ARRAY" upfront
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
jssh_readDB() {
|
jssh_readDB() {
|
||||||
local DB; DB="$(jssh_checkname "$2")"
|
local DB; DB="$(jssh_checkname "$2")"
|
||||||
[ "${DB}" = "" ] && return 1
|
[ "${DB}" = "" ] && return 1
|
||||||
[ ! -f "${DB}" ] && return 1
|
[ ! -f "${DB}" ] && return 2
|
||||||
Json2Array "$1" <"${DB}"
|
Json2Array "$1" <"${DB}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,15 +28,42 @@ jssh_readDB() {
|
||||||
jssh_writeDB() {
|
jssh_writeDB() {
|
||||||
local DB; DB="$(jssh_checkname "$2")"
|
local DB; DB="$(jssh_checkname "$2")"
|
||||||
[ "${DB}" = "" ] && return 1
|
[ "${DB}" = "" ] && return 1
|
||||||
[ ! -f "${DB}" ] && return 1
|
[ ! -f "${DB}" ] && return 2
|
||||||
Array2Json "$1" >"${DB}"
|
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 '..'
|
# $1 filename (must exist!), must be relative to BASHBOT_ETC, and not contain '..'
|
||||||
jssh_newDB() {
|
jssh_newDB() {
|
||||||
local DB; DB="$(jssh_checkname "$1")"
|
local DB; DB="$(jssh_checkname "$1")"
|
||||||
[ "${DB}" = "" ] && return 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}"
|
printf '\n' >"${DB}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,6 +72,7 @@ jssh_checkname(){
|
||||||
[ "$1" = "" ] && return 1
|
[ "$1" = "" ] && return 1
|
||||||
local DB="${BASHBOT_ETC:-.}/$1.jssh"
|
local DB="${BASHBOT_ETC:-.}/$1.jssh"
|
||||||
[[ "$1" = "${BASHBOT_ETC:-.}"* ]] && DB="$1.jssh"
|
[[ "$1" = "${BASHBOT_ETC:-.}"* ]] && DB="$1.jssh"
|
||||||
[[ "$1" = *'..'* ]] && return 1
|
[[ "$1" = *'..'* ]] && return 2
|
||||||
printf '%s\n' "${DB}"
|
printf '%s\n' "${DB}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user