Query Builder
QueryBuilder 提供了一个流畅的 API 来构建复杂的查询条件,支持时间范围、关键词搜索、排序、分页等功能。
基本用法
go
import cursor "github.com/vibe-coding-labs/go-cursor-sdk"
// 创建查询构建器
query := cursor.NewQueryBuilder().
TimeRange(startTime, endTime).
Keyword("bug fix").
Limit(10).
SortBy("created_at", "desc").
Build()
// 使用查询
sessions, err := client.Sessions().QuerySessions(query)查询条件
时间范围
go
// 指定时间范围
query := cursor.NewQueryBuilder().
TimeRange(
time.Now().AddDate(0, 0, -7), // 7 天前
time.Now(), // 现在
).
Build()关键词搜索
go
// 搜索包含特定关键词的记录
query := cursor.NewQueryBuilder().
Keyword("bug fix").
Build()
// 多个关键词
query := cursor.NewQueryBuilder().
Keyword("bug").
Keyword("fix").
Build()排序
go
// 按创建时间降序排序
query := cursor.NewQueryBuilder().
SortBy("created_at", "desc").
Build()
// 按更新时间升序排序
query := cursor.NewQueryBuilder().
SortBy("updated_at", "asc").
Build()分页
go
// 限制返回数量
query := cursor.NewQueryBuilder().
Limit(10).
Build()
// 跳过前 N 条记录
query := cursor.NewQueryBuilder().
Offset(20).
Limit(10).
Build()过滤条件
go
// 添加自定义过滤条件
query := cursor.NewQueryBuilder().
Filter("status", "active").
Filter("type", "chat").
Build()组合查询
可以组合多个查询条件:
go
query := cursor.NewQueryBuilder().
TimeRange(
time.Now().AddDate(0, 0, -30), // 最近 30 天
time.Now(),
).
Keyword("refactor").
SortBy("created_at", "desc").
Limit(20).
Build()
sessions, err := client.Sessions().QuerySessions(query)实际示例
查找最近的会话
go
query := cursor.NewQueryBuilder().
TimeRange(
time.Now().AddDate(0, 0, -7),
time.Now(),
).
SortBy("created_at", "desc").
Limit(10).
Build()
sessions, err := client.Sessions().QuerySessions(query)
if err != nil {
log.Fatal(err)
}
for _, session := range sessions {
fmt.Printf("会话:%s\n", session.Title)
}搜索特定主题的会话
go
query := cursor.NewQueryBuilder().
Keyword("database").
Keyword("optimization").
SortBy("created_at", "desc").
Build()
sessions, err := client.Sessions().QuerySessions(query)分页查询
go
pageSize := 20
page := 0
for {
query := cursor.NewQueryBuilder().
Offset(page * pageSize).
Limit(pageSize).
SortBy("created_at", "desc").
Build()
sessions, err := client.Sessions().QuerySessions(query)
if err != nil {
log.Fatal(err)
}
if len(sessions) == 0 {
break
}
// 处理当前页的会话
for _, session := range sessions {
fmt.Printf("会话:%s\n", session.Title)
}
page++
}高级用法
复杂查询
go
// 查找最近 30 天内包含 "bug" 或 "fix" 关键词的会话
// 按创建时间降序排序,返回前 50 条
query := cursor.NewQueryBuilder().
TimeRange(
time.Now().AddDate(0, 0, -30),
time.Now(),
).
Keyword("bug").
Keyword("fix").
SortBy("created_at", "desc").
Limit(50).
Build()
sessions, err := client.Sessions().QuerySessions(query)统计查询
go
// 查询特定时间范围内的统计数据
query := cursor.NewQueryBuilder().
TimeRange(
time.Now().AddDate(0, 0, -7),
time.Now(),
).
Build()
stats, err := client.Stats().QueryStats(query)