diff --git a/synapse/storage/group_server.py b/synapse/storage/group_server.py
index 592d1b4c2a..dce6a43ac1 100644
--- a/synapse/storage/group_server.py
+++ b/synapse/storage/group_server.py
@@ -38,24 +38,22 @@ class GroupServerStore(SQLBaseStore):
"""
return self._simple_update_one(
table="groups",
- keyvalues={
- "group_id": group_id,
- },
- updatevalues={
- "join_policy": join_policy,
- },
+ keyvalues={"group_id": group_id},
+ updatevalues={"join_policy": join_policy},
desc="set_group_join_policy",
)
def get_group(self, group_id):
return self._simple_select_one(
table="groups",
- keyvalues={
- "group_id": group_id,
- },
+ keyvalues={"group_id": group_id},
retcols=(
- "name", "short_description", "long_description",
- "avatar_url", "is_public", "join_policy",
+ "name",
+ "short_description",
+ "long_description",
+ "avatar_url",
+ "is_public",
+ "join_policy",
),
allow_none=True,
desc="get_group",
@@ -64,16 +62,14 @@ class GroupServerStore(SQLBaseStore):
def get_users_in_group(self, group_id, include_private=False):
# TODO: Pagination
- keyvalues = {
- "group_id": group_id,
- }
+ keyvalues = {"group_id": group_id}
if not include_private:
keyvalues["is_public"] = True
return self._simple_select_list(
table="group_users",
keyvalues=keyvalues,
- retcols=("user_id", "is_public", "is_admin",),
+ retcols=("user_id", "is_public", "is_admin"),
desc="get_users_in_group",
)
@@ -82,9 +78,7 @@ class GroupServerStore(SQLBaseStore):
return self._simple_select_onecol(
table="group_invites",
- keyvalues={
- "group_id": group_id,
- },
+ keyvalues={"group_id": group_id},
retcol="user_id",
desc="get_invited_users_in_group",
)
@@ -92,16 +86,14 @@ class GroupServerStore(SQLBaseStore):
def get_rooms_in_group(self, group_id, include_private=False):
# TODO: Pagination
- keyvalues = {
- "group_id": group_id,
- }
+ keyvalues = {"group_id": group_id}
if not include_private:
keyvalues["is_public"] = True
return self._simple_select_list(
table="group_rooms",
keyvalues=keyvalues,
- retcols=("room_id", "is_public",),
+ retcols=("room_id", "is_public"),
desc="get_rooms_in_group",
)
@@ -110,10 +102,9 @@ class GroupServerStore(SQLBaseStore):
Returns ([rooms], [categories])
"""
+
def _get_rooms_for_summary_txn(txn):
- keyvalues = {
- "group_id": group_id,
- }
+ keyvalues = {"group_id": group_id}
if not include_private:
keyvalues["is_public"] = True
@@ -162,18 +153,23 @@ class GroupServerStore(SQLBaseStore):
}
return rooms, categories
- return self.runInteraction(
- "get_rooms_for_summary", _get_rooms_for_summary_txn
- )
+
+ return self.runInteraction("get_rooms_for_summary", _get_rooms_for_summary_txn)
def add_room_to_summary(self, group_id, room_id, category_id, order, is_public):
return self.runInteraction(
- "add_room_to_summary", self._add_room_to_summary_txn,
- group_id, room_id, category_id, order, is_public,
+ "add_room_to_summary",
+ self._add_room_to_summary_txn,
+ group_id,
+ room_id,
+ category_id,
+ order,
+ is_public,
)
- def _add_room_to_summary_txn(self, txn, group_id, room_id, category_id, order,
- is_public):
+ def _add_room_to_summary_txn(
+ self, txn, group_id, room_id, category_id, order, is_public
+ ):
"""Add (or update) room's entry in summary.
Args:
@@ -188,10 +184,7 @@ class GroupServerStore(SQLBaseStore):
room_in_group = self._simple_select_one_onecol_txn(
txn,
table="group_rooms",
- keyvalues={
- "group_id": group_id,
- "room_id": room_id,
- },
+ keyvalues={"group_id": group_id, "room_id": room_id},
retcol="room_id",
allow_none=True,
)
@@ -204,10 +197,7 @@ class GroupServerStore(SQLBaseStore):
cat_exists = self._simple_select_one_onecol_txn(
txn,
table="group_room_categories",
- keyvalues={
- "group_id": group_id,
- "category_id": category_id,
- },
+ keyvalues={"group_id": group_id, "category_id": category_id},
retcol="group_id",
allow_none=True,
)
@@ -218,22 +208,22 @@ class GroupServerStore(SQLBaseStore):
cat_exists = self._simple_select_one_onecol_txn(
txn,
table="group_summary_room_categories",
- keyvalues={
- "group_id": group_id,
- "category_id": category_id,
- },
+ keyvalues={"group_id": group_id, "category_id": category_id},
retcol="group_id",
allow_none=True,
)
if not cat_exists:
# If not, add it with an order larger than all others
- txn.execute("""
+ txn.execute(
+ """
INSERT INTO group_summary_room_categories
(group_id, category_id, cat_order)
SELECT ?, ?, COALESCE(MAX(cat_order), 0) + 1
FROM group_summary_room_categories
WHERE group_id = ? AND category_id = ?
- """, (group_id, category_id, group_id, category_id))
+ """,
+ (group_id, category_id, group_id, category_id),
+ )
existing = self._simple_select_one_txn(
txn,
@@ -243,7 +233,7 @@ class GroupServerStore(SQLBaseStore):
"room_id": room_id,
"category_id": category_id,
},
- retcols=("room_order", "is_public",),
+ retcols=("room_order", "is_public"),
allow_none=True,
)
@@ -253,13 +243,13 @@ class GroupServerStore(SQLBaseStore):
UPDATE group_summary_rooms SET room_order = room_order + 1
WHERE group_id = ? AND category_id = ? AND room_order >= ?
"""
- txn.execute(sql, (group_id, category_id, order,))
+ txn.execute(sql, (group_id, category_id, order))
elif not existing:
sql = """
SELECT COALESCE(MAX(room_order), 0) + 1 FROM group_summary_rooms
WHERE group_id = ? AND category_id = ?
"""
- txn.execute(sql, (group_id, category_id,))
+ txn.execute(sql, (group_id, category_id))
order, = txn.fetchone()
if existing:
@@ -312,29 +302,26 @@ class GroupServerStore(SQLBaseStore):
def get_group_categories(self, group_id):
rows = yield self._simple_select_list(
table="group_room_categories",
- keyvalues={
- "group_id": group_id,
- },
+ keyvalues={"group_id": group_id},
retcols=("category_id", "is_public", "profile"),
desc="get_group_categories",
)
- defer.returnValue({
- row["category_id"]: {
- "is_public": row["is_public"],
- "profile": json.loads(row["profile"]),
+ defer.returnValue(
+ {
+ row["category_id"]: {
+ "is_public": row["is_public"],
+ "profile": json.loads(row["profile"]),
+ }
+ for row in rows
}
- for row in rows
- })
+ )
@defer.inlineCallbacks
def get_group_category(self, group_id, category_id):
category = yield self._simple_select_one(
table="group_room_categories",
- keyvalues={
- "group_id": group_id,
- "category_id": category_id,
- },
+ keyvalues={"group_id": group_id, "category_id": category_id},
retcols=("is_public", "profile"),
desc="get_group_category",
)
@@ -361,10 +348,7 @@ class GroupServerStore(SQLBaseStore):
return self._simple_upsert(
table="group_room_categories",
- keyvalues={
- "group_id": group_id,
- "category_id": category_id,
- },
+ keyvalues={"group_id": group_id, "category_id": category_id},
values=update_values,
insertion_values=insertion_values,
desc="upsert_group_category",
@@ -373,10 +357,7 @@ class GroupServerStore(SQLBaseStore):
def remove_group_category(self, group_id, category_id):
return self._simple_delete(
table="group_room_categories",
- keyvalues={
- "group_id": group_id,
- "category_id": category_id,
- },
+ keyvalues={"group_id": group_id, "category_id": category_id},
desc="remove_group_category",
)
@@ -384,29 +365,26 @@ class GroupServerStore(SQLBaseStore):
def get_group_roles(self, group_id):
rows = yield self._simple_select_list(
table="group_roles",
- keyvalues={
- "group_id": group_id,
- },
+ keyvalues={"group_id": group_id},
retcols=("role_id", "is_public", "profile"),
desc="get_group_roles",
)
- defer.returnValue({
- row["role_id"]: {
- "is_public": row["is_public"],
- "profile": json.loads(row["profile"]),
+ defer.returnValue(
+ {
+ row["role_id"]: {
+ "is_public": row["is_public"],
+ "profile": json.loads(row["profile"]),
+ }
+ for row in rows
}
- for row in rows
- })
+ )
@defer.inlineCallbacks
def get_group_role(self, group_id, role_id):
role = yield self._simple_select_one(
table="group_roles",
- keyvalues={
- "group_id": group_id,
- "role_id": role_id,
- },
+ keyvalues={"group_id": group_id, "role_id": role_id},
retcols=("is_public", "profile"),
desc="get_group_role",
)
@@ -433,10 +411,7 @@ class GroupServerStore(SQLBaseStore):
return self._simple_upsert(
table="group_roles",
- keyvalues={
- "group_id": group_id,
- "role_id": role_id,
- },
+ keyvalues={"group_id": group_id, "role_id": role_id},
values=update_values,
insertion_values=insertion_values,
desc="upsert_group_role",
@@ -445,21 +420,24 @@ class GroupServerStore(SQLBaseStore):
def remove_group_role(self, group_id, role_id):
return self._simple_delete(
table="group_roles",
- keyvalues={
- "group_id": group_id,
- "role_id": role_id,
- },
+ keyvalues={"group_id": group_id, "role_id": role_id},
desc="remove_group_role",
)
def add_user_to_summary(self, group_id, user_id, role_id, order, is_public):
return self.runInteraction(
- "add_user_to_summary", self._add_user_to_summary_txn,
- group_id, user_id, role_id, order, is_public,
+ "add_user_to_summary",
+ self._add_user_to_summary_txn,
+ group_id,
+ user_id,
+ role_id,
+ order,
+ is_public,
)
- def _add_user_to_summary_txn(self, txn, group_id, user_id, role_id, order,
- is_public):
+ def _add_user_to_summary_txn(
+ self, txn, group_id, user_id, role_id, order, is_public
+ ):
"""Add (or update) user's entry in summary.
Args:
@@ -474,10 +452,7 @@ class GroupServerStore(SQLBaseStore):
user_in_group = self._simple_select_one_onecol_txn(
txn,
table="group_users",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
retcol="user_id",
allow_none=True,
)
@@ -490,10 +465,7 @@ class GroupServerStore(SQLBaseStore):
role_exists = self._simple_select_one_onecol_txn(
txn,
table="group_roles",
- keyvalues={
- "group_id": group_id,
- "role_id": role_id,
- },
+ keyvalues={"group_id": group_id, "role_id": role_id},
retcol="group_id",
allow_none=True,
)
@@ -504,32 +476,28 @@ class GroupServerStore(SQLBaseStore):
role_exists = self._simple_select_one_onecol_txn(
txn,
table="group_summary_roles",
- keyvalues={
- "group_id": group_id,
- "role_id": role_id,
- },
+ keyvalues={"group_id": group_id, "role_id": role_id},
retcol="group_id",
allow_none=True,
)
if not role_exists:
# If not, add it with an order larger than all others
- txn.execute("""
+ txn.execute(
+ """
INSERT INTO group_summary_roles
(group_id, role_id, role_order)
SELECT ?, ?, COALESCE(MAX(role_order), 0) + 1
FROM group_summary_roles
WHERE group_id = ? AND role_id = ?
- """, (group_id, role_id, group_id, role_id))
+ """,
+ (group_id, role_id, group_id, role_id),
+ )
existing = self._simple_select_one_txn(
txn,
table="group_summary_users",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- "role_id": role_id,
- },
- retcols=("user_order", "is_public",),
+ keyvalues={"group_id": group_id, "user_id": user_id, "role_id": role_id},
+ retcols=("user_order", "is_public"),
allow_none=True,
)
@@ -539,13 +507,13 @@ class GroupServerStore(SQLBaseStore):
UPDATE group_summary_users SET user_order = user_order + 1
WHERE group_id = ? AND role_id = ? AND user_order >= ?
"""
- txn.execute(sql, (group_id, role_id, order,))
+ txn.execute(sql, (group_id, role_id, order))
elif not existing:
sql = """
SELECT COALESCE(MAX(user_order), 0) + 1 FROM group_summary_users
WHERE group_id = ? AND role_id = ?
"""
- txn.execute(sql, (group_id, role_id,))
+ txn.execute(sql, (group_id, role_id))
order, = txn.fetchone()
if existing:
@@ -586,11 +554,7 @@ class GroupServerStore(SQLBaseStore):
return self._simple_delete(
table="group_summary_users",
- keyvalues={
- "group_id": group_id,
- "role_id": role_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "role_id": role_id, "user_id": user_id},
desc="remove_user_from_summary",
)
@@ -599,10 +563,9 @@ class GroupServerStore(SQLBaseStore):
Returns ([users], [roles])
"""
+
def _get_users_for_summary_txn(txn):
- keyvalues = {
- "group_id": group_id,
- }
+ keyvalues = {"group_id": group_id}
if not include_private:
keyvalues["is_public"] = True
@@ -651,6 +614,7 @@ class GroupServerStore(SQLBaseStore):
}
return users, roles
+
return self.runInteraction(
"get_users_for_summary_by_role", _get_users_for_summary_txn
)
@@ -658,10 +622,7 @@ class GroupServerStore(SQLBaseStore):
def is_user_in_group(self, user_id, group_id):
return self._simple_select_one_onecol(
table="group_users",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
retcol="user_id",
allow_none=True,
desc="is_user_in_group",
@@ -670,10 +631,7 @@ class GroupServerStore(SQLBaseStore):
def is_user_admin_in_group(self, group_id, user_id):
return self._simple_select_one_onecol(
table="group_users",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
retcol="is_admin",
allow_none=True,
desc="is_user_admin_in_group",
@@ -684,10 +642,7 @@ class GroupServerStore(SQLBaseStore):
"""
return self._simple_insert(
table="group_invites",
- values={
- "group_id": group_id,
- "user_id": user_id,
- },
+ values={"group_id": group_id, "user_id": user_id},
desc="add_group_invite",
)
@@ -696,10 +651,7 @@ class GroupServerStore(SQLBaseStore):
"""
return self._simple_select_one_onecol(
table="group_invites",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
retcol="user_id",
desc="is_user_invited_to_local_group",
allow_none=True,
@@ -718,14 +670,12 @@ class GroupServerStore(SQLBaseStore):
Returns an empty dict if the user is not join/invite/etc
"""
+
def _get_users_membership_in_group_txn(txn):
row = self._simple_select_one_txn(
txn,
table="group_users",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
retcols=("is_admin", "is_public"),
allow_none=True,
)
@@ -740,27 +690,29 @@ class GroupServerStore(SQLBaseStore):
row = self._simple_select_one_onecol_txn(
txn,
table="group_invites",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
retcol="user_id",
allow_none=True,
)
if row:
- return {
- "membership": "invite",
- }
+ return {"membership": "invite"}
return {}
return self.runInteraction(
- "get_users_membership_info_in_group", _get_users_membership_in_group_txn,
+ "get_users_membership_info_in_group", _get_users_membership_in_group_txn
)
- def add_user_to_group(self, group_id, user_id, is_admin=False, is_public=True,
- local_attestation=None, remote_attestation=None):
+ def add_user_to_group(
+ self,
+ group_id,
+ user_id,
+ is_admin=False,
+ is_public=True,
+ local_attestation=None,
+ remote_attestation=None,
+ ):
"""Add a user to the group server.
Args:
@@ -774,6 +726,7 @@ class GroupServerStore(SQLBaseStore):
remote_attestation (dict): The attestation given to GS by remote
server. Optional if the user and group are on the same server
"""
+
def _add_user_to_group_txn(txn):
self._simple_insert_txn(
txn,
@@ -789,10 +742,7 @@ class GroupServerStore(SQLBaseStore):
self._simple_delete_txn(
txn,
table="group_invites",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
)
if local_attestation:
@@ -817,75 +767,52 @@ class GroupServerStore(SQLBaseStore):
},
)
- return self.runInteraction(
- "add_user_to_group", _add_user_to_group_txn
- )
+ return self.runInteraction("add_user_to_group", _add_user_to_group_txn)
def remove_user_from_group(self, group_id, user_id):
def _remove_user_from_group_txn(txn):
self._simple_delete_txn(
txn,
table="group_users",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
)
self._simple_delete_txn(
txn,
table="group_invites",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
)
self._simple_delete_txn(
txn,
table="group_attestations_renewals",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
)
self._simple_delete_txn(
txn,
table="group_attestations_remote",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
)
self._simple_delete_txn(
txn,
table="group_summary_users",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
)
- return self.runInteraction("remove_user_from_group", _remove_user_from_group_txn)
+
+ return self.runInteraction(
+ "remove_user_from_group", _remove_user_from_group_txn
+ )
def add_room_to_group(self, group_id, room_id, is_public):
return self._simple_insert(
table="group_rooms",
- values={
- "group_id": group_id,
- "room_id": room_id,
- "is_public": is_public,
- },
+ values={"group_id": group_id, "room_id": room_id, "is_public": is_public},
desc="add_room_to_group",
)
def update_room_in_group_visibility(self, group_id, room_id, is_public):
return self._simple_update(
table="group_rooms",
- keyvalues={
- "group_id": group_id,
- "room_id": room_id,
- },
- updatevalues={
- "is_public": is_public,
- },
+ keyvalues={"group_id": group_id, "room_id": room_id},
+ updatevalues={"is_public": is_public},
desc="update_room_in_group_visibility",
)
@@ -894,22 +821,17 @@ class GroupServerStore(SQLBaseStore):
self._simple_delete_txn(
txn,
table="group_rooms",
- keyvalues={
- "group_id": group_id,
- "room_id": room_id,
- },
+ keyvalues={"group_id": group_id, "room_id": room_id},
)
self._simple_delete_txn(
txn,
table="group_summary_rooms",
- keyvalues={
- "group_id": group_id,
- "room_id": room_id,
- },
+ keyvalues={"group_id": group_id, "room_id": room_id},
)
+
return self.runInteraction(
- "remove_room_from_group", _remove_room_from_group_txn,
+ "remove_room_from_group", _remove_room_from_group_txn
)
def get_publicised_groups_for_user(self, user_id):
@@ -917,11 +839,7 @@ class GroupServerStore(SQLBaseStore):
"""
return self._simple_select_onecol(
table="local_group_membership",
- keyvalues={
- "user_id": user_id,
- "membership": "join",
- "is_publicised": True,
- },
+ keyvalues={"user_id": user_id, "membership": "join", "is_publicised": True},
retcol="group_id",
desc="get_publicised_groups_for_user",
)
@@ -931,23 +849,23 @@ class GroupServerStore(SQLBaseStore):
"""
return self._simple_update_one(
table="local_group_membership",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
- updatevalues={
- "is_publicised": publicise,
- },
- desc="update_group_publicity"
+ keyvalues={"group_id": group_id, "user_id": user_id},
+ updatevalues={"is_publicised": publicise},
+ desc="update_group_publicity",
)
@defer.inlineCallbacks
- def register_user_group_membership(self, group_id, user_id, membership,
- is_admin=False, content={},
- local_attestation=None,
- remote_attestation=None,
- is_publicised=False,
- ):
+ def register_user_group_membership(
+ self,
+ group_id,
+ user_id,
+ membership,
+ is_admin=False,
+ content={},
+ local_attestation=None,
+ remote_attestation=None,
+ is_publicised=False,
+ ):
"""Registers that a local user is a member of a (local or remote) group.
Args:
@@ -962,15 +880,13 @@ class GroupServerStore(SQLBaseStore):
remote_attestation (dict): If remote group then store the remote
attestation from the group, else None.
"""
+
def _register_user_group_membership_txn(txn, next_id):
# TODO: Upsert?
self._simple_delete_txn(
txn,
table="local_group_membership",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
)
self._simple_insert_txn(
txn,
@@ -993,8 +909,10 @@ class GroupServerStore(SQLBaseStore):
"group_id": group_id,
"user_id": user_id,
"type": "membership",
- "content": json.dumps({"membership": membership, "content": content}),
- }
+ "content": json.dumps(
+ {"membership": membership, "content": content}
+ ),
+ },
)
self._group_updates_stream_cache.entity_has_changed(user_id, next_id)
@@ -1009,7 +927,7 @@ class GroupServerStore(SQLBaseStore):
"group_id": group_id,
"user_id": user_id,
"valid_until_ms": local_attestation["valid_until_ms"],
- }
+ },
)
if remote_attestation:
self._simple_insert_txn(
@@ -1020,24 +938,18 @@ class GroupServerStore(SQLBaseStore):
"user_id": user_id,
"valid_until_ms": remote_attestation["valid_until_ms"],
"attestation_json": json.dumps(remote_attestation),
- }
+ },
)
else:
self._simple_delete_txn(
txn,
table="group_attestations_renewals",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
)
self._simple_delete_txn(
txn,
table="group_attestations_remote",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
)
return next_id
@@ -1045,13 +957,15 @@ class GroupServerStore(SQLBaseStore):
with self._group_updates_id_gen.get_next() as next_id:
res = yield self.runInteraction(
"register_user_group_membership",
- _register_user_group_membership_txn, next_id,
+ _register_user_group_membership_txn,
+ next_id,
)
defer.returnValue(res)
@defer.inlineCallbacks
- def create_group(self, group_id, user_id, name, avatar_url, short_description,
- long_description,):
+ def create_group(
+ self, group_id, user_id, name, avatar_url, short_description, long_description
+ ):
yield self._simple_insert(
table="groups",
values={
@@ -1066,12 +980,10 @@ class GroupServerStore(SQLBaseStore):
)
@defer.inlineCallbacks
- def update_group_profile(self, group_id, profile,):
+ def update_group_profile(self, group_id, profile):
yield self._simple_update_one(
table="groups",
- keyvalues={
- "group_id": group_id,
- },
+ keyvalues={"group_id": group_id},
updatevalues=profile,
desc="update_group_profile",
)
@@ -1079,6 +991,7 @@ class GroupServerStore(SQLBaseStore):
def get_attestations_need_renewals(self, valid_until_ms):
"""Get all attestations that need to be renewed until givent time
"""
+
def _get_attestations_need_renewals_txn(txn):
sql = """
SELECT group_id, user_id FROM group_attestations_renewals
@@ -1086,6 +999,7 @@ class GroupServerStore(SQLBaseStore):
"""
txn.execute(sql, (valid_until_ms,))
return self.cursor_to_dict(txn)
+
return self.runInteraction(
"get_attestations_need_renewals", _get_attestations_need_renewals_txn
)
@@ -1095,13 +1009,8 @@ class GroupServerStore(SQLBaseStore):
"""
return self._simple_update_one(
table="group_attestations_renewals",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
- updatevalues={
- "valid_until_ms": attestation["valid_until_ms"],
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
+ updatevalues={"valid_until_ms": attestation["valid_until_ms"]},
desc="update_attestation_renewal",
)
@@ -1110,13 +1019,10 @@ class GroupServerStore(SQLBaseStore):
"""
return self._simple_update_one(
table="group_attestations_remote",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
updatevalues={
"valid_until_ms": attestation["valid_until_ms"],
- "attestation_json": json.dumps(attestation)
+ "attestation_json": json.dumps(attestation),
},
desc="update_remote_attestion",
)
@@ -1132,10 +1038,7 @@ class GroupServerStore(SQLBaseStore):
"""
return self._simple_delete(
table="group_attestations_renewals",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
desc="remove_attestation_renewal",
)
@@ -1146,10 +1049,7 @@ class GroupServerStore(SQLBaseStore):
"""
row = yield self._simple_select_one(
table="group_attestations_remote",
- keyvalues={
- "group_id": group_id,
- "user_id": user_id,
- },
+ keyvalues={"group_id": group_id, "user_id": user_id},
retcols=("valid_until_ms", "attestation_json"),
desc="get_remote_attestation",
allow_none=True,
@@ -1164,10 +1064,7 @@ class GroupServerStore(SQLBaseStore):
def get_joined_groups(self, user_id):
return self._simple_select_onecol(
table="local_group_membership",
- keyvalues={
- "user_id": user_id,
- "membership": "join",
- },
+ keyvalues={"user_id": user_id, "membership": "join"},
retcol="group_id",
desc="get_joined_groups",
)
@@ -1181,7 +1078,7 @@ class GroupServerStore(SQLBaseStore):
WHERE user_id = ? AND membership != 'leave'
AND stream_id <= ?
"""
- txn.execute(sql, (user_id, now_token,))
+ txn.execute(sql, (user_id, now_token))
return [
{
"group_id": row[0],
@@ -1191,14 +1088,15 @@ class GroupServerStore(SQLBaseStore):
}
for row in txn
]
+
return self.runInteraction(
- "get_all_groups_for_user", _get_all_groups_for_user_txn,
+ "get_all_groups_for_user", _get_all_groups_for_user_txn
)
def get_groups_changes_for_user(self, user_id, from_token, to_token):
from_token = int(from_token)
has_changed = self._group_updates_stream_cache.has_entity_changed(
- user_id, from_token,
+ user_id, from_token
)
if not has_changed:
return []
@@ -1210,21 +1108,25 @@ class GroupServerStore(SQLBaseStore):
INNER JOIN local_group_membership USING (group_id, user_id)
WHERE user_id = ? AND ? < stream_id AND stream_id <= ?
"""
- txn.execute(sql, (user_id, from_token, to_token,))
- return [{
- "group_id": group_id,
- "membership": membership,
- "type": gtype,
- "content": json.loads(content_json),
- } for group_id, membership, gtype, content_json in txn]
+ txn.execute(sql, (user_id, from_token, to_token))
+ return [
+ {
+ "group_id": group_id,
+ "membership": membership,
+ "type": gtype,
+ "content": json.loads(content_json),
+ }
+ for group_id, membership, gtype, content_json in txn
+ ]
+
return self.runInteraction(
- "get_groups_changes_for_user", _get_groups_changes_for_user_txn,
+ "get_groups_changes_for_user", _get_groups_changes_for_user_txn
)
def get_all_groups_changes(self, from_token, to_token, limit):
from_token = int(from_token)
has_changed = self._group_updates_stream_cache.has_any_entity_changed(
- from_token,
+ from_token
)
if not has_changed:
return []
@@ -1236,17 +1138,52 @@ class GroupServerStore(SQLBaseStore):
WHERE ? < stream_id AND stream_id <= ?
LIMIT ?
"""
- txn.execute(sql, (from_token, to_token, limit,))
- return [(
- stream_id,
- group_id,
- user_id,
- gtype,
- json.loads(content_json),
- ) for stream_id, group_id, user_id, gtype, content_json in txn]
+ txn.execute(sql, (from_token, to_token, limit))
+ return [
+ (stream_id, group_id, user_id, gtype, json.loads(content_json))
+ for stream_id, group_id, user_id, gtype, content_json in txn
+ ]
+
return self.runInteraction(
- "get_all_groups_changes", _get_all_groups_changes_txn,
+ "get_all_groups_changes", _get_all_groups_changes_txn
)
def get_group_stream_token(self):
return self._group_updates_id_gen.get_current_token()
+
+ def delete_group(self, group_id):
+ """Deletes a group fully from the database.
+
+ Args:
+ group_id (str)
+
+ Returns:
+ Deferred
+ """
+
+ def _delete_group_txn(txn):
+ tables = [
+ "groups",
+ "group_users",
+ "group_invites",
+ "group_rooms",
+ "group_summary_rooms",
+ "group_summary_room_categories",
+ "group_room_categories",
+ "group_summary_users",
+ "group_summary_roles",
+ "group_roles",
+ "group_attestations_renewals",
+ "group_attestations_remote",
+ ]
+
+ for table in tables:
+ self._simple_delete_txn(
+ txn,
+ table=table,
+ keyvalues={"group_id": group_id},
+ )
+
+ return self.runInteraction(
+ "delete_group", _delete_group_txn
+ )
|