MCPcopy Create free account
hub / github.com/Permify/permify / FilterRelationTuplesQuery

Function FilterRelationTuplesQuery

internal/storage/memory/utils/filter.go:13–37  ·  view source on GitHub ↗

FilterRelationTuplesQuery - Filter relation tuples according to given filter

(tenantID string, filter *base.TupleFilter)

Source from the content-addressed store, hash-verified

11
12// FilterRelationTuplesQuery - Filter relation tuples according to given filter
13func FilterRelationTuplesQuery(tenantID string, filter *base.TupleFilter) memdb.FilterFunc {
14 return func(tupleRaw interface{}) bool {
15 tuple, ok := tupleRaw.(storage.RelationTuple)
16 if !ok {
17 return true
18 }
19 switch {
20 case tuple.TenantID != tenantID:
21 return true
22 case filter.GetEntity().GetType() != "" && tuple.EntityType != filter.GetEntity().GetType():
23 return true
24 case len(filter.GetEntity().GetIds()) > 0 && !slices.Contains(filter.GetEntity().GetIds(), tuple.EntityID):
25 return true
26 case filter.GetRelation() != "" && tuple.Relation != filter.GetRelation():
27 return true
28 case filter.GetSubject().GetType() != "" && tuple.SubjectType != filter.GetSubject().GetType():
29 return true
30 case len(filter.GetSubject().GetIds()) > 0 && !slices.Contains(filter.GetSubject().GetIds(), tuple.SubjectID):
31 return true
32 case filter.GetSubject().GetRelation() != "" && tuple.SubjectRelation != filter.GetSubject().GetRelation():
33 return true
34 }
35 return false
36 }
37}
38
39// FilterAttributesQuery - Filter attributes according to given filter
40func FilterAttributesQuery(tenantID string, filter *base.AttributeFilter) memdb.FilterFunc {

Callers 5

QueryRelationshipsMethod · 0.92
ReadRelationshipsMethod · 0.92
DeleteMethod · 0.92
runOperationMethod · 0.92

Calls 5

GetTypeMethod · 0.65
GetEntityMethod · 0.45
GetIdsMethod · 0.45
GetRelationMethod · 0.45
GetSubjectMethod · 0.45

Tested by

no test coverage detected