from __future__ import annotations import argparse from app.db.bootstrap import create_all_tables from app.db.models import Campaign, CampaignJob from app.db.session import SessionLocal from app.security.api_keys import authenticate_api_key from app.settings import settings def main() -> None: parser = argparse.ArgumentParser(description="List persisted campaigns and job counts.") parser.add_argument("--api-key", default=settings.dev_bootstrap_api_key) args = parser.parse_args() create_all_tables() with SessionLocal() as session: api_key = authenticate_api_key(session, args.api_key) if not api_key: raise SystemExit("Invalid API key") campaigns = session.query(Campaign).filter(Campaign.tenant_id == api_key.tenant_id).order_by(Campaign.updated_at.desc()).all() for campaign in campaigns: jobs = session.query(CampaignJob).filter(CampaignJob.campaign_id == campaign.id).count() print(f"{campaign.id} | {campaign.status:15s} | jobs={jobs:4d} | {campaign.name}") if __name__ == "__main__": main()