|
@@ -24,7 +24,7 @@ from twisted.enterprise.adbapi import Connection
|
|
|
|
|
|
from synapse.logging.opentracing import log_kv, set_tag, trace
|
|
|
from synapse.storage._base import SQLBaseStore, db_to_json
|
|
|
-from synapse.storage.database import make_in_list_sql_clause
|
|
|
+from synapse.storage.database import DatabasePool, make_in_list_sql_clause
|
|
|
from synapse.storage.types import Cursor
|
|
|
from synapse.types import JsonDict
|
|
|
from synapse.util import json_encoder
|
|
@@ -33,6 +33,7 @@ from synapse.util.iterutils import batch_iter
|
|
|
|
|
|
if TYPE_CHECKING:
|
|
|
from synapse.handlers.e2e_keys import SignatureListItem
|
|
|
+ from synapse.server import HomeServer
|
|
|
|
|
|
|
|
|
@attr.s(slots=True)
|
|
@@ -47,7 +48,20 @@ class DeviceKeyLookupResult:
|
|
|
keys = attr.ib(type=Optional[JsonDict])
|
|
|
|
|
|
|
|
|
-class EndToEndKeyWorkerStore(SQLBaseStore):
|
|
|
+class EndToEndKeyBackgroundStore(SQLBaseStore):
|
|
|
+ def __init__(self, database: DatabasePool, db_conn: Connection, hs: "HomeServer"):
|
|
|
+ super().__init__(database, db_conn, hs)
|
|
|
+
|
|
|
+ self.db_pool.updates.register_background_index_update(
|
|
|
+ "e2e_cross_signing_keys_idx",
|
|
|
+ index_name="e2e_cross_signing_keys_stream_idx",
|
|
|
+ table="e2e_cross_signing_keys",
|
|
|
+ columns=["stream_id"],
|
|
|
+ unique=True,
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+class EndToEndKeyWorkerStore(EndToEndKeyBackgroundStore):
|
|
|
async def get_e2e_device_keys_for_federation_query(
|
|
|
self, user_id: str
|
|
|
) -> Tuple[int, List[JsonDict]]:
|