Browse Source

refactor(nocodb): removeLikeAndNlikeFilters

pull/5185/head
Wing-Kam Wong 2 years ago
parent
commit
dd633ee357
  1. 21
      packages/nocodb/src/lib/version-upgrader/ncFilterUpgrader_0105003.ts

21
packages/nocodb/src/lib/version-upgrader/ncFilterUpgrader_0105003.ts

@ -6,7 +6,8 @@ import Filter from '../models/Filter';
import { UITypes } from 'nocodb-sdk'; import { UITypes } from 'nocodb-sdk';
// as of 0.105.3, date / datetime filters include `is like` and `is not like` which are not practical // as of 0.105.3, date / datetime filters include `is like` and `is not like` which are not practical
// `removeFilters` in this upgrader is simply to remove them // `removeLikeAndNlikeFilters` in this upgrader is simply to remove them
// since the upcoming version will introduce a set of new filters for date / datetime with a new `comparison_sub_op` // since the upcoming version will introduce a set of new filters for date / datetime with a new `comparison_sub_op`
// `eq` and `neq` would become `is` / `is not` (comparison_op) + `exact date` (comparison_sub_op) // `eq` and `neq` would become `is` / `is not` (comparison_op) + `exact date` (comparison_sub_op)
// `migrateEqAndNeqFilters` in this upgrader is to add `exact date` in comparison_sub_op // `migrateEqAndNeqFilters` in this upgrader is to add `exact date` in comparison_sub_op
@ -16,16 +17,8 @@ import { UITypes } from 'nocodb-sdk';
// - remove `is like` and `is not like` // - remove `is like` and `is not like`
// - add `exact date` in comparison_sub_op for existing filters `eq` and `neq` // - add `exact date` in comparison_sub_op for existing filters `eq` and `neq`
const removeLikeFilters = (filter, ncMeta) => { async function removeLikeAndNlikeFilters(ncMeta: NcMetaIO) {
let actions = []; let actions = [];
// remove `is like` and `is not like`
if (['like', 'nlike'].includes(filter.comparison_op)) {
actions.push(Filter.delete(filter.id, ncMeta));
}
return actions;
};
async function removeFilters(ncMeta: NcMetaIO) {
const filters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP); const filters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP);
for (const filter of filters) { for (const filter of filters) {
if (!filter.fk_column_id || filter.is_group) { if (!filter.fk_column_id || filter.is_group) {
@ -33,9 +26,13 @@ async function removeFilters(ncMeta: NcMetaIO) {
} }
const col = await Column.get({ colId: filter.fk_column_id }, ncMeta); const col = await Column.get({ colId: filter.fk_column_id }, ncMeta);
if ([UITypes.Date, UITypes.DateTime].includes(col.uidt)) { if ([UITypes.Date, UITypes.DateTime].includes(col.uidt)) {
await Promise.all(removeLikeFilters(filter, ncMeta)); // remove `is like` and `is not like`
if (['like', 'nlike'].includes(filter.comparison_op)) {
actions.push(Filter.delete(filter.id, ncMeta));
}
} }
} }
await Promise.all(actions);
} }
async function migrateEqAndNeqFilters(ncMeta: NcMetaIO) { async function migrateEqAndNeqFilters(ncMeta: NcMetaIO) {
@ -59,6 +56,6 @@ async function migrateEqAndNeqFilters(ncMeta: NcMetaIO) {
} }
export default async function ({ ncMeta }: NcUpgraderCtx) { export default async function ({ ncMeta }: NcUpgraderCtx) {
await removeFilters(ncMeta); await removeLikeAndNlikeFilters(ncMeta);
await migrateEqAndNeqFilters(ncMeta); await migrateEqAndNeqFilters(ncMeta);
} }

Loading…
Cancel
Save