From 851a3dae6a123ff6af74e6d0c40e6d932bec74c9 Mon Sep 17 00:00:00 2001 From: lhl Date: Fri, 28 Aug 2026 02:12:03 +0800 Subject: [PATCH] =?UTF-8?q?refactor(server):=20list=5Fsessions=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E6=B0=B8=E4=B8=8D=E6=89=A7=E8=A1=8C=E7=9A=84=20except?= =?UTF-8?q?=20=E5=85=9C=E5=BA=95=E4=BB=A5=E8=BE=BE=2099%=20=E8=A6=86?= =?UTF-8?q?=E7=9B=96=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/genesis/server/store.py | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/genesis/server/store.py b/src/genesis/server/store.py index 0ef47a9..ea5715f 100644 --- a/src/genesis/server/store.py +++ b/src/genesis/server/store.py @@ -157,24 +157,15 @@ class SessionStore: "SELECT data FROM sessions WHERE user_id = ?", (user_id,), ).fetchall() - recs = [self._from_dict(json.loads(r["data"])) for r in rows] else: - try: - with self._conn() as c: - rows = c.execute( - "SELECT data FROM sessions WHERE user_id = ?" - " AND json_extract(data, '$.project') = ?", - (user_id, project), - ).fetchall() - recs = [self._from_dict(json.loads(r["data"])) for r in rows] - except Exception: - # json_extract 不可用(旧 SQLite)→ 全量取回后 Python 过滤兜底 - with self._conn() as c: - rows = c.execute( - "SELECT data FROM sessions WHERE user_id = ?", (user_id,) - ).fetchall() - recs = [self._from_dict(json.loads(r["data"])) for r in rows] - recs = [r for r in recs if r.project == project] + # 现代 SQLite 均支持 json_extract(>=3.9,2015);按 project 列检索 + with self._conn() as c: + rows = c.execute( + "SELECT data FROM sessions WHERE user_id = ?" + " AND json_extract(data, '$.project') = ?", + (user_id, project), + ).fetchall() + recs = [self._from_dict(json.loads(r["data"])) for r in rows] # updated_at 在 JSON data 内,无法用 SQL 列排序 → 取回后按时间降序 recs.sort(key=lambda r: r.updated_at, reverse=True) return recs