diff --git a/packages/nocodb/src/lib/version-upgrader/ncFilterUpgrader_0104003.ts b/packages/nocodb/src/lib/version-upgrader/ncFilterUpgrader_0104003.ts index dbbc5ba87d..66d20406a0 100644 --- a/packages/nocodb/src/lib/version-upgrader/ncFilterUpgrader_0104003.ts +++ b/packages/nocodb/src/lib/version-upgrader/ncFilterUpgrader_0104003.ts @@ -1,13 +1,38 @@ import { NcUpgraderCtx } from './NcUpgrader'; import { MetaTable } from '../utils/globals'; +import Column from '../models/Column'; +import Filter from '../models/Filter'; +import { UITypes } from 'nocodb-sdk'; // as of 0.104.3, almost all filter operators are available to all column types // while some of them aren't supposed to be shown // this upgrader is to remove those unsupported filters / migrate to the correct filter +// changes: +// - remove `>`, `<`, `>=`, `<=` for text-based columns + export default async function ({ ncMeta }: NcUpgraderCtx) { const filters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP); + const actions = []; for (const filter of filters) { - console.log(filter); - // TODO: + const col = await Column.get({ colId: filter.fk_column_id }, ncMeta); + if (!col || !col.uidt) { + // column not found -> skip + continue; + } + if ( + [ + UITypes.SingleLineText, + UITypes.LongText, + UITypes.PhoneNumber, + UITypes.Email, + UITypes.URL, + ].includes(col.uidt) + ) { + // remove `>`, `<`, `>=`, `<=` for text-based columns + if (['gt', 'lt', 'gte', 'lte'].includes(filter.comparison_op)) { + actions.push(await Filter.delete(filter, ncMeta)); + } + } } + await Promise.all(actions); }