Files
replypier/backend/alembic/versions/auth_sessions_001.py
T

39 lines
1.4 KiB
Python
Raw Normal View History

"""auth_sessions table, so sign-out and password changes revoke JWTs
Revision ID: auth_sessions_001
Revises: agent_quick_replies_001
Create Date: 2026-10-12
Tokens issued before this revision carry no session id and stay valid until
they expire, so the deploy signs nobody out.
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision: str = 'auth_sessions_001'
down_revision: Union[str, None] = 'agent_quick_replies_001'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
op.create_table(
'auth_sessions',
sa.Column('id', postgresql.UUID(as_uuid=True), nullable=False),
sa.Column('user_id', postgresql.UUID(as_uuid=True), nullable=False),
sa.Column('created_at', sa.DateTime(timezone=True),
server_default=sa.text('now()'), nullable=True),
sa.Column('revoked_at', sa.DateTime(timezone=True), nullable=True),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id'),
)
op.create_index('ix_auth_sessions_user_id', 'auth_sessions', ['user_id'])
def downgrade() -> None:
op.drop_index('ix_auth_sessions_user_id', table_name='auth_sessions')
op.drop_table('auth_sessions')