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

Method ToTuple

internal/relationtuple/uuid_mapping.go:268–316  ·  view source on GitHub ↗
(ctx context.Context, ts ...*RelationTuple)

Source from the content-addressed store, hash-verified

266}
267
268func (m *Mapper) ToTuple(ctx context.Context, ts ...*RelationTuple) (res []*ketoapi.RelationTuple, err error) {
269 ctx, span := trace.SpanFromContext(ctx).TracerProvider().Tracer("keto/internal/relationtuple").Start(ctx, "Mapper.ToTuple")
270 defer otelx.End(span, &err)
271
272 onSuccess := newSuccess(&err)
273 defer onSuccess.apply()
274
275 res = make([]*ketoapi.RelationTuple, 0, len(ts))
276 u := make([]uuid.UUID, 0, len(ts)*2)
277 var s []string
278
279 for _, t := range ts {
280 mt := ketoapi.RelationTuple{
281 Namespace: t.Namespace,
282 Relation: t.Relation,
283 }
284 i := len(res)
285
286 switch sub := t.Subject.(type) {
287 case *SubjectID:
288 u = append(u, sub.ID)
289 onSuccess.do(func() {
290 mt.SubjectID = new(s[2*i])
291 })
292 case *SubjectSet:
293 u = append(u, sub.Object)
294 onSuccess.do(func() {
295 mt.SubjectSet = &ketoapi.SubjectSet{
296 Namespace: sub.Namespace,
297 Object: s[2*i],
298 Relation: sub.Relation,
299 }
300 })
301 }
302
303 u = append(u, t.Object)
304 onSuccess.do(func() {
305 mt.Object = s[2*i+1]
306 })
307
308 res = append(res, &mt)
309 }
310
311 s, err = m.D.MappingManager().MapUUIDsToStrings(ctx, u...)
312 if err != nil {
313 return nil, err
314 }
315 return res, nil
316}
317
318func (m *Mapper) FromSubjectSet(ctx context.Context, set *ketoapi.SubjectSet) (_ *SubjectSet, err error) {
319 ctx, span := trace.SpanFromContext(ctx).TracerProvider().Tracer("keto/internal/relationtuple").Start(ctx, "Mapper.FromSubjectSet")

Callers 5

TestMigrationsFunction · 0.80
TestMapperFunction · 0.80
ListRelationTuplesMethod · 0.80
getRelationsMethod · 0.80
TestWriteHandlersFunction · 0.80

Calls 6

newSuccessFunction · 0.85
doMethod · 0.80
TracerMethod · 0.65
MapUUIDsToStringsMethod · 0.65
MappingManagerMethod · 0.65
applyMethod · 0.45

Tested by 3

TestMigrationsFunction · 0.64
TestMapperFunction · 0.64
TestWriteHandlersFunction · 0.64