@@ -34,11 +34,20 @@ spec:
3434 # safely; combined with snapshot.mode=never it removes out-of-order/replay
3535 # regressions. Other tables keep their default primary-key based message key.
3636 message.key.columns : ' public.tidepool_user_activity_event:user_id'
37- transforms : ' filter'
37+ transforms : ' filter,user_activity_filter,filter_user_attr '
3838 transforms.filter.type : ' io.debezium.transforms.Filter'
3939 transforms.filter.language : ' jsr223.groovy'
40- transforms.filter.topic.regex : ' .+\.public.(user_entity|keycloak_role|tidepool_user_activity_event )'
40+ transforms.filter.topic.regex : ' .+\.public.(user_entity|keycloak_role)'
4141 transforms.filter.condition : " value.op && (((value.op == 'r' || value.op == 'c' || value.op == 'u') && (value.after && value.after.realm_id && value.after.realm_id == '{{ $realm }}')) || (value.op == 'd'))"
42+ # Realm filter scoped to the user-activity outbox only. Keeps inserts (and any
43+ # snapshot reads/updates) for the configured realm and drops everything else,
44+ # including pruning deletes (their `after` is null, so they fail the check) —
45+ # the clinic-worker consumer ignores deletes anyway. Records on other topics do
46+ # not match this regex and pass through untouched.
47+ transforms.user_activity_filter.type : ' io.debezium.transforms.Filter'
48+ transforms.user_activity_filter.language : ' jsr223.groovy'
49+ transforms.user_activity_filter.topic.regex : ' .+\.public.tidepool_user_activity_event'
50+ transforms.user_activity_filter.condition : " value.op && (value.op == 'r' || value.op == 'c' || value.op == 'u') && value.after && value.after.realm_id && value.after.realm_id == '{{ $realm }}'"
4251 transforms.filter_user_attr.type : ' io.debezium.transforms.Filter'
4352 transforms.filter_user_attr.language : ' jsr223.groovy'
4453 transforms.filter_user_attr.topic.regex : ' .+\.public.(user_attribute)'
0 commit comments