Flexible WHERE clauses
This commit is contained in:
parent
48716f3251
commit
38d248af42
41
atom
41
atom
@ -231,13 +231,14 @@ closeDatabase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Select() {
|
Select() {
|
||||||
#Select table [col1 [col2 [..]]] < WHERE_key WHERE_value
|
#Select table [col1 [col2 [..]]] < WHERE_key WHERE_operator WHERE_value
|
||||||
# [WHERE_key WHERE_value
|
# [WHERE_key WHERE_operator WHERE_value
|
||||||
# […]]
|
# […]]
|
||||||
local \
|
local \
|
||||||
table="$1" \
|
table="$1" \
|
||||||
col \
|
col \
|
||||||
columns \
|
columns \
|
||||||
|
operator \
|
||||||
results \
|
results \
|
||||||
where_statement
|
where_statement
|
||||||
shift
|
shift
|
||||||
@ -246,15 +247,10 @@ Select() {
|
|||||||
(( ${#columns} )) && columns+=','
|
(( ${#columns} )) && columns+=','
|
||||||
columns+="$col"
|
columns+="$col"
|
||||||
done
|
done
|
||||||
while read key value
|
while read key operator value
|
||||||
do
|
do
|
||||||
(( ${#where_statement} )) && where_statement+=( "AND" )
|
(( ${#where_statement} )) && where_statement+=( "AND" )
|
||||||
if [[ $value == NULL ]]
|
where_statement+=( "$key $operator "'"'"${value//\"/\\\"}"'"' )
|
||||||
then
|
|
||||||
where_statement+=( "$key is NULL" )
|
|
||||||
else
|
|
||||||
where_statement+=( "$key="'"'"${value//\"/\\\"}"'"' )
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
echo "SELECT IFNULL(" \
|
echo "SELECT IFNULL(" \
|
||||||
"(SELECT $columns FROM $table" \
|
"(SELECT $columns FROM $table" \
|
||||||
@ -262,7 +258,6 @@ Select() {
|
|||||||
",'SQL::Select:not found'" \
|
",'SQL::Select:not found'" \
|
||||||
");" >&3
|
");" >&3
|
||||||
read -u 4 results
|
read -u 4 results
|
||||||
results="${results#* = }"
|
|
||||||
if ! [[ $results == "SQL::Select:not found" ]]
|
if ! [[ $results == "SQL::Select:not found" ]]
|
||||||
then
|
then
|
||||||
echo "$results"
|
echo "$results"
|
||||||
@ -299,18 +294,18 @@ Insert() {
|
|||||||
(( no_id )) || {
|
(( no_id )) || {
|
||||||
echo 'SELECT LAST_INSERT_ROWID();' >&3
|
echo 'SELECT LAST_INSERT_ROWID();' >&3
|
||||||
read -u 4 results
|
read -u 4 results
|
||||||
results="${results#* = }"
|
|
||||||
echo "$results"
|
echo "$results"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Update(){
|
Update(){
|
||||||
#Update table set_key set_value [set_key set_value […]] < where_key where_value
|
#Update table set_key set_value [set_key set_value […]] < where_key where_operator where_value
|
||||||
# [where_key where_value
|
# [where_key where_operator where_value
|
||||||
# […]]
|
# […]]
|
||||||
local \
|
local \
|
||||||
table="$1" \
|
table="$1" \
|
||||||
key \
|
key \
|
||||||
argument \
|
argument \
|
||||||
|
operator \
|
||||||
value \
|
value \
|
||||||
set_statement \
|
set_statement \
|
||||||
where_keys \
|
where_keys \
|
||||||
@ -333,14 +328,14 @@ Update(){
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
while read key value
|
while read key operator value
|
||||||
do
|
do
|
||||||
(( ${#where_statement} )) && where_statement+=( "AND" )
|
(( ${#where_statement} )) && where_statement+=( "AND" )
|
||||||
if [[ $value == NULL ]]
|
if [[ $value == NULL ]]
|
||||||
then
|
then
|
||||||
where_statement+=( "$key is NULL" )
|
where_statement+=( "$key is NULL" )
|
||||||
else
|
else
|
||||||
where_statement+=( "$key="'"'"${value//\"/\\\"}"'"' )
|
where_statement+=( "$key $operator "'"'"${value//\"/\\\"}"'"' )
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo "UPDATE '$table' SET" \
|
echo "UPDATE '$table' SET" \
|
||||||
@ -375,7 +370,7 @@ InsertIfUnset() {
|
|||||||
Select "$table" "$column" < <(
|
Select "$table" "$column" < <(
|
||||||
for key in ${!keys[@]}
|
for key in ${!keys[@]}
|
||||||
do
|
do
|
||||||
echo "${keys[$key]}" "${values[$key]}"
|
echo "${keys[$key]}" = "${values[$key]}"
|
||||||
done
|
done
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -430,7 +425,7 @@ InsertOrUpdate() {
|
|||||||
Select "$table" id < <(
|
Select "$table" id < <(
|
||||||
for key in ${!keys[@]}
|
for key in ${!keys[@]}
|
||||||
do
|
do
|
||||||
echo "${keys[$key]}" "${values[$key]}"
|
echo "${keys[$key]}" = "${values[$key]}"
|
||||||
done
|
done
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -438,7 +433,7 @@ InsertOrUpdate() {
|
|||||||
Update "$table" "$@" < <(
|
Update "$table" "$@" < <(
|
||||||
for key in ${!keys[@]}
|
for key in ${!keys[@]}
|
||||||
do
|
do
|
||||||
echo "${keys[$key]}" "${values[$key]}"
|
echo "${keys[$key]}" = "${values[$key]}"
|
||||||
done
|
done
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
@ -455,27 +450,27 @@ InsertOrUpdate() {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
fi
|
fi
|
||||||
results="${results#* = }"
|
|
||||||
echo "$results"
|
echo "$results"
|
||||||
}
|
}
|
||||||
Delete() {
|
Delete() {
|
||||||
#Delete table < where_key where_value
|
#Delete table < where_key where_operator where_value
|
||||||
# [where_key where_value
|
# [where_key where_operator where_value
|
||||||
# […]]
|
# […]]
|
||||||
local \
|
local \
|
||||||
table="$1" \
|
table="$1" \
|
||||||
key \
|
key \
|
||||||
|
operator \
|
||||||
value \
|
value \
|
||||||
where_statement \
|
where_statement \
|
||||||
results
|
results
|
||||||
while read key value
|
while read key operator value
|
||||||
do
|
do
|
||||||
(( ${#where_statement} )) && where_statement+=( "AND" )
|
(( ${#where_statement} )) && where_statement+=( "AND" )
|
||||||
if [[ $value == NULL ]]
|
if [[ $value == NULL ]]
|
||||||
then
|
then
|
||||||
where_statement+=( "$key is NULL" )
|
where_statement+=( "$key is NULL" )
|
||||||
else
|
else
|
||||||
where_statement+=( "$key="'"'"${value//\"/\\\"}"'"' )
|
where_statement+=( "$key $operator "'"'"${value//\"/\\\"}"'"' )
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo "DELETE from $table WHERE ${where_statement[@]};" >&3
|
echo "DELETE from $table WHERE ${where_statement[@]};" >&3
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user