diff --git a/deploy.sh b/deploy.sh index 81c83c0..a9f4233 100644 --- a/deploy.sh +++ b/deploy.sh @@ -48,7 +48,11 @@ replace_in_sqlite_db() { return 1 fi - echo "Starting replacement of '$OLD_STRING' with '$NEW_STRING' in '$DB_PATH'..." + echo "Starting brute-force replacement of '$OLD_STRING' with '$NEW_STRING' in '$DB_PATH'..." + + # Escape single quotes for SQL + local OLD_STRING_ESC=$(echo "$OLD_STRING" | sed "s/'/''/g") + local NEW_STRING_ESC=$(echo "$NEW_STRING" | sed "s/'/''/g") # Get a list of all tables in the database local TABLES @@ -64,25 +68,18 @@ replace_in_sqlite_db() { # Loop through each column for COLUMN in $COLUMNS; do - # Check if the column is a text type (simplistic check) - local COLUMN_TYPE - COLUMN_TYPE=$(sqlite3 "$DB_PATH" "PRAGMA table_info($TABLE);" | awk -F'|' -v col="$COLUMN" '$2 == col {print $3}') + echo " Processing column: $COLUMN" - # Only proceed if the column type contains 'TEXT' (case-insensitive) - if [[ "$COLUMN_TYPE" =~ [Tt][Ee][Xx][Tt] ]]; then - echo " Updating column: $COLUMN (type: $COLUMN_TYPE)" - - # Perform the replacement - sqlite3 "$DB_PATH" " - UPDATE $TABLE - SET $COLUMN = replace($COLUMN, '$OLD_STRING', '$NEW_STRING') - WHERE $COLUMN LIKE '%$OLD_STRING%'; - " - fi + # Update every cell in the column, casting to TEXT to force string replacement + sqlite3 "$DB_PATH" " + UPDATE $TABLE + SET $COLUMN = replace(CAST($COLUMN AS TEXT), '$OLD_STRING_ESC', '$NEW_STRING_ESC') + WHERE CAST($COLUMN AS TEXT) LIKE '%$OLD_STRING_ESC%'; + " done done - echo "Replacement completed for all text-type columns in '$DB_PATH'." + echo "replacement of '$OLD_STRING' with '$NEW_STRING' completed in '$DB_PATH'." } #example usage: replace_in_sqlite_db "database.sqlite" "Europe/Amsterdam" "UTC" diff --git a/stacks/npm/data/database (1).sqlite b/stacks/npm/data/database (1).sqlite new file mode 100644 index 0000000..6179ea0 Binary files /dev/null and b/stacks/npm/data/database (1).sqlite differ diff --git a/stacks/npm/data/database.sqlite b/stacks/npm/data/database.sqlite index 4921bd3..b9bdfad 100644 Binary files a/stacks/npm/data/database.sqlite and b/stacks/npm/data/database.sqlite differ