|
|
|
@@ -127,18 +127,32 @@ limit 1000""" |
|
|
|
|
|
|
|
processed_count = 0 |
|
|
|
failed_ids = [] |
|
|
|
last_id = "00000000-0000-0000-0000-000000000000" |
|
|
|
|
|
|
|
while True: |
|
|
|
sql = f"""select id, {provider_column_name} as provider_name from {table_name} |
|
|
|
where {provider_column_name} not like '%/%' and {provider_column_name} is not null and {provider_column_name} != '' |
|
|
|
limit 1000""" |
|
|
|
sql = f""" |
|
|
|
SELECT id, {provider_column_name} AS provider_name |
|
|
|
FROM {table_name} |
|
|
|
WHERE {provider_column_name} NOT LIKE '%/%' |
|
|
|
AND {provider_column_name} IS NOT NULL |
|
|
|
AND {provider_column_name} != '' |
|
|
|
AND id > :last_id |
|
|
|
ORDER BY id ASC |
|
|
|
LIMIT 5000 |
|
|
|
""" |
|
|
|
params = {"last_id": last_id or ""} |
|
|
|
|
|
|
|
with db.engine.begin() as conn: |
|
|
|
rs = conn.execute(db.text(sql)) |
|
|
|
rs = conn.execute(db.text(sql), params) |
|
|
|
|
|
|
|
current_iter_count = 0 |
|
|
|
batch_updates = [] |
|
|
|
|
|
|
|
for i in rs: |
|
|
|
current_iter_count += 1 |
|
|
|
processed_count += 1 |
|
|
|
record_id = str(i.id) |
|
|
|
last_id = record_id |
|
|
|
provider_name = str(i.provider_name) |
|
|
|
|
|
|
|
if record_id in failed_ids: |
|
|
|
@@ -152,19 +166,9 @@ limit 1000""" |
|
|
|
) |
|
|
|
|
|
|
|
try: |
|
|
|
# update provider name append with "langgenius/{provider_name}/{provider_name}" |
|
|
|
sql = f"""update {table_name} |
|
|
|
set {provider_column_name} = |
|
|
|
concat('{DEFAULT_PLUGIN_ID}/', {provider_column_name}, '/', {provider_column_name}) |
|
|
|
where id = :record_id""" |
|
|
|
conn.execute(db.text(sql), {"record_id": record_id}) |
|
|
|
click.echo( |
|
|
|
click.style( |
|
|
|
f"[{processed_count}] Migrated [{table_name}] {record_id} ({provider_name})", |
|
|
|
fg="green", |
|
|
|
) |
|
|
|
) |
|
|
|
except Exception: |
|
|
|
updated_value = f"{DEFAULT_PLUGIN_ID}/{provider_name}/{provider_name}" |
|
|
|
batch_updates.append((updated_value, record_id)) |
|
|
|
except Exception as e: |
|
|
|
failed_ids.append(record_id) |
|
|
|
click.echo( |
|
|
|
click.style( |
|
|
|
@@ -177,6 +181,20 @@ limit 1000""" |
|
|
|
) |
|
|
|
continue |
|
|
|
|
|
|
|
if batch_updates: |
|
|
|
update_sql = f""" |
|
|
|
UPDATE {table_name} |
|
|
|
SET {provider_column_name} = :updated_value |
|
|
|
WHERE id = :record_id |
|
|
|
""" |
|
|
|
conn.execute(db.text(update_sql), [{"updated_value": u, "record_id": r} for u, r in batch_updates]) |
|
|
|
click.echo( |
|
|
|
click.style( |
|
|
|
f"[{processed_count}] Batch migrated [{len(batch_updates)}] records from [{table_name}]", |
|
|
|
fg="green", |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
if not current_iter_count: |
|
|
|
break |
|
|
|
|