Introduction of Partner Model, adding code to Tenant model
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
"""Initialize empty Tenant codes
|
||||
|
||||
Revision ID: 867deef0888b
|
||||
Revises: cab899dbb213
|
||||
Create Date: 2025-04-03 09:01:20.446536
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
import uuid
|
||||
from sqlalchemy.sql import table, column, select, or_
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '867deef0888b'
|
||||
down_revision = 'cab899dbb213'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# Create a reference to the tenant table
|
||||
tenant_table = table('tenant',
|
||||
column('id', sa.Integer),
|
||||
column('code', sa.String(50)),
|
||||
schema='public' # Assuming the table is in the 'public' schema
|
||||
)
|
||||
|
||||
# Get a connection
|
||||
connection = op.get_bind()
|
||||
session = Session(bind=connection)
|
||||
|
||||
try:
|
||||
# Find all tenants with empty or null code
|
||||
# Note the updated select syntax for SQLAlchemy 2.0
|
||||
query = select(tenant_table.c.id).where(
|
||||
or_(
|
||||
tenant_table.c.code == None,
|
||||
tenant_table.c.code == ''
|
||||
)
|
||||
)
|
||||
|
||||
results = connection.execute(query)
|
||||
|
||||
# Update each tenant with a UUID-based code
|
||||
for row in results:
|
||||
tenant_id = row[0]
|
||||
code = f"TENANT-{str(uuid.uuid4())}"
|
||||
|
||||
# Update the tenant record
|
||||
update_stmt = tenant_table.update().where(
|
||||
tenant_table.c.id == tenant_id
|
||||
).values(
|
||||
code=code
|
||||
)
|
||||
|
||||
connection.execute(update_stmt)
|
||||
|
||||
# Commit changes
|
||||
session.commit()
|
||||
|
||||
# Log how many records were updated
|
||||
count_query = select(sa.func.count()).select_from(tenant_table).where(
|
||||
tenant_table.c.code.like('TENANT-%')
|
||||
)
|
||||
|
||||
updated_count = connection.execute(count_query).scalar()
|
||||
|
||||
print(f"Updated {updated_count} tenant records with UUID-based codes")
|
||||
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print(f"Error updating tenant codes: {str(e)}")
|
||||
raise e
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
|
||||
def downgrade():
|
||||
# No downgrade needed for this data migration
|
||||
pass
|
||||
Reference in New Issue
Block a user