"""add email templates table Revision ID: c770e08966b4 Revises: e7e4ff171f7a Create Date: 2025-06-01 20:09:08.019884 """ from alembic import op import sqlalchemy as sa from sqlalchemy import inspect from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. revision = 'c770e08966b4' down_revision = 'e7e4ff171f7a' branch_labels = None depends_on = None def upgrade(): # ### commands auto generated by Alembic - please adjust! ### conn = op.get_bind() inspector = inspect(conn) tables = inspector.get_table_names() if 'email_templates' not in tables: op.create_table('email_templates', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=100), nullable=False), sa.Column('subject', sa.String(length=200), nullable=False), sa.Column('body', sa.Text(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=True), sa.Column('updated_at', sa.DateTime(), nullable=True), sa.Column('created_by', sa.Integer(), nullable=False), sa.Column('is_active', sa.Boolean(), nullable=True), sa.ForeignKeyConstraint(['created_by'], ['user.id'], ), sa.PrimaryKeyConstraint('id') ) op.drop_table('notification') with op.batch_alter_table('events', schema=None) as batch_op: batch_op.alter_column('details', existing_type=postgresql.JSONB(astext_type=sa.Text()), type_=sa.JSON(), existing_nullable=True) batch_op.drop_index(batch_op.f('idx_events_event_type')) batch_op.drop_index(batch_op.f('idx_events_timestamp')) batch_op.drop_index(batch_op.f('idx_events_user_id')) # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### with op.batch_alter_table('events', schema=None) as batch_op: batch_op.create_index(batch_op.f('idx_events_user_id'), ['user_id'], unique=False) batch_op.create_index(batch_op.f('idx_events_timestamp'), ['timestamp'], unique=False) batch_op.create_index(batch_op.f('idx_events_event_type'), ['event_type'], unique=False) batch_op.alter_column('details', existing_type=sa.JSON(), type_=postgresql.JSONB(astext_type=sa.Text()), existing_nullable=True) conn = op.get_bind() inspector = inspect(conn) tables = inspector.get_table_names() if 'notification' not in tables: op.create_table('notification', sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), sa.Column('user_id', sa.INTEGER(), autoincrement=False, nullable=False), sa.Column('title', sa.VARCHAR(length=255), autoincrement=False, nullable=False), sa.Column('message', sa.TEXT(), autoincrement=False, nullable=False), sa.Column('type', sa.VARCHAR(length=50), autoincrement=False, nullable=False), sa.Column('is_read', sa.BOOLEAN(), autoincrement=False, nullable=True), sa.Column('created_at', postgresql.TIMESTAMP(), autoincrement=False, nullable=True), sa.Column('link', sa.VARCHAR(length=512), autoincrement=False, nullable=True), sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('notification_user_id_fkey')), sa.PrimaryKeyConstraint('id', name=op.f('notification_pkey')) ) op.drop_table('email_templates') # ### end Alembic commands ###