保持 Bubble Tea 仪表板与 soroi 的同步 笔记

保持 Bubble Tea 仪表板与 soroi 的同步

带有多个窗格的事故控制台给数据管理带来了挑战。Go 语言的 soroi 库通过提供类型化的查询客户端来解决这些问题,允许多个组件读取相同的远程数据,从而确保数据一致性和高效的缓存。每个窗格(如事故列表、详情和摘要)都可以使用单个 soroi 客户端订阅相同的共享数据。该客户端管理重叠的数据加载,复用新鲜结果并避免重复请求。数据在缓存中保持只读,写入则通过服务路由。一座桥梁将 soroi 的查询订阅连接到 Bubble Tea,通过消息实现 UI 更新。每个窗格接收快照更新,确保 UI 反映最新的查询状态。这种方法防止了后台 goroutine 直接操作模型。系统优雅地处理刷新失败,显示最后已知数据及错误信息。它区分初始加载失败与后续刷新失败。事故确认作为异步命令处理,防止 UI 冻结。确认成功后,共享队列被无效化,触发所有活跃观察者的刷新。窗格在刷新期间显示陈旧数据,随后更新为新所有者。事故选择基于 ID,防止在队列重排后意外确认。资源清理至关重要;终端退出时释放客户端和查询句柄。此模式非常适合终端工具,其中组件读取具有独立生命周期的共享远程数据。