reverseexpand

package
v1.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2024 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Overview

Package reverseexpand contains the code that handles the ReverseExpand API

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConditionalResultStatus

type ConditionalResultStatus int
const (
	RequiresFurtherEvalStatus ConditionalResultStatus = iota
	NoFurtherEvalStatus
)

type IsUserRef

type IsUserRef interface {
	GetObjectType() string
	String() string
	// contains filtered or unexported methods
}

type ResolutionMetadata

type ResolutionMetadata struct {
	// The number of times we are expanding from each node to find set of objects
	DispatchCounter *atomic.Uint32

	// WasThrottled indicates whether the request was throttled
	WasThrottled *atomic.Bool
}

func NewResolutionMetadata

func NewResolutionMetadata() *ResolutionMetadata

type ReverseExpandQuery

type ReverseExpandQuery struct {
	// contains filtered or unexported fields
}

func (*ReverseExpandQuery) Execute

func (c *ReverseExpandQuery) Execute(
	ctx context.Context,
	req *ReverseExpandRequest,
	resultChan chan<- *ReverseExpandResult,
	resolutionMetadata *ResolutionMetadata,
) error

Execute yields all the objects of the provided objectType that the given user possibly has, a specific relation with and sends those objects to resultChan. It MUST guarantee no duplicate objects sent.

This function respects context timeouts and cancellations. If an error is encountered (e.g. context timeout) before resolving all objects, then the provided channel will NOT be closed, and it will return the error.

If no errors occur, then Execute will yield all of the objects on the provided channel and then close the channel to signal that it is done.

type ReverseExpandQueryOption

type ReverseExpandQueryOption func(d *ReverseExpandQuery)

func WithDispatchThrottlerConfig added in v1.5.4

func WithDispatchThrottlerConfig(config threshold.Config) ReverseExpandQueryOption

func WithLogger added in v1.4.3

func WithLogger(logger logger.Logger) ReverseExpandQueryOption

func WithResolveNodeBreadthLimit

func WithResolveNodeBreadthLimit(limit uint32) ReverseExpandQueryOption

func WithResolveNodeLimit

func WithResolveNodeLimit(limit uint32) ReverseExpandQueryOption

type ReverseExpandRequest

type ReverseExpandRequest struct {
	StoreID          string
	ObjectType       string
	Relation         string
	User             IsUserRef
	ContextualTuples []*openfgav1.TupleKey
	Context          *structpb.Struct
	Consistency      openfgav1.ConsistencyPreference
	// contains filtered or unexported fields
}

type ReverseExpandResult

type ReverseExpandResult struct {
	Object       string
	ResultStatus ConditionalResultStatus
}

type UserRef

type UserRef struct {

	// Types that are assignable to Ref
	//  *UserRef_Object
	//  *UserRef_TypedWildcard
	//  *UserRef_ObjectRelation
	Ref IsUserRef
}

type UserRefObject

type UserRefObject struct {
	Object *openfgav1.Object
}

func (*UserRefObject) GetObjectType

func (u *UserRefObject) GetObjectType() string

func (*UserRefObject) String

func (u *UserRefObject) String() string

type UserRefObjectRelation

type UserRefObjectRelation struct {
	ObjectRelation *openfgav1.ObjectRelation
	Condition      *openfgav1.RelationshipCondition
}

func (*UserRefObjectRelation) GetObjectType

func (u *UserRefObjectRelation) GetObjectType() string

func (*UserRefObjectRelation) String

func (u *UserRefObjectRelation) String() string

type UserRefTypedWildcard

type UserRefTypedWildcard struct {
	Type string
}

func (*UserRefTypedWildcard) GetObjectType

func (u *UserRefTypedWildcard) GetObjectType() string

func (*UserRefTypedWildcard) String

func (u *UserRefTypedWildcard) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL