diff --git a/basic_setup/delete-rule.sh b/basic_setup/delete-rule.sh index 78d58e7..071d02c 100755 --- a/basic_setup/delete-rule.sh +++ b/basic_setup/delete-rule.sh @@ -34,22 +34,34 @@ fi # Wenn Flags gesetzt: Update statt Delete if [ "$OOO" = true ] || [ "$FORWARD" = true ]; then # Update-Ausdruck bauen - UPDATE_EXPR="REMOVE" - ATTR_NAMES="" - ATTR_VALUES="" + SET_EXPR="" + REMOVE_EXPR="" + ATTR_VALUES_JSON='{}' if [ "$OOO" = true ]; then - UPDATE_EXPR="$UPDATE_EXPR ooo_message, ooo_content_type" - UPDATE_EXPR="$UPDATE_EXPR SET ooo_active = :false" - ATTR_VALUES="$ATTR_VALUES, :false={'BOOL': false}" + SET_EXPR="$SET_EXPR ooo_active = :false" + REMOVE_EXPR="$REMOVE_EXPR ooo_message, ooo_content_type" + ATTR_VALUES_JSON=$(echo "$ATTR_VALUES_JSON" | jq '. + {":false": {"BOOL": false}}') fi if [ "$FORWARD" = true ]; then - if [ -n "$UPDATE_EXPR" ] && [ "$UPDATE_EXPR" != "REMOVE" ]; then - UPDATE_EXPR="$UPDATE_EXPR," + if [ -n "$SET_EXPR" ]; then + SET_EXPR="$SET_EXPR," fi - UPDATE_EXPR="$UPDATE_EXPR SET forwards = :empty_list" - ATTR_VALUES="$ATTR_VALUES, :empty_list={'L': []}" + SET_EXPR="$SET_EXPR forwards = :empty_list" + ATTR_VALUES_JSON=$(echo "$ATTR_VALUES_JSON" | jq '. + {":empty_list": {"L": []}}') + fi + + # Update-Expression zusammenbauen + UPDATE_EXPR="" + if [ -n "$SET_EXPR" ]; then + UPDATE_EXPR="SET $SET_EXPR" + fi + if [ -n "$REMOVE_EXPR" ]; then + if [ -n "$UPDATE_EXPR" ]; then + UPDATE_EXPR="$UPDATE_EXPR " + fi + UPDATE_EXPR="$UPDATE_EXPR REMOVE ${REMOVE_EXPR#,}" # Entferne führendes Komma in REMOVE fi # Update-Item ausführen (nur wenn Regel existiert) @@ -57,7 +69,7 @@ if [ "$OOO" = true ] || [ "$FORWARD" = true ]; then --table-name email-rules \ --key '{"email_address": {"S": "'"$EMAIL"'"}}' \ --update-expression "$UPDATE_EXPR" \ - --expression-attribute-values '{'"${ATTR_VALUES:1}"'}' \ + --expression-attribute-values "$ATTR_VALUES_JSON" \ --region us-east-2 \ --condition-expression "attribute_exists(email_address)" # Vermeide Fehler, wenn nicht existent