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) }