@@ -191,6 +191,33 @@ func (r *RelationshipRules) GetRelatedEntities(
191191 return nil , err
192192 }
193193
194+ fromRelations , err := r .collectFromRelations (ctx , fromRules , entity )
195+ if err != nil {
196+ return nil , err
197+ }
198+
199+ toRelations , err := r .collectToRelations (ctx , toRules , entity )
200+ if err != nil {
201+ return nil , err
202+ }
203+
204+ for ref , relations := range fromRelations {
205+ result [ref ] = append (result [ref ], relations ... )
206+ }
207+
208+ for ref , relations := range toRelations {
209+ result [ref ] = append (result [ref ], relations ... )
210+ }
211+
212+ return result , nil
213+ }
214+
215+ func (r * RelationshipRules ) collectFromRelations (
216+ ctx context.Context ,
217+ fromRules []* oapi.RelationshipRule ,
218+ entity * oapi.RelatableEntity ,
219+ ) (map [string ][]* oapi.EntityRelation , error ) {
220+ result := make (map [string ][]* oapi.EntityRelation )
194221 for _ , rule := range fromRules {
195222 var toEntities []* oapi.RelatableEntity
196223 if rule .ToType == oapi .RelatableEntityTypeResource {
@@ -229,7 +256,15 @@ func (r *RelationshipRules) GetRelatedEntities(
229256 })
230257 }
231258 }
259+ return result , nil
260+ }
232261
262+ func (r * RelationshipRules ) collectToRelations (
263+ ctx context.Context ,
264+ toRules []* oapi.RelationshipRule ,
265+ entity * oapi.RelatableEntity ,
266+ ) (map [string ][]* oapi.EntityRelation , error ) {
267+ result := make (map [string ][]* oapi.EntityRelation )
233268 for _ , rule := range toRules {
234269 var fromEntities []* oapi.RelatableEntity
235270 if rule .FromType == oapi .RelatableEntityTypeResource {
@@ -269,7 +304,6 @@ func (r *RelationshipRules) GetRelatedEntities(
269304 })
270305 }
271306 }
272-
273307 return result , nil
274308}
275309
0 commit comments