From 4245456063159d41d2d0a74332b35b11f7e8898b Mon Sep 17 00:00:00 2001 From: gmpassos Date: Wed, 14 Jan 2026 22:25:51 -0300 Subject: [PATCH] clean code --- lib/src/bones_api_condition_sql.dart | 16 +++++++++++++--- lib/src/bones_api_entity_db_sql.dart | 8 ++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/src/bones_api_condition_sql.dart b/lib/src/bones_api_condition_sql.dart index e6d85a8..6fe2c4b 100644 --- a/lib/src/bones_api_condition_sql.dart +++ b/lib/src/bones_api_condition_sql.dart @@ -498,11 +498,21 @@ class ConditionSQLEncoder extends ConditionEncoder { ); } - final keys = c.keys.cast(); + final keys = c.keys; if (keys.isEmpty) { throw ConditionEncodingError('Empty key path: $c'); } + ConditionKeyField getKey(int index) { + var k = keys[index]; + if (k is! ConditionKeyField) { + throw ConditionEncodingError( + "key[$index] is not a `ConditionKeyField`: $k", + ); + } + return k; + } + FutureOr> walkKeys({ required int index, required String sourceTable, @@ -512,7 +522,7 @@ class ConditionSQLEncoder extends ConditionEncoder { schemeProvider: schemeProvider, context: context, targetTable: sourceTable, - key: keys[index], + key: getKey(index), ); } @@ -527,7 +537,7 @@ class ConditionSQLEncoder extends ConditionEncoder { c: c, sourceScheme: scheme, sourceTable: sourceTable, - key: keys[index], + key: getKey(index), ).resolveMapped( (nextTable) => walkKeys(index: index + 1, sourceTable: nextTable), ); diff --git a/lib/src/bones_api_entity_db_sql.dart b/lib/src/bones_api_entity_db_sql.dart index 24b3c6e..16a8473 100644 --- a/lib/src/bones_api_entity_db_sql.dart +++ b/lib/src/bones_api_entity_db_sql.dart @@ -60,8 +60,12 @@ extension on List<_JoinEntry> { /// ordered correctly, or `false` if a best-effort fallback order was used. bool sortJoins(Set initialAliases) { final List<_JoinEntry> joins = this; - // No ordering needed for zero or one JOIN. - if (joins.length <= 1) { + // No ordering needed for zero JOINs: + if (joins.isEmpty) { + return true; + } + // No ordering needed for a single JOIN; only check if it is resolved: + else if (joins.length == 1) { var resolved = joins.first.refsResolved(initialAliases); return resolved; }