MCPcopy
hub / github.com/ory/keto / ToTree

Method ToTree

internal/relationtuple/uuid_mapping.go:346–398  ·  view source on GitHub ↗
(ctx context.Context, tree *Tree)

Source from the content-addressed store, hash-verified

344}
345
346func (m *Mapper) ToTree(ctx context.Context, tree *Tree) (res *ketoapi.Tree[*ketoapi.RelationTuple], err error) {
347 ctx, span := trace.SpanFromContext(ctx).TracerProvider().Tracer("keto/internal/relationtuple").Start(ctx, "Mapper.ToTree")
348 defer otelx.End(span, &err)
349
350 onSuccess := newSuccess(&err)
351 defer onSuccess.apply()
352
353 var s []string
354 var u []uuid.UUID
355 res = &ketoapi.Tree[*ketoapi.RelationTuple]{
356 Type: tree.Type,
357 Tuple: &ketoapi.RelationTuple{},
358 }
359
360 nm, err := m.D.Config(ctx).NamespaceManager()
361 if err != nil {
362 return nil, err
363 }
364
365 switch sub := tree.Subject.(type) {
366 case *SubjectSet:
367 u = append(u, sub.Object)
368 n, err := nm.GetNamespaceByName(ctx, sub.Namespace)
369 if err != nil {
370 return nil, err
371 }
372 onSuccess.do(func() {
373 res.Tuple.SubjectSet = &ketoapi.SubjectSet{
374 Namespace: n.Name,
375 Object: s[0],
376 Relation: sub.Relation,
377 }
378 })
379 case *SubjectID:
380 u = append(u, sub.ID)
381 onSuccess.do(func() {
382 res.Tuple.SubjectID = new(s[0])
383 })
384 }
385 for _, c := range tree.Children {
386 mc, err := m.ToTree(ctx, c)
387 if err != nil {
388 return nil, err
389 }
390 res.Children = append(res.Children, mc)
391 }
392 s, err = m.D.MappingManager().MapUUIDsToStrings(ctx, u...)
393 if err != nil {
394 return nil, err
395 }
396
397 return res, nil
398}
399
400func MappingManagerTest(t *testing.T, m MappingManager) {
401 ctx := context.Background()

Callers 3

getExpandMethod · 0.80
ExpandMethod · 0.80
TestMapperFunction · 0.80

Calls 9

newSuccessFunction · 0.85
doMethod · 0.80
TracerMethod · 0.65
NamespaceManagerMethod · 0.65
ConfigMethod · 0.65
GetNamespaceByNameMethod · 0.65
MapUUIDsToStringsMethod · 0.65
MappingManagerMethod · 0.65
applyMethod · 0.45

Tested by 1

TestMapperFunction · 0.64