|
@@ -13,15 +13,20 @@
|
|
|
# See the License for the specific language governing permissions and
|
|
|
# limitations under the License.
|
|
|
|
|
|
-from typing import Any, Dict, List, Optional, Tuple
|
|
|
+from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple
|
|
|
|
|
|
from typing_extensions import TypedDict
|
|
|
|
|
|
from synapse.api.errors import SynapseError
|
|
|
from synapse.storage._base import SQLBaseStore, db_to_json
|
|
|
+from synapse.storage.database import DatabasePool
|
|
|
+from synapse.storage.types import Connection
|
|
|
from synapse.types import JsonDict
|
|
|
from synapse.util import json_encoder
|
|
|
|
|
|
+if TYPE_CHECKING:
|
|
|
+ from synapse.server import HomeServer
|
|
|
+
|
|
|
# The category ID for the "default" category. We don't store as null in the
|
|
|
# database to avoid the fun of null != null
|
|
|
_DEFAULT_CATEGORY_ID = ""
|
|
@@ -35,6 +40,16 @@ class _RoomInGroup(TypedDict):
|
|
|
|
|
|
|
|
|
class GroupServerWorkerStore(SQLBaseStore):
|
|
|
+ def __init__(self, database: DatabasePool, db_conn: Connection, hs: "HomeServer"):
|
|
|
+ database.updates.register_background_index_update(
|
|
|
+ update_name="local_group_updates_index",
|
|
|
+ index_name="local_group_updates_stream_id_index",
|
|
|
+ table="local_group_updates",
|
|
|
+ columns=("stream_id",),
|
|
|
+ unique=True,
|
|
|
+ )
|
|
|
+ super().__init__(database, db_conn, hs)
|
|
|
+
|
|
|
async def get_group(self, group_id: str) -> Optional[Dict[str, Any]]:
|
|
|
return await self.db_pool.simple_select_one(
|
|
|
table="groups",
|