/ migrations / versions / 025_add_widgets.py
025_add_widgets.py
 1  from alembic import op
 2  import sqlalchemy as sa
 3  
 4  revision = '025'
 5  down_revision = '024'
 6  branch_labels = None
 7  depends_on = None
 8  
 9  def upgrade():
10      try:
11          op.create_table(
12              'widgets',
13              sa.Column('id', sa.Integer(), primary_key=True, index=True),
14              sa.Column('project_id', sa.Integer(), sa.ForeignKey('projects.id'), nullable=False, index=True),
15              sa.Column('creator_id', sa.Integer(), sa.ForeignKey('users.id'), nullable=False),
16              sa.Column('key_hash', sa.String(64), nullable=False, unique=True, index=True),
17              sa.Column('encrypted_key', sa.String(4096), nullable=False),
18              sa.Column('key_prefix', sa.String(12), nullable=False),
19              sa.Column('name', sa.String(255), nullable=False, server_default='Chat Widget'),
20              sa.Column('config', sa.Text(), nullable=False),
21              sa.Column('allowed_domains', sa.Text(), nullable=False),
22              sa.Column('enabled', sa.Boolean(), nullable=False, server_default='1'),
23              sa.Column('created_at', sa.DateTime(), nullable=False),
24              sa.Column('updated_at', sa.DateTime(), nullable=False),
25          )
26      except Exception as e:
27          print(f"Error creating widgets table: {e}")
28  
29  def downgrade():
30      try:
31          op.drop_table('widgets')
32      except Exception as e:
33          print(f"Error dropping widgets table: {e}")