From 7415f7f584d100782380958937a07878d194ceda Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Fri, 1 Jul 2022 19:45:11 +0800 Subject: [PATCH] wip: handle empty & not empty for hm --- .../db/sql-data-mapper/lib/sql/conditionV2.ts | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/conditionV2.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/conditionV2.ts index dc617c2ca1..49ea65bd16 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/conditionV2.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/conditionV2.ts @@ -87,6 +87,31 @@ const parseConditionV2 = async ( const parentModel = await parentColumn.getModel(); await parentModel.getColumns(); if (colOptions.type === RelationTypes.HAS_MANY) { + if ( + filter.comparison_op === 'empty' || + filter.comparison_op === 'notempty' + ) { + const selectParentQb = knex(parentModel.table_name); + console.log('HERE1'); + console.log(selectParentQb.toQuery()); + + const selectHmCount = knex(childModel.table_name) + .select(childColumn.column_name) + .count(childColumn.column_name) + .whereNotNull(childColumn.column_name) + .groupBy(childColumn.column_name); + console.log('HERE2'); + console.log(selectHmCount.toQuery()); + + const q = selectParentQb.leftJoin( + selectHmCount.as('t2'), + parentModel.table_name + '.' + parentColumn.column_name, + 't2.' + childColumn.column_name + ); + console.log('HERE3'); + console.log(q.toQuery()); + return q; + } const selectQb = knex(childModel.table_name).select( childColumn.column_name );