File size: 767 Bytes
fea99b3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package entutils

import (
	"github.com/samber/lo"

	"github.com/openmeterio/openmeter/pkg/pagination"
	"github.com/openmeterio/openmeter/pkg/slicesx"
)

func MapPaged[I, O any](paged pagination.Result[I], mapper func(I) O) pagination.Result[O] {
	return pagination.Result[O]{
		TotalCount: paged.TotalCount,
		Items: lo.Map(paged.Items, func(item I, _ int) O {
			return mapper(item)
		}),
		Page: paged.Page,
	}
}

func MapPagedWithErr[I, O any](paged pagination.Result[I], mapper func(I) (O, error)) (pagination.Result[O], error) {
	items, err := slicesx.MapWithErr(paged.Items, mapper)
	if err != nil {
		return pagination.Result[O]{}, err
	}

	return pagination.Result[O]{
		TotalCount: paged.TotalCount,
		Items:      items,
		Page:       paged.Page,
	}, nil
}