Upload 3 files
Browse files- persistent_data_gate.py +35 -16
persistent_data_gate.py
CHANGED
|
@@ -77,6 +77,7 @@ def ensure_temp_databases(base_dir: Path, api_client) -> None:
|
|
| 77 |
temp_dir = base_dir / "temp"
|
| 78 |
temp_dir.mkdir(parents=True, exist_ok=True)
|
| 79 |
|
|
|
|
| 80 |
if data_origin == "internal":
|
| 81 |
source_dir = base_dir / "data"
|
| 82 |
print(f"[ensure_temp_databases] data_origin=internal, source_dir={source_dir}")
|
|
@@ -91,22 +92,40 @@ def ensure_temp_databases(base_dir: Path, api_client) -> None:
|
|
| 91 |
else:
|
| 92 |
print(f"[ensure_temp_databases] WARNING: source_dir does not exist!")
|
| 93 |
else:
|
| 94 |
-
# Mode external:
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
print(f"[ensure_temp_databases]
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
|
| 111 |
# Un cop les BDs estan a temp/, crear una còpia de seguretat a temp/backup
|
| 112 |
backup_dir = temp_dir / "backup"
|
|
|
|
| 77 |
temp_dir = base_dir / "temp"
|
| 78 |
temp_dir.mkdir(parents=True, exist_ok=True)
|
| 79 |
|
| 80 |
+
print(f"[ensure_temp_databases] data_origin={data_origin}")
|
| 81 |
if data_origin == "internal":
|
| 82 |
source_dir = base_dir / "data"
|
| 83 |
print(f"[ensure_temp_databases] data_origin=internal, source_dir={source_dir}")
|
|
|
|
| 92 |
else:
|
| 93 |
print(f"[ensure_temp_databases] WARNING: source_dir does not exist!")
|
| 94 |
else:
|
| 95 |
+
# Mode external: descarregar BDs del backend una sola vegada per sessió del servidor
|
| 96 |
+
marker_file = temp_dir / ".external_db_imported"
|
| 97 |
+
missing = [name for name in ("events.db", "feedback.db", "users.db", "videos.db") if not (temp_dir / name).exists()]
|
| 98 |
+
needs_import = not marker_file.exists() or missing
|
| 99 |
+
|
| 100 |
+
if not needs_import:
|
| 101 |
+
print("[ensure_temp_databases] External data already present, skipping import")
|
| 102 |
+
else:
|
| 103 |
+
if missing:
|
| 104 |
+
print(f"[ensure_temp_databases] Missing files detected: {missing}")
|
| 105 |
+
try:
|
| 106 |
+
marker_file.unlink(missing_ok=True) # type: ignore[arg-type]
|
| 107 |
+
except Exception:
|
| 108 |
+
pass
|
| 109 |
+
|
| 110 |
+
if api_client is None:
|
| 111 |
+
print("[ensure_temp_databases] api_client is None, skipping import")
|
| 112 |
+
return
|
| 113 |
+
try:
|
| 114 |
+
resp = api_client.import_databases()
|
| 115 |
+
zip_bytes = resp.get("zip_bytes") if isinstance(resp, dict) else None
|
| 116 |
+
if zip_bytes:
|
| 117 |
+
_extract_zip_bytes(zip_bytes, temp_dir)
|
| 118 |
+
print(f"[ensure_temp_databases] Extracted DBs to {temp_dir}")
|
| 119 |
+
try:
|
| 120 |
+
marker_file.write_text("imported", encoding="utf-8")
|
| 121 |
+
except Exception:
|
| 122 |
+
pass
|
| 123 |
+
else:
|
| 124 |
+
err = resp.get("error") if isinstance(resp, dict) else "unknown"
|
| 125 |
+
print(f"[ensure_temp_databases] No zip_bytes in response: {err}")
|
| 126 |
+
except Exception as e:
|
| 127 |
+
print(f"[ensure_temp_databases] Exception: {e}")
|
| 128 |
+
return
|
| 129 |
|
| 130 |
# Un cop les BDs estan a temp/, crear una còpia de seguretat a temp/backup
|
| 131 |
backup_dir = temp_dir / "backup"
|