Improve profile info syncing

This commit is contained in:
Tulir Asokan
2022-02-01 20:51:54 +02:00
parent ecf3a12bd4
commit a55d9ae36a
9 changed files with 234 additions and 105 deletions
+24 -17
View File
@@ -21,7 +21,7 @@ from asyncpg import Record
from attr import dataclass
from yarl import URL
from mautrix.types import SyncToken, UserID
from mautrix.types import ContentURI, SyncToken, UserID
from mautrix.util.async_db import Database
from ..types import TelegramID
@@ -44,6 +44,9 @@ class Puppet:
disable_updates: bool
username: str | None
photo_id: str | None
avatar_url: ContentURI | None
name_set: bool
avatar_set: bool
is_bot: bool | None
is_channel: bool
@@ -62,8 +65,8 @@ class Puppet:
columns: ClassVar[str] = (
"id, is_registered, displayname, displayname_source, displayname_contact, "
"displayname_quality, disable_updates, username, photo_id, is_bot, is_channel, "
"custom_mxid, access_token, next_batch, base_url"
"displayname_quality, disable_updates, username, photo_id, avatar_url, "
"name_set, avatar_set, is_bot, is_channel, custom_mxid, access_token, next_batch, base_url"
)
@classmethod
@@ -103,6 +106,9 @@ class Puppet:
self.disable_updates,
self.username,
self.photo_id,
self.avatar_url,
self.name_set,
self.avatar_set,
self.is_bot,
self.is_channel,
self.custom_mxid,
@@ -112,21 +118,22 @@ class Puppet:
)
async def save(self) -> None:
q = (
"UPDATE puppet "
"SET is_registered=$2, displayname=$3, displayname_source=$4, displayname_contact=$5,"
" displayname_quality=$6, disable_updates=$7, username=$8, photo_id=$9, is_bot=$10,"
" is_channel=$11, custom_mxid=$12, access_token=$13, next_batch=$14, base_url=$15 "
"WHERE id=$1"
)
q = """
UPDATE puppet
SET is_registered=$2, displayname=$3, displayname_source=$4, displayname_contact=$5,
displayname_quality=$6, disable_updates=$7, username=$8, photo_id=$9,
avatar_url=$10, name_set=$11, avatar_set=$12, is_bot=$13, is_channel=$14,
custom_mxid=$15, access_token=$16, next_batch=$17, base_url=$18
WHERE id=$1
"""
await self.db.execute(q, *self._values)
async def insert(self) -> None:
q = (
"INSERT INTO puppet ("
" id, is_registered, displayname, displayname_source, displayname_contact,"
" displayname_quality, disable_updates, username, photo_id, is_bot, is_channel,"
" custom_mxid, access_token, next_batch, base_url"
") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15)"
)
q = """
INSERT INTO puppet (
id, is_registered, displayname, displayname_source, displayname_contact,
displayname_quality, disable_updates, username, photo_id, avatar_url, name_set,
avatar_set, is_bot, is_channel, custom_mxid, access_token, next_batch, base_url
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18)
"""
await self.db.execute(q, *self._values)