package auth import ( "context" "github.com/tech/sendico/pkg/db/repository" "github.com/tech/sendico/pkg/db/repository/builder" "github.com/tech/sendico/pkg/db/storable" "github.com/tech/sendico/pkg/mlogger" "github.com/tech/sendico/pkg/model" "go.mongodb.org/mongo-driver/bson/primitive" ) // IndexableDB implements reordering with permission checking type IndexableDB[T storable.Storable] interface { // Reorder implements reordering with permission checking using EnforceBatch Reorder(ctx context.Context, accountRef, objectRef primitive.ObjectID, newIndex int, filter builder.Query) error } // NewIndexableDB creates a new auth.IndexableDB instance func NewIndexableDB[T storable.Storable]( repo repository.Repository, logger mlogger.Logger, enforcer Enforcer, createEmpty func() T, getIndexable func(T) *model.Indexable, ) IndexableDB[T] { return newIndexableDBImp(repo, logger, enforcer, createEmpty, getIndexable) }