@@ -233,7 +233,7 @@ export function availableFilters(schema, currentFilters, blacklist) {
233233 return available ;
234234}
235235
236- export function findRelatedClasses ( referClass , allClasses , blacklist , currentFilters ) {
236+ export function findRelatedClasses ( referClass , allClasses , blacklist , currentFilters ) {
237237 const relatedClasses = { } ;
238238 if ( allClasses [ referClass ] ) {
239239 const availableForRefer = availableFilters ( allClasses [ referClass ] , currentFilters , blacklist ) ;
@@ -243,31 +243,42 @@ export function findRelatedClasses(referClass , allClasses, blacklist, currentFi
243243 }
244244
245245 for ( const className in allClasses ) {
246- if ( className === referClass ) {
246+ if ( className === referClass ) {
247247 continue ;
248248 }
249249
250- if ( ! checkRelation ( referClass , allClasses [ className ] ) ) {
250+ if ( ! checkRelation ( referClass , allClasses , className ) ) {
251251 continue ;
252252 }
253+
253254 const schema = allClasses [ className ] ;
254255 const available = availableFilters ( schema , currentFilters , blacklist ) ;
255256 if ( Object . keys ( available ) . length > 0 ) {
256257 relatedClasses [ className ] = available ;
257258 }
258259 }
259-
260260 return relatedClasses ;
261261}
262262
263- function checkRelation ( classname , schema ) {
264- for ( const col in schema ) {
265- if ( schema [ col ] . type === 'Pointer' && schema [ col ] . targetClass === classname ) {
266- return true ;
263+ const checkRelationHelper = ( schema , col , className ) =>
264+ schema [ col ] . type === 'Pointer' && schema [ col ] . targetClass === className ;
265+
266+ function checkRelation ( currentClassname , schemas , classToReferName ) {
267+ const currentClassSchema = schemas [ currentClassname ] ;
268+ const classSchemaBeingCheckedToRefer = schemas [ classToReferName ] ;
269+ let flag = false ;
270+
271+ for ( const col in currentClassSchema ) {
272+ if ( checkRelationHelper ( currentClassSchema , col , classToReferName ) ) {
273+ flag = true ;
267274 }
268275 }
269- return false ;
270-
276+ for ( const col in classSchemaBeingCheckedToRefer ) {
277+ if ( checkRelationHelper ( classSchemaBeingCheckedToRefer , col , currentClassname ) ) {
278+ flag = true ;
279+ }
280+ }
281+ return flag ;
271282}
272283
273284export const BLACKLISTED_FILTERS = [ 'containsAny' , 'doesNotContainAny' ] ;
0 commit comments