diff options
author | reivilibre <38398653+reivilibre@users.noreply.github.com> | 2020-09-09 11:39:39 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-09 11:39:39 +0100 |
commit | a5370072b53e7ea3ebbd9404ee4133508c2d55b2 (patch) | |
tree | 156082100a1edaf6199462623702b6d3e5cffcbf /synapse/storage/databases/main/schema | |
parent | Add types to async_helpers (#8260) (diff) | |
download | synapse-a5370072b53e7ea3ebbd9404ee4133508c2d55b2.tar.xz |
Don't remember `enabled` of deleted push rules and properly return 404 for missing push rules in `.../actions` and `.../enabled` (#7796)
Signed-off-by: Olivier Wilkinson (reivilibre) <olivier@librepush.net> Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Diffstat (limited to 'synapse/storage/databases/main/schema')
-rw-r--r-- | synapse/storage/databases/main/schema/delta/58/10_pushrules_enabled_delete_obsolete.sql | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/synapse/storage/databases/main/schema/delta/58/10_pushrules_enabled_delete_obsolete.sql b/synapse/storage/databases/main/schema/delta/58/10_pushrules_enabled_delete_obsolete.sql new file mode 100644 index 0000000000..847aebd85e --- /dev/null +++ b/synapse/storage/databases/main/schema/delta/58/10_pushrules_enabled_delete_obsolete.sql @@ -0,0 +1,28 @@ +/* Copyright 2020 The Matrix.org Foundation C.I.C. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + Delete stuck 'enabled' bits that correspond to deleted or non-existent push rules. + We ignore rules that are server-default rules because they are not defined + in the `push_rules` table. +**/ + +DELETE FROM push_rules_enable WHERE + rule_id NOT LIKE 'global/%/.m.rule.%' + AND NOT EXISTS ( + SELECT 1 FROM push_rules + WHERE push_rules.user_name = push_rules_enable.user_name + AND push_rules.rule_id = push_rules_enable.rule_id + ); |