#!/usr/bin/env python3 """Import SQL from a directory (dev). Usage: python scripts/import_local.py """ import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1])) import io import zipfile from app.database import SessionLocal from app.import_service import load_dir_sql, run_import from app.models import User def dir_to_zip_bytes(dir_path: Path) -> bytes: buf = io.BytesIO() with zipfile.ZipFile(buf, "w", zipfile.ZIP_DEFLATED) as zf: for name, data in load_dir_sql(dir_path).items(): zf.writestr(Path(name).name, data) return buf.getvalue() def main(): if len(sys.argv) < 3: print("Usage: import_local.py ") sys.exit(1) dir_path = Path(sys.argv[1]) subject = sys.argv[2] db = SessionLocal() user = db.query(User).filter(User.username == "admin").first() uid = user.id if user else None result = run_import( db, subject_name=subject, zip_filename=dir_path.name + ".zip", file_bytes=dir_to_zip_bytes(dir_path), user_id=uid, ) print(result) if __name__ == "__main__": main()