"""add non recurring meeting invites

Revision ID: 20260624_0014
Revises: 20260619_0013
Create Date: 2026-06-24 12:30:00
"""
from __future__ import annotations

from alembic import op
import sqlalchemy as sa


revision = "20260624_0014"
down_revision = "20260619_0013"
branch_labels = None
depends_on = None


def upgrade() -> None:
    bind = op.get_bind()
    inspector = sa.inspect(bind)
    tables = set(inspector.get_table_names())

    if "non_recurring_meeting_invites" not in tables:
        op.create_table(
            "non_recurring_meeting_invites",
            sa.Column("id", sa.Integer(), nullable=False),
            sa.Column("host_user_id", sa.Integer(), nullable=False),
            sa.Column("guest_user_id", sa.Integer(), nullable=False),
            sa.Column("meeting_id", sa.Integer(), nullable=True),
            sa.Column("google_event_id", sa.String(), nullable=False),
            sa.Column("title", sa.String(), nullable=True),
            sa.Column("meet_link", sa.String(), nullable=False),
            sa.Column("platform", sa.String(), nullable=False),
            sa.Column("scheduled_at", sa.DateTime(timezone=True), nullable=False),
            sa.Column("guest_rsvp_status", sa.String(), nullable=True),
            sa.Column("organizer_email", sa.String(), nullable=True),
            sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=True),
            sa.Column("updated_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=True),
            sa.ForeignKeyConstraint(["guest_user_id"], ["users.id"]),
            sa.ForeignKeyConstraint(["host_user_id"], ["users.id"]),
            sa.ForeignKeyConstraint(["meeting_id"], ["meetings.id"]),
            sa.PrimaryKeyConstraint("id"),
            sa.UniqueConstraint("guest_user_id", "google_event_id", name="uq_non_recurring_meeting_invite_guest_event"),
        )
        op.create_index(op.f("ix_non_recurring_meeting_invites_google_event_id"), "non_recurring_meeting_invites", ["google_event_id"], unique=False)
        op.create_index(op.f("ix_non_recurring_meeting_invites_guest_user_id"), "non_recurring_meeting_invites", ["guest_user_id"], unique=False)
        op.create_index(op.f("ix_non_recurring_meeting_invites_host_user_id"), "non_recurring_meeting_invites", ["host_user_id"], unique=False)
        op.create_index(op.f("ix_non_recurring_meeting_invites_id"), "non_recurring_meeting_invites", ["id"], unique=False)
        op.create_index(op.f("ix_non_recurring_meeting_invites_meeting_id"), "non_recurring_meeting_invites", ["meeting_id"], unique=False)
        op.create_index(op.f("ix_non_recurring_meeting_invites_scheduled_at"), "non_recurring_meeting_invites", ["scheduled_at"], unique=False)


def downgrade() -> None:
    bind = op.get_bind()
    inspector = sa.inspect(bind)
    tables = set(inspector.get_table_names())

    if "non_recurring_meeting_invites" in tables:
        op.drop_index(op.f("ix_non_recurring_meeting_invites_scheduled_at"), table_name="non_recurring_meeting_invites")
        op.drop_index(op.f("ix_non_recurring_meeting_invites_meeting_id"), table_name="non_recurring_meeting_invites")
        op.drop_index(op.f("ix_non_recurring_meeting_invites_id"), table_name="non_recurring_meeting_invites")
        op.drop_index(op.f("ix_non_recurring_meeting_invites_host_user_id"), table_name="non_recurring_meeting_invites")
        op.drop_index(op.f("ix_non_recurring_meeting_invites_guest_user_id"), table_name="non_recurring_meeting_invites")
        op.drop_index(op.f("ix_non_recurring_meeting_invites_google_event_id"), table_name="non_recurring_meeting_invites")
        op.drop_table("non_recurring_meeting_invites")
