27 lines
831 B
Go
27 lines
831 B
Go
package mutil
|
|
|
|
import (
|
|
"context"
|
|
sharedmodel "git.sendico.io/tech/sxchnge/shared/model"
|
|
|
|
"git.sendico.io/tech/sxchnge/shared/database/repository"
|
|
"git.sendico.io/tech/sxchnge/shared/database/repository/builder"
|
|
"git.sendico.io/tech/sxchnge/shared/logging"
|
|
"go.mongodb.org/mongo-driver/v2/mongo"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func GetObjects[T any](ctx context.Context, logger mlogger.Logger, filter builder.Query, cursor *sharedmodel.ViewCursor, repo repository.Repository) ([]T, error) {
|
|
entities := make([]T, 0)
|
|
decoder := func(cur *mongo.Cursor) error {
|
|
var next T
|
|
if e := cur.Decode(&next); e != nil {
|
|
logger.Warn("Failed to decode entity", zap.Error(e))
|
|
return e
|
|
}
|
|
entities = append(entities, next)
|
|
return nil
|
|
}
|
|
return entities, repo.FindManyByFilter(ctx, repository.ApplyCursor(filter, cursor), decoder)
|
|
}
|