30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
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()
|