Files
multi-seal-mail/server/app/mailer/commands/list_db_campaigns.py
2026-06-08 15:57:11 +02:00

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()