VeuReu commited on
Commit
103d4d1
·
1 Parent(s): e483b76

Upload 3 files

Browse files
Files changed (1) hide show
  1. 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: descargar BDs del engine y descomprimir en temp/
95
- if api_client is None:
96
- print("[ensure_temp_databases] api_client is None, skipping import")
97
- return
98
- try:
99
- resp = api_client.import_databases()
100
- zip_bytes = resp.get("zip_bytes") if isinstance(resp, dict) else None
101
- if zip_bytes:
102
- _extract_zip_bytes(zip_bytes, temp_dir)
103
- print(f"[ensure_temp_databases] Extracted DBs to {temp_dir}")
104
- else:
105
- err = resp.get("error") if isinstance(resp, dict) else "unknown"
106
- print(f"[ensure_temp_databases] No zip_bytes in response: {err}")
107
- except Exception as e:
108
- print(f"[ensure_temp_databases] Exception: {e}")
109
- return
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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"