"""add views tracking Revision ID: fafe143ee0f4 Revises: e7ab0b38a8bf Create Date: 2025-11-10 16:57:28.652101 """ from collections.abc import Sequence import sqlalchemy as sa from alembic import op # revision identifiers, used by Alembic. revision: str = 'fafe143ee0f4' down_revision: str | None = 'e7ab0b38a8bf' branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### # Создаём enum тип для статуса доступности просмотров ПЕРЕД использованием op.execute("CREATE TYPE postviewsavailability AS ENUM ('UNKNOWN', 'AVAILABLE', 'UNAVAILABLE', 'MANUAL')") op.create_table( 'viewssnapshots', sa.Column('purchase_id', sa.Uuid(), nullable=False), sa.Column('views_count', sa.Integer(), nullable=False), sa.Column('fetched_at', sa.DateTime(timezone=True), nullable=False), sa.Column('id', sa.Uuid(), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.ForeignKeyConstraint( ['purchase_id'], ['purchases.id'], ), sa.PrimaryKeyConstraint('id'), ) op.create_index(op.f('ix_viewssnapshots_fetched_at'), 'viewssnapshots', ['fetched_at'], unique=False) op.create_index(op.f('ix_viewssnapshots_purchase_id'), 'viewssnapshots', ['purchase_id'], unique=False) op.add_column( 'purchases', sa.Column( 'views_availability', sa.Enum('UNKNOWN', 'AVAILABLE', 'UNAVAILABLE', 'MANUAL', name='postviewsavailability'), nullable=False, server_default='UNKNOWN', ), ) op.add_column('purchases', sa.Column('last_views_fetch_at', sa.DateTime(timezone=True), nullable=True)) # ### end Alembic commands ### def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### op.drop_column('purchases', 'last_views_fetch_at') op.drop_column('purchases', 'views_availability') op.drop_index(op.f('ix_viewssnapshots_purchase_id'), table_name='viewssnapshots') op.drop_index(op.f('ix_viewssnapshots_fetched_at'), table_name='viewssnapshots') op.drop_table('viewssnapshots') # Удаляём enum тип op.execute('DROP TYPE IF EXISTS postviewsavailability') # ### end Alembic commands ###