4.46.0
All checks were successful
Build-Release-Image / Build-Image (linux/amd64) (push) Successful in 3m41s
Build-Release-Image / Build-Image (linux/arm64) (push) Successful in 4m54s
Build-Release-Image / Merge-Images (push) Successful in 19s
Build-Release-Image / Create-Release (push) Successful in 16s
Build-Release-Image / Notify (push) Successful in 19s
All checks were successful
Build-Release-Image / Build-Image (linux/amd64) (push) Successful in 3m41s
Build-Release-Image / Build-Image (linux/arm64) (push) Successful in 4m54s
Build-Release-Image / Merge-Images (push) Successful in 19s
Build-Release-Image / Create-Release (push) Successful in 16s
Build-Release-Image / Notify (push) Successful in 19s
This commit is contained in:
@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env python3
|
||||
import argparse
|
||||
import time
|
||||
|
||||
from sqlalchemy import func
|
||||
from app.models import Alias, User
|
||||
from app.db import Session
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="Backfill alias", description="Backfill user flags for partner alias created"
|
||||
)
|
||||
parser.add_argument(
|
||||
"-s", "--start_user_id", default=0, type=int, help="Initial user_id"
|
||||
)
|
||||
parser.add_argument("-e", "--end_user_id", default=0, type=int, help="Last user_id")
|
||||
|
||||
args = parser.parse_args()
|
||||
user_id_start = args.start_user_id
|
||||
max_user_id = args.end_user_id
|
||||
if max_user_id == 0:
|
||||
max_user_id = Session.query(func.max(User.id)).scalar()
|
||||
|
||||
print(f"Checking user {user_id_start} to {max_user_id}")
|
||||
step = 1000
|
||||
el_query = "SELECT user_id, count(id) from alias where user_id>=:start AND user_id < :end AND flags & :alias_flag > 0 GROUP BY user_id"
|
||||
user_update_query = "UPDATE users set flags = flags | :user_flag where id = :user_id"
|
||||
updated = 0
|
||||
start_time = time.time()
|
||||
for batch_start in range(user_id_start, max_user_id, step):
|
||||
rows = Session.execute(
|
||||
el_query,
|
||||
{
|
||||
"start": batch_start,
|
||||
"end": batch_start + step,
|
||||
"alias_flag": Alias.FLAG_PARTNER_CREATED,
|
||||
},
|
||||
)
|
||||
for row in rows:
|
||||
if row[1] > 0:
|
||||
Session.execute(
|
||||
user_update_query,
|
||||
{"user_id": row[0], "user_flag": User.FLAG_CREATED_ALIAS_FROM_PARTNER},
|
||||
)
|
||||
Session.commit()
|
||||
updated += 1
|
||||
elapsed = time.time() - start_time
|
||||
time_per_alias = elapsed / (updated + 1)
|
||||
last_batch_id = batch_start + step
|
||||
remaining = max_user_id - last_batch_id
|
||||
time_remaining = (max_user_id - last_batch_id) * time_per_alias
|
||||
hours_remaining = time_remaining / 3600.0
|
||||
print(
|
||||
f"\rUser {batch_start}/{max_user_id} {updated} {hours_remaining:.2f}hrs remaining"
|
||||
)
|
||||
print("")
|
Reference in New Issue
Block a user