Skip to content

Commit 1898881

Browse files
authored
chore: add datastore LR implementation (#2814)
1 parent a5040df commit 1898881

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

pkg/query/datastore.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,28 @@ func (r *RelationIterator) iterSubjectsWildcardImpl(ctx *Context, resource Objec
227227
}
228228

229229
func (r *RelationIterator) IterResourcesImpl(ctx *Context, subject ObjectAndRelation) (PathSeq, error) {
230-
return nil, spiceerrors.MustBugf("unimplemented: datastore.go IterResourcesImpl")
230+
filter := datastore.RelationshipsFilter{
231+
OptionalResourceType: r.base.DefinitionName(),
232+
OptionalResourceRelation: r.base.RelationName(),
233+
OptionalSubjectsSelectors: []datastore.SubjectsSelector{
234+
{
235+
OptionalSubjectType: r.base.Type(),
236+
OptionalSubjectIds: []string{subject.ObjectID},
237+
RelationFilter: r.buildSubjectRelationFilter(),
238+
},
239+
},
240+
}
241+
242+
relIter, err := ctx.Reader.QueryRelationships(ctx, filter,
243+
options.WithSkipCaveats(r.base.Caveat() == ""),
244+
options.WithSkipExpiration(!r.base.Expiration()),
245+
options.WithQueryShape(queryshape.MatchingResourcesForSubject),
246+
)
247+
if err != nil {
248+
return nil, err
249+
}
250+
251+
return convertRelationSeqToPathSeq(iter.Seq2[tuple.Relationship, error](relIter)), nil
231252
}
232253

233254
func (r *RelationIterator) Clone() Iterator {

0 commit comments

Comments
 (0)