From 72d1b336c5fe41da23d66db34ab9679bd4a462c4 Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 30 May 2026 15:06:02 -0500 Subject: [PATCH] Add --where filter to email verifier for targeted scrubs Co-Authored-By: Claude Opus 4.6 (1M context) --- scripts/workers/email_verifier.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/workers/email_verifier.py b/scripts/workers/email_verifier.py index 61398b8..3ff9392 100644 --- a/scripts/workers/email_verifier.py +++ b/scripts/workers/email_verifier.py @@ -166,7 +166,7 @@ def verify_email(email: str) -> tuple[bool, str]: return True, "mx_unreachable" -def verify_table(table: str, limit: int | None = None, dry_run: bool = False) -> dict: +def verify_table(table: str, limit: int | None = None, dry_run: bool = False, where: str | None = None) -> dict: """Verify emails in a database table.""" conn = psycopg2.connect(DATABASE_URL) cur = conn.cursor() @@ -182,11 +182,13 @@ def verify_table(table: str, limit: int | None = None, dry_run: bool = False) -> # Get unverified emails limit_clause = f"LIMIT {limit}" if limit else "" + extra_where = f"AND ({where})" if where else "" cur.execute(f""" SELECT dot_number, email_address FROM {table} WHERE email_address IS NOT NULL AND email_address != '' AND (email_verified IS NULL) + {extra_where} {limit_clause} """) @@ -247,6 +249,7 @@ def main(): parser.add_argument("--limit", type=int, default=None, help="Limit records") parser.add_argument("--dry-run", action="store_true", help="Check but don't save") parser.add_argument("--email", type=str, help="Verify a single email") + parser.add_argument("--where", type=str, default=None, help="Extra SQL WHERE clause (e.g. 'oos_active = TRUE')") args = parser.parse_args() if args.email: @@ -254,7 +257,7 @@ def main(): print(f"{args.email}: {'VALID' if is_valid else 'INVALID'} ({reason})") return - stats = verify_table(args.table, limit=args.limit, dry_run=args.dry_run) + stats = verify_table(args.table, limit=args.limit, dry_run=args.dry_run, where=args.where) LOG.info("=== Verification Results ===") for k, v in stats.items():