34 lines
895 B
Python
34 lines
895 B
Python
"""Add invitation_codes table.
|
|
|
|
This is an idempotent migration — uses CREATE TABLE IF NOT EXISTS.
|
|
"""
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
revision = "add_invitation_codes"
|
|
down_revision = "add_chat_sessions"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.execute("""
|
|
CREATE TABLE IF NOT EXISTS invitation_codes (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
code VARCHAR(32) NOT NULL UNIQUE,
|
|
max_uses INTEGER NOT NULL DEFAULT 1,
|
|
used_count INTEGER NOT NULL DEFAULT 0,
|
|
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
|
created_by UUID REFERENCES users(id),
|
|
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
)
|
|
""")
|
|
op.execute("""
|
|
CREATE INDEX IF NOT EXISTS idx_invitation_codes_code ON invitation_codes(code)
|
|
""")
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.execute("DROP TABLE IF EXISTS invitation_codes")
|