"""teams

Справочник команд и привязка пользователя к команде:
- `teams` — id/name (уникально)/created_at;
- `users.team_id` — необязательная ссылка на команду, `ON DELETE SET NULL`
  (удаление команды не удаляет пользователей, только снимает привязку).

Revision ID: 9d37822e4513
Revises: 5970bf64fc43
Create Date: 2026-07-18 03:00:27.636900

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '9d37822e4513'
down_revision: Union[str, Sequence[str], None] = '5970bf64fc43'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    """Upgrade schema."""
    op.create_table(
        'teams',
        sa.Column('id', sa.UUID(), server_default=sa.text('gen_random_uuid()'), nullable=False),
        sa.Column('name', sa.String(length=255), nullable=False),
        sa.Column(
            'created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'),
            nullable=False,
        ),
        sa.PrimaryKeyConstraint('id'),
        sa.UniqueConstraint('name'),
    )
    op.add_column('users', sa.Column('team_id', sa.UUID(), nullable=True))
    op.create_foreign_key(
        'fk_users_team_id_teams', 'users', 'teams', ['team_id'], ['id'], ondelete='SET NULL'
    )


def downgrade() -> None:
    """Downgrade schema."""
    op.drop_constraint('fk_users_team_id_teams', 'users', type_='foreignkey')
    op.drop_column('users', 'team_id')
    op.drop_table('teams')
