From 5a445fd8a15170f1e8cad0324fd5959ce8bfa50e Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Wed, 18 Oct 2023 19:56:36 +0530 Subject: [PATCH] feat: import date/datetime filters from airtable Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> --- .../jobs/at-import/at-import.processor.ts | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/packages/nocodb/src/modules/jobs/jobs/at-import/at-import.processor.ts b/packages/nocodb/src/modules/jobs/jobs/at-import/at-import.processor.ts index 9b883a59f8..7849a6786d 100644 --- a/packages/nocodb/src/modules/jobs/jobs/at-import/at-import.processor.ts +++ b/packages/nocodb/src/modules/jobs/jobs/at-import/at-import.processor.ts @@ -2012,8 +2012,8 @@ export class AtImportProcessor { '<=': 'lte', '>': 'gt', '>=': 'gte', - isEmpty: 'empty', - isNotEmpty: 'notempty', + isEmpty: 'blank', + isNotEmpty: 'notblank', contains: 'like', doesNotContain: 'nlike', isAnyOf: 'anyof', @@ -2043,12 +2043,9 @@ export class AtImportProcessor { const ncFilters = []; // console.log(filter) - if ( - datatype === UITypes.Date || - datatype === UITypes.DateTime || - datatype === UITypes.Links - ) { - // skip filters over data datatype + if (datatype === UITypes.Links) { + // skip filters for links; Link filters in NocoDB are only rollup counts + // where-as in airtable, filter can be textual updateMigrationSkipLog( await sMap.getNcNameFromAtId(viewId), colSchema.title, @@ -2092,6 +2089,26 @@ export class AtImportProcessor { }; ncFilters.push(fx); } + } else if (datatype === UITypes.Date || datatype === UITypes.DateTime) { + if (filter.operator === 'isWithin') { + const fx = { + fk_column_id: columnId, + logical_op: f.conjunction, + comparison_op: filter.operator, + comparison_sub_op: filter.value?.mode, + value: filter.value?.numberOfDays, + }; + ncFilters.push(fx); + } else { + const fx = { + fk_column_id: columnId, + logical_op: f.conjunction, + comparison_op: filterMap[filter.operator], + comparison_sub_op: filter.value?.mode, + value: filter.value?.exactDate, + }; + ncFilters.push(fx); + } } // other data types (number/ text/ long text/ ..)