fix(backend): group title changes found by enrichment are recorded, enrichment and syncs skip unchanged profiles
This commit is contained in:
1 parent
efc431c969
commit
aa41bbbc74
6 files changed
+77
-110
No files matched your search
@@ -7,7 +7,23 @@ INSERT INTO chat_history
|
||||
(account_id, chat_id, message_id, event, title, photo_unique_id, actor_id,
|
||||
ts, raw)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::jsonb)
|
||||
ON CONFLICT (account_id, chat_id, message_id) DO NOTHING
|
||||
ON CONFLICT DO NOTHING
|
||||
"""
|
||||
|
||||
_INSERT_CHAT_META = """
|
||||
INSERT INTO chat_history
|
||||
(account_id, chat_id, message_id, event, title, photo_unique_id, ts, raw)
|
||||
SELECT $1, $2, $3, 'meta', $4::text, $5::text, $6, $7::jsonb
|
||||
WHERE ($4::text, $5::text) IS DISTINCT FROM (
|
||||
(SELECT title FROM chat_history
|
||||
WHERE account_id = $1 AND chat_id = $2 AND event IN ('meta', 'title')
|
||||
ORDER BY ts DESC LIMIT 1),
|
||||
(SELECT photo_unique_id FROM chat_history
|
||||
WHERE account_id = $1 AND chat_id = $2
|
||||
AND event IN ('meta', 'photo', 'photo_deleted')
|
||||
ORDER BY ts DESC LIMIT 1)
|
||||
)
|
||||
ON CONFLICT DO NOTHING
|
||||
"""
|
||||
|
||||
_INSERT_MEMBERSHIP = """
|
||||
@@ -19,13 +35,14 @@ ON CONFLICT (account_id, chat_id, message_id, user_id) DO NOTHING
|
||||
|
||||
_LATEST_TITLE = """
|
||||
SELECT title FROM chat_history
|
||||
WHERE account_id = $1 AND chat_id = $2 AND title IS NOT NULL
|
||||
WHERE account_id = $1 AND chat_id = $2 AND event IN ('meta', 'title')
|
||||
ORDER BY ts DESC LIMIT 1
|
||||
"""
|
||||
|
||||
_LATEST_PHOTO = """
|
||||
SELECT photo_unique_id FROM chat_history
|
||||
WHERE account_id = $1 AND chat_id = $2 AND photo_unique_id IS NOT NULL
|
||||
WHERE account_id = $1 AND chat_id = $2
|
||||
AND event IN ('meta', 'photo', 'photo_deleted')
|
||||
ORDER BY ts DESC LIMIT 1
|
||||
"""
|
||||
|
||||
@@ -64,6 +81,29 @@ async def insert_chat_history( # noqa: PLR0913
|
||||
)
|
||||
|
||||
|
||||
async def record_chat_meta( # noqa: PLR0913
|
||||
pool: asyncpg.Pool,
|
||||
account_id: int,
|
||||
chat_id: int,
|
||||
message_id: int,
|
||||
title: str | None,
|
||||
photo_unique_id: str | None,
|
||||
ts: datetime,
|
||||
raw: str,
|
||||
) -> bool:
|
||||
status = await pool.execute(
|
||||
_INSERT_CHAT_META,
|
||||
account_id,
|
||||
chat_id,
|
||||
message_id,
|
||||
title,
|
||||
photo_unique_id,
|
||||
ts,
|
||||
raw,
|
||||
)
|
||||
return status == "INSERT 0 1"
|
||||
|
||||
|
||||
async def insert_membership( # noqa: PLR0913
|
||||
pool: asyncpg.Pool,
|
||||
account_id: int,
|
||||
|
||||
Reference in new issue
Block a user