Kerikim commited on
Commit
b612910
·
1 Parent(s): bf131b8
phase/Student_view/games/MoneyMatch.py CHANGED
@@ -8,6 +8,11 @@ import streamlit as st
8
  from utils import db as dbapi
9
  import time
10
  from utils import db as db_util
 
 
 
 
 
11
 
12
  # ---------- paths ----------
13
  PROJECT_ROOT = Path(__file__).resolve().parents[3]
@@ -51,24 +56,35 @@ def _award_xp(gained: int):
51
  ss.mm_level += 1
52
 
53
  def _persist_success(gained_xp: int):
54
- user = st.session_state.get("user")
55
- if not user or "user_id" not in user:
 
56
  st.error("Not saving. No logged-in user_id in session.")
57
  return
58
- elapsed_ms = int((time.perf_counter() - st.session_state.mm_start_ts) * 1000)
 
 
 
 
 
 
 
 
 
59
  try:
60
- dbapi.record_money_match_play(
61
- user["user_id"],
62
- target=int(st.session_state.mm_target),
63
- total=int(st.session_state.mm_total),
64
- elapsed_ms=elapsed_ms,
65
- matched=True,
66
- gained_xp=int(gained_xp),
67
- )
68
- st.toast(f"Saved to TiDB +{gained_xp} XP")
69
  except Exception as e:
70
  st.error(f"Save failed: {e}")
71
 
 
72
  # --- CSS injection (run every render) ---
73
  def _inject_css():
74
  css_path = PROJECT_ROOT / "assets" / "styles.css"
 
8
  from utils import db as dbapi
9
  import time
10
  from utils import db as db_util
11
+ from utils import api
12
+
13
+
14
+ USE_LOCAL_DB = os.getenv("DISABLE_DB", "1") != "1"
15
+
16
 
17
  # ---------- paths ----------
18
  PROJECT_ROOT = Path(__file__).resolve().parents[3]
 
56
  ss.mm_level += 1
57
 
58
  def _persist_success(gained_xp: int):
59
+ user = st.session_state.get("user") or {}
60
+ user_id = int(user.get("user_id", 0))
61
+ if not user_id:
62
  st.error("Not saving. No logged-in user_id in session.")
63
  return
64
+
65
+ payload = dict(
66
+ user_id=user_id,
67
+ target=int(st.session_state.mm_target),
68
+ total=int(st.session_state.mm_total),
69
+ elapsed_ms=int((time.perf_counter() - st.session_state.mm_start_ts) * 1000),
70
+ matched=True,
71
+ gained_xp=int(gained_xp),
72
+ )
73
+
74
  try:
75
+ if USE_LOCAL_DB and hasattr(dbapi, "record_money_match_play"):
76
+ # direct DB mode
77
+ dbapi.record_money_match_play(**payload)
78
+ st.toast(f"Saved to DB +{gained_xp} XP")
79
+ else:
80
+ # backend mode (DISABLE_DB=1)
81
+ api.record_money_match_play(**payload)
82
+ st.toast(f"Saved via backend +{gained_xp} XP")
83
+ st.session_state.mm_saved = True
84
  except Exception as e:
85
  st.error(f"Save failed: {e}")
86
 
87
+
88
  # --- CSS injection (run every render) ---
89
  def _inject_css():
90
  css_path = PROJECT_ROOT / "assets" / "styles.css"