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