diff --git a/wmo/queryList.go b/wmo/queryList.go index df79545..f60bcfe 100644 --- a/wmo/queryList.go +++ b/wmo/queryList.go @@ -116,3 +116,17 @@ func (c *Coll[TData]) Count(ctx context.Context, filter ct.Filter) (int64, error return 0, nil } + +func (c *Coll[TData]) ListWithCount(ctx context.Context, filter ct.Filter, pageSize *int, inTok ct.CursorToken) ([]TData, ct.CursorToken, int64, error) { + // NOTE: Possible optimasation: Cache count in CursorToken, then fetch count only on first page. + count, err := c.Count(ctx, filter) + if err != nil { + return nil, ct.CursorToken{}, 0, err + } + + data, token, err := c.List(ctx, filter, pageSize, inTok) + if err != nil { + return nil, ct.CursorToken{}, 0, err + } + return data, token, count, nil +}