From de2ca763c16f3ac55847e2ff6606d54d67961efa Mon Sep 17 00:00:00 2001 From: Robin Willmann Date: Mon, 18 Sep 2023 12:56:56 +0200 Subject: [PATCH] add function for ListWithCount --- wmo/queryList.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 +}