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 ResolutionMetadata ¶
type ResolutionMetadata struct {
QueryCount *uint32
}
func NewResolutionMetadata ¶
func NewResolutionMetadata() *ResolutionMetadata
type ReverseExpandQuery ¶
type ReverseExpandQuery struct {
// contains filtered or unexported fields
}
func NewReverseExpandQuery ¶
func NewReverseExpandQuery(ds storage.RelationshipTupleReader, ts *typesystem.TypeSystem, opts ...ReverseExpandQueryOption) *ReverseExpandQuery
func (*ReverseExpandQuery) Execute ¶
func (c *ReverseExpandQuery) Execute( ctx context.Context, req *ReverseExpandRequest, resultChan chan<- *ReverseExpandResult, resolutionMetadata *ResolutionMetadata, )
Execute yields all the objects of the provided objectType that the given user has, possibly, a specific relation with and sends those objects to resultChan. It MUST guarantee no duplicate objects sent.
If an error is encountered before resolving all objects: the provided channel will NOT be closed and - if the error is context cancellation or deadline: Execute may send the error through the channel - otherwise: Execute will send the error through the channel If no errors, 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 WithResolveNodeBreadthLimit ¶
func WithResolveNodeBreadthLimit(limit uint32) ReverseExpandQueryOption
func WithResolveNodeLimit ¶
func WithResolveNodeLimit(limit uint32) ReverseExpandQueryOption
type ReverseExpandRequest ¶
type ReverseExpandResult ¶
type ReverseExpandResult struct { Err error 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 ¶
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