fix(hermes): add SQLite fallback for loadHermesSession #536
Reference in New Issue
Block a user
Delete Branch "fix/535-sqlite-fallback"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
loadHermesSessionnow falls back to SQLite when JSON snapshots are disabled.Why
Hermes defaults to
write_json_snapshots: false, causingloadHermesSessionto fail silently.Changes
getHermesDbPath()andloadHermesSessionFromDb()loadHermesSession()with DB fallbackRef
Fixes #535
LGTM 👍 SQLite fallback 逻辑清晰,测试覆盖充分(9 个用例)。
Minor nits(不阻塞合并):
loadHermesSessionFromDb的 db.close() — 两层 try-catch 里有两处db.close(),建议用try/finally保证关闭,更防御性。现在如果db.query().all()抛了,内层 catch 会兜住并关闭,所以不是 bug,只是可读性。函数签名 —
loadHermesSessionFromDb标了返回Promise但内部全是同步操作,用Promise.resolve()包装。可以改为同步函数直接返回HermesSessionJson | null,让loadHermesSession那边 await 自然兼容。不改也没问题。"JSON takes priority" 测试 — 这个测试实际上只是读了 JSON 文件验证内容,没有真正调用
loadHermesSession来验证 fallback 优先级逻辑。算是文档性测试,不是功能验证。小橘 solve-issue workflow 自修自己的 bug,双层 dogfooding 给力 🐕