#!/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()