yearning
12 小时以前 3f96c9c6502243b06efd4bb34a189e72e3a5557c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/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()