Port the push rule classes to Rust. (#13768)

This commit is contained in:
Erik Johnston 2022-09-20 12:10:31 +01:00 committed by GitHub
parent c802ef1411
commit 42d261c32f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 930 additions and 615 deletions

View file

@ -30,9 +30,8 @@ from typing import (
from synapse.api.errors import StoreError
from synapse.config.homeserver import ExperimentalConfig
from synapse.push.baserules import FilteredPushRules, PushRule, compile_push_rules
from synapse.replication.slave.storage._slaved_id_tracker import SlavedIdTracker
from synapse.storage._base import SQLBaseStore, db_to_json
from synapse.storage._base import SQLBaseStore
from synapse.storage.database import (
DatabasePool,
LoggingDatabaseConnection,
@ -51,6 +50,7 @@ from synapse.storage.util.id_generators import (
IdGenerator,
StreamIdGenerator,
)
from synapse.synapse_rust.push import FilteredPushRules, PushRule, PushRules
from synapse.types import JsonDict
from synapse.util import json_encoder
from synapse.util.caches.descriptors import cached, cachedList
@ -72,18 +72,25 @@ def _load_rules(
"""
ruleslist = [
PushRule(
PushRule.from_db(
rule_id=rawrule["rule_id"],
priority_class=rawrule["priority_class"],
conditions=db_to_json(rawrule["conditions"]),
actions=db_to_json(rawrule["actions"]),
conditions=rawrule["conditions"],
actions=rawrule["actions"],
)
for rawrule in rawrules
]
push_rules = compile_push_rules(ruleslist)
push_rules = PushRules(
ruleslist,
)
filtered_rules = FilteredPushRules(push_rules, enabled_map, experimental_config)
filtered_rules = FilteredPushRules(
push_rules,
enabled_map,
msc3786_enabled=experimental_config.msc3786_enabled,
msc3772_enabled=experimental_config.msc3772_enabled,
)
return filtered_rules
@ -845,7 +852,7 @@ class PushRuleStore(PushRulesWorkerStore):
user_push_rules = await self.get_push_rules_for_user(user_id)
# Get rules relating to the old room and copy them to the new room
for rule, enabled in user_push_rules:
for rule, enabled in user_push_rules.rules():
if not enabled:
continue