#!/usr/bin/env python3
|
"""Import SQL from a directory (dev). Usage: python scripts/import_local.py <dir> <subject_name>"""
|
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 <sql_dir> <subject_name>")
|
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()
|