feat(backend): history keys cover the profile fields, group snapshots keyed by time, indexes for memberships and job lookups
This commit is contained in:
1 parent
97ccfbbffd
commit
7d7cf3cbbb
2 files changed
+53
-1
No files matched your search
@@ -0,0 +1,52 @@
|
||||
"""profile history reads
|
||||
|
||||
Revision ID: e8b3f1a6c2d4
|
||||
Revises: d8e3b5a1c7f4
|
||||
Create Date: 2026-10-19 03:00:00.000000
|
||||
|
||||
"""
|
||||
|
||||
from collections.abc import Sequence
|
||||
|
||||
from alembic import op
|
||||
|
||||
revision: str = "e8b3f1a6c2d4"
|
||||
down_revision: str | None = "d8e3b5a1c7f4"
|
||||
branch_labels: str | Sequence[str] | None = None
|
||||
depends_on: str | Sequence[str] | None = None
|
||||
|
||||
_PEER_STATE = (
|
||||
"first_name, last_name, username, phone, photo_unique_id, is_deleted_account"
|
||||
)
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.execute(
|
||||
"ALTER TABLE peer_history DROP CONSTRAINT peer_history_pkey, "
|
||||
"ADD CONSTRAINT peer_history_pkey "
|
||||
f"PRIMARY KEY (account_id, peer_id, observed_at) INCLUDE ({_PEER_STATE})"
|
||||
)
|
||||
op.execute(
|
||||
"ALTER TABLE chat_history DROP CONSTRAINT chat_history_pkey, "
|
||||
"ADD CONSTRAINT chat_history_pkey "
|
||||
"PRIMARY KEY (account_id, chat_id, message_id, ts)"
|
||||
)
|
||||
op.execute(
|
||||
"CREATE INDEX ix_memberships_user ON memberships (account_id, user_id, ts DESC)"
|
||||
)
|
||||
op.execute(
|
||||
"CREATE INDEX ix_jobs_kind_created ON jobs (account_id, kind, created_at DESC)"
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.execute("DROP INDEX IF EXISTS ix_jobs_kind_created")
|
||||
op.execute("DROP INDEX IF EXISTS ix_memberships_user")
|
||||
op.execute(
|
||||
"ALTER TABLE chat_history DROP CONSTRAINT chat_history_pkey, "
|
||||
"ADD CONSTRAINT chat_history_pkey PRIMARY KEY (account_id, chat_id, message_id)"
|
||||
)
|
||||
op.execute(
|
||||
"ALTER TABLE peer_history DROP CONSTRAINT peer_history_pkey, "
|
||||
"ADD CONSTRAINT peer_history_pkey PRIMARY KEY (account_id, peer_id, observed_at)"
|
||||
)
|
||||
@@ -356,7 +356,7 @@ class ChatHistory(SQLModel, table=True):
|
||||
title: str | None = None
|
||||
photo_unique_id: str | None = None
|
||||
actor_id: int | None = Field(default=None, sa_column=Column(BigInteger))
|
||||
ts: datetime = Field(sa_column=Column(DateTime(timezone=True), nullable=False))
|
||||
ts: datetime = Field(sa_column=Column(DateTime(timezone=True), primary_key=True))
|
||||
raw: dict[str, Any] = Field(
|
||||
default_factory=dict, sa_column=Column(JSONB, nullable=False)
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user