重构:简化查询接口

- RecordQuery.QueryOldest 和 QueryNewest 不再接收 startIdx/endIdx 参数
- 查询方法返回纯 Record 列表,状态判断移到调用方
- TopicProcessor 的查询方法负责添加状态信息
- 更新所有测试文件以适配新接口
This commit is contained in:
2025-10-04 00:10:14 +08:00
parent a421ca1d85
commit 5c028a55b3
8 changed files with 168 additions and 208 deletions

View File

@@ -541,47 +541,30 @@ func handleQuery(w http.ResponseWriter, r *http.Request) {
startIdx := seq.GetProcessingIndex(topic)
endIdx := seq.GetReadIndex(topic)
// 获取索引用于转换
processor, err := seq.GetProcessor(topic)
if err != nil {
http.Error(w, err.Error(), http.StatusNotFound)
return
}
index := processor.Index()
// 合并查询结果:向后 + 当前 + 向前
var results []*seqlog.RecordWithStatus
// 向后查询
if backward > 0 && startIdx > 0 {
startPos, err := index.GetOffset(startIdx)
backResults, err := query.QueryNewest(startIdx-1, backward, startIdx, endIdx)
if err == nil {
backResults, err := query.QueryAt(startPos, -1, backward, startIdx, endIdx)
if err == nil {
results = append(results, backResults...)
}
results = append(results, backResults...)
}
}
// 当前位置
if startIdx < endIdx {
startPos, err := index.GetOffset(startIdx)
currentResults, err := query.QueryOldest(startIdx, 1, startIdx, endIdx)
if err == nil {
currentResults, err := query.QueryAt(startPos, 0, 1, startIdx, endIdx)
if err == nil {
results = append(results, currentResults...)
}
results = append(results, currentResults...)
}
}
// 向前查询
if forward > 0 {
startPos, err := index.GetOffset(startIdx)
forwardResults, err := query.QueryOldest(endIdx, forward, startIdx, endIdx)
if err == nil {
forwardResults, err := query.QueryAt(startPos, 1, forward, startIdx, endIdx)
if err == nil {
results = append(results, forwardResults...)
}
results = append(results, forwardResults...)
}
}