"""Added tables for events capture and notifications.

Revision ID: d1f94480db87
Revises: 53794f18hs75
Create Date: 2024-11-25 16:46:25.696071

"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
from main.services.custom_sqlalchemy_types import EnumSqlalchemyType
from main.services.enums.user import EventCategory

# revision identifiers, used by Alembic.
revision = 'd1f94480db87'
down_revision = '53794f18hs75'
branch_labels = None
depends_on = None


def upgrade():
    op.create_table('user_categories',
        sa.Column('id', sa.Integer(), nullable=False, auto_increment=True),
        sa.Column('user_id', sa.Integer(), nullable=False),
        sa.Column("category", EnumSqlalchemyType(EventCategory), nullable=False),

        sa.ForeignKeyConstraint(['user_id'], ['users.id']),
        sa.UniqueConstraint('user_id', 'category'),
        sa.PrimaryKeyConstraint('id')
    )
    op.add_column('users', sa.Column('last_read_at', sa.TIMESTAMP(), nullable=True))
    op.add_column('users', sa.Column('push_service_subscriptions', sa.ARRAY(postgresql.JSONB(astext_type=sa.Text())), server_default='{}', nullable=True))


def downgrade():
    op.drop_column('users', 'push_service_subscriptions')
    op.drop_column('users', 'last_read_at')
    op.drop_table('user_categories')
