package management import ( "context" "github.com/tech/sendico/pkg/model" "go.mongodb.org/mongo-driver/v2/bson" ) type Role interface { // Create a new role in an organization (returns the created Role with its ID). Create( ctx context.Context, orgRef bson.ObjectID, description *model.Describable, ) (*model.RoleDescription, error) // Delete a role entirely. This will cascade and remove all associated Delete( ctx context.Context, roleRef bson.ObjectID, ) error // Assign a role to a user in a specific organization. Assign( ctx context.Context, role *model.Role, ) error // Revoke a role from a user in a specific organization. Revoke( ctx context.Context, roleRef, accountRef, orgRef bson.ObjectID, ) error // List all roles in an organization or globally if orgRef is bson.NilObjectID. List( ctx context.Context, orgRef bson.ObjectID, ) ([]model.RoleDescription, error) }