from datetime import datetime

from creative_module.services.section_service import update_account_sections
from organization_auth.models import Account


accounts = Account.objects.filter(
    version=Account.Version.V2,
    is_demo=False,
    last_synced_date__isnull=False,
).order_by("ad_account_name", "id")

total = accounts.count()
print(f"accounts_to_process={total}")

success_count = 0
failure_count = 0
started_at = datetime.now()

for index, account in enumerate(accounts.iterator(chunk_size=100), start=1):
    try:
        result = update_account_sections(account=account)
        success_count += 1
        print(f"[{index}/{total}] ok account={account.id} name={account.ad_account_name!r} result={result}")
    except Exception as exc:
        failure_count += 1
        print(f"[{index}/{total}] failed account={account.id} name={account.ad_account_name!r} error={exc!r}")

print(f"success_count={success_count}")
print(f"failure_count={failure_count}")
print(f"elapsed_seconds={(datetime.now() - started_at).total_seconds():.2f}")
