mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-01 12:06:08 -04:00
Run black on the rest of the storage module (#4996)
This commit is contained in:
parent
3039d61baf
commit
7efd1d87c2
42 changed files with 2129 additions and 2453 deletions
|
@ -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,16 +1138,14 @@ 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):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue