From 3f96c9c6502243b06efd4bb34a189e72e3a5557c Mon Sep 17 00:00:00 2001
From: yearning <10538594+wangweifeng1999@user.noreply.gitee.com>
Date: 星期一, 28 九月 2026 19:24:55 +0800
Subject: [PATCH] 复制项目

---
 backend/scripts/import_local.py |   44 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/backend/scripts/import_local.py b/backend/scripts/import_local.py
new file mode 100644
index 0000000..51de670
--- /dev/null
+++ b/backend/scripts/import_local.py
@@ -0,0 +1,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()

--
Gitblit v1.8.0