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

Method ToQuery

internal/relationtuple/uuid_mapping.go:137–196  ·  view source on GitHub ↗
(ctx context.Context, q *RelationQuery)

Source from the content-addressed store, hash-verified

135}
136
137func (m *Mapper) ToQuery(ctx context.Context, q *RelationQuery) (res *ketoapi.RelationQuery, err error) {
138 ctx, span := trace.SpanFromContext(ctx).TracerProvider().Tracer("keto/internal/relationtuple").Start(ctx, "Mapper.ToQuery")
139 defer otelx.End(span, &err)
140
141 onSuccess := newSuccess(&err)
142 defer onSuccess.apply()
143
144 var s []string
145 var u []uuid.UUID
146 res = &ketoapi.RelationQuery{
147 Relation: q.Relation,
148 }
149
150 nm, err := m.D.Config(ctx).NamespaceManager()
151 if err != nil {
152 return nil, err
153 }
154
155 if q.Namespace != nil {
156 n, err := nm.GetNamespaceByName(ctx, *q.Namespace)
157 if err != nil {
158 return nil, err
159 }
160 res.Namespace = new(n.Name)
161 }
162 if q.Object != nil {
163 u = append(u, *q.Object)
164 onSuccess.do(func() {
165 res.Object = new(s[0])
166 })
167 }
168 if q.Subject != nil {
169 switch sub := q.Subject.(type) {
170 case *SubjectID:
171 u = append(u, sub.ID)
172 onSuccess.do(func() {
173 res.SubjectID = new(s[len(s)-1])
174 })
175 case *SubjectSet:
176 u = append(u, sub.Object)
177 n, err := nm.GetNamespaceByName(ctx, sub.Namespace)
178 if err != nil {
179 return nil, err
180 }
181 onSuccess.do(func() {
182 res.SubjectSet = &ketoapi.SubjectSet{
183 Namespace: n.Name,
184 Object: s[len(s)-1],
185 Relation: sub.Relation,
186 }
187 })
188 }
189 }
190
191 s, err = m.D.MappingManager().MapUUIDsToStrings(ctx, u...)
192 if err != nil {
193 return nil, err
194 }

Callers 3

TestMapperFunction · 0.45
TestWriteHandlersFunction · 0.45
checkDirectMethod · 0.45

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 2

TestMapperFunction · 0.36
TestWriteHandlersFunction · 0.36