From 3e51dde6d2be09351faaed3e6c79f214977d65ff Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 29 Aug 2024 17:58:11 +0100 Subject: [PATCH] Check for alias as well when deciding whether filter requires relationship addition. --- packages/backend-core/src/sql/sql.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/backend-core/src/sql/sql.ts b/packages/backend-core/src/sql/sql.ts index 84231288a2..9b6819d433 100644 --- a/packages/backend-core/src/sql/sql.ts +++ b/packages/backend-core/src/sql/sql.ts @@ -346,21 +346,25 @@ class InternalBuilder { const { relationships, endpoint, tableAliases: aliases } = this.query const tableName = endpoint.entityId const fromAlias = aliases?.[tableName] || tableName + const matches = (possibleTable: string) => + filterKey.startsWith(`${possibleTable}`) if (!relationships) { return query } for (const relationship of relationships) { + const relatedTableName = relationship.tableName + const toAlias = aliases?.[relatedTableName] || relatedTableName // this is the relationship which is being filtered if ( - filterKey.startsWith(`${relationship.tableName}.`) && + (matches(relatedTableName) || matches(toAlias)) && relationship.to && relationship.tableName ) { - const relatedTableName = relationship.tableName - const toAlias = aliases?.[relatedTableName] || relatedTableName let subQuery = mainKnex .select(mainKnex.raw(1)) .from({ [toAlias]: relatedTableName }) + // relationships should never have more than the base limit + .limit(getBaseLimit()) let mainTableRelatesTo = toAlias if (relationship.through) { const throughAlias =