#!/usr/bin/env python3 """Backfill omg_entries from projects that have a job_number but no matching entry. docker compose exec app python scripts/backfill_omg_from_projects.py """ import asyncio import os import sys sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) from sqlalchemy import select from src.database import AsyncSessionLocal from src.models import OmgEntry, Project async def main(): async with AsyncSessionLocal() as db: result = await db.execute( select(Project).where(Project.job_number != "") ) projects = result.scalars().all() created = 0 for proj in projects: existing = await db.execute( select(OmgEntry).where( OmgEntry.user_id == proj.user_id, OmgEntry.job_number == proj.job_number, ) ) if existing.scalar_one_or_none(): continue db.add(OmgEntry( user_id=proj.user_id, name=proj.display_name, client=proj.client, job_number=proj.job_number, )) created += 1 await db.commit() print(f"Backfilled {created} OMG entries from {len(projects)} projects with job_number.") asyncio.run(main())