feat: add annotations, user profiles, watchers, stories, search and more
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import asyncpg
|
||||
|
||||
from utils.read.models import AvatarRef
|
||||
from utils.read.models import AvatarHistoryView, AvatarRef
|
||||
|
||||
_PEER_UNIQUE_ID = """
|
||||
SELECT photo_unique_id FROM peers
|
||||
@@ -18,6 +18,12 @@ SELECT unique_id, storage_key, downloaded, mime FROM avatars
|
||||
WHERE account_id = $1 AND owner_id = $2 AND unique_id = $3
|
||||
"""
|
||||
|
||||
_AVATAR_HISTORY = """
|
||||
SELECT unique_id, first_seen_at, downloaded FROM avatars
|
||||
WHERE account_id = $1 AND owner_id = $2
|
||||
ORDER BY first_seen_at DESC
|
||||
"""
|
||||
|
||||
|
||||
async def current_avatar(
|
||||
pool: asyncpg.Pool, account_id: int, owner_kind: str, owner_id: int
|
||||
@@ -28,3 +34,17 @@ async def current_avatar(
|
||||
return None
|
||||
row = await pool.fetchrow(_AVATAR, account_id, owner_id, unique_id)
|
||||
return AvatarRef(**dict(row)) if row else None
|
||||
|
||||
|
||||
async def avatar_by_unique_id(
|
||||
pool: asyncpg.Pool, account_id: int, owner_id: int, unique_id: str
|
||||
) -> AvatarRef | None:
|
||||
row = await pool.fetchrow(_AVATAR, account_id, owner_id, unique_id)
|
||||
return AvatarRef(**dict(row)) if row else None
|
||||
|
||||
|
||||
async def avatar_history(
|
||||
pool: asyncpg.Pool, account_id: int, owner_id: int
|
||||
) -> list[AvatarHistoryView]:
|
||||
rows = await pool.fetch(_AVATAR_HISTORY, account_id, owner_id)
|
||||
return [AvatarHistoryView(**dict(row)) for row in rows]
|
||||
|
||||
Reference in New Issue
Block a user