39 lines
1.6 KiB
Go
39 lines
1.6 KiB
Go
package auth
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/tech/sendico/pkg/db/policy"
|
|
"github.com/tech/sendico/pkg/db/repository/builder"
|
|
"github.com/tech/sendico/pkg/db/template"
|
|
"github.com/tech/sendico/pkg/mlogger"
|
|
"github.com/tech/sendico/pkg/model"
|
|
"github.com/tech/sendico/pkg/mservice"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
)
|
|
|
|
type ProtectedDB[T model.PermissionBoundStorable] interface {
|
|
Create(ctx context.Context, accountRef, organizationRef primitive.ObjectID, object T) error
|
|
InsertMany(ctx context.Context, accountRef, organizationRef primitive.ObjectID, objects []T) error
|
|
Get(ctx context.Context, accountRef, objectRef primitive.ObjectID, result T) error
|
|
Update(ctx context.Context, accountRef primitive.ObjectID, object T) error
|
|
Delete(ctx context.Context, accountRef, objectRef primitive.ObjectID) error
|
|
DeleteCascadeAuth(ctx context.Context, accountRef, objectRef primitive.ObjectID) error
|
|
Patch(ctx context.Context, accountRef, objectRef primitive.ObjectID, patch builder.Patch) error
|
|
PatchMany(ctx context.Context, accountRef primitive.ObjectID, query builder.Query, patch builder.Patch) (int, error)
|
|
Unprotected() template.DB[T]
|
|
ListIDs(ctx context.Context, action model.Action, accountRef primitive.ObjectID, query builder.Query) ([]primitive.ObjectID, error)
|
|
}
|
|
|
|
func CreateDB[T model.PermissionBoundStorable](
|
|
ctx context.Context,
|
|
l mlogger.Logger,
|
|
pdb policy.DB,
|
|
enforcer Enforcer,
|
|
collection mservice.Type,
|
|
db *mongo.Database,
|
|
) (ProtectedDB[T], error) {
|
|
return CreateDBImp[T](ctx, l, pdb, enforcer, collection, db)
|
|
}
|