diff --git a/atom b/atom index 01b32b1..0cb4175 100755 --- a/atom +++ b/atom @@ -38,6 +38,8 @@ declare -r \ \ oldIFS="$IFS" +shopt -s extglob + #parse arguments OPTERR=0 while getopts ':c:l:T:F:hD' opt @@ -273,7 +275,7 @@ openDatabase() { fi sqlite3 "$database" < $schema fi - sqlite3 "$database" \ + sqlite3 -bail "$database" \ < "$tempdir/sqlite.in" \ > "$tempdir/sqlite.out" & exec 3> "$tempdir"/sqlite.in @@ -346,12 +348,17 @@ Insert() { (( ${#insert_keys} )) && insert_keys+="," insert_keys+='`'"$key"'`' (( ${#insert_values} )) && insert_values+="," - if [[ $value == NULL ]] - then - insert_values+="NULL" - else - insert_values+='"'"${value//\"/\"\"}"'"' - fi + case $value in + 'NULL') + insert_values+="NULL" + ;; + +([0-9])?(.+([0-9]))) + insert_values+=$value + ;; + *) + insert_values+='"'"${value//\"/\"\"}"'"' + ;; + esac done echo "INSERT INTO $table" \ "( $insert_keys )" \ @@ -389,7 +396,17 @@ Update(){ what=value ;; value) - set_statement="${set_statement}="'"'"${argument//\"/\"\"}"'"' + case $argument in + 'NULL') + set_statement+=" is NULL" + ;; + +([0-9])?(.+([0-9]))) + set_statement+=" = $argument" + ;; + *) + set_statement+=" = "'"'"${argument//\"/\"\"}"'"' + ;; + esac what=key ;; esac @@ -397,12 +414,17 @@ Update(){ while read key operator value do (( ${#where_statement} )) && where_statement+=( "AND" ) - if [[ $value == NULL ]] - then - where_statement+=( "$key is NULL" ) - else - where_statement+=( "$key $operator "'"'"${value//\"/\"\"}"'"' ) - fi + case $value in + 'NULL') + where_statement+=( "$key is NULL" ) + ;; + +([0-9.])) + where_statement+=( "$key $operator $value" ) + ;; + *) + where_statement+=( "$key $operator "'"'"${value//\"/\"\"}"'"' ) + ;; + esac done echo "UPDATE '$table' SET" \ "$set_statement" \