handle neq for decimal

This commit is contained in:
Fendy Heryanto
2025-12-09 14:29:04 +00:00
parent 091dbf5b58
commit b47a44f843
4 changed files with 37 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
import { ncIsNull, ncIsNumber, ncIsUndefined } from 'nocodb-sdk';
import { NcError } from 'src/helpers/catchError';
import { ncIsStringHasValue } from '../../utils/handlerUtils';
import type { Knex } from 'knex';
import type { IBaseModelSqlV2 } from 'src/db/IBaseModelSqlV2';
import type { NcContext } from 'nocodb-sdk';
@@ -127,4 +128,37 @@ export class DecimalGeneralHandler extends GenericFieldHandler {
},
};
}
override async filterNeq(
args: {
sourceField: string | Knex.QueryBuilder | Knex.RawBuilder;
val: any;
},
rootArgs: {
knex: CustomKnex;
filter: Filter;
column: Column;
},
_options: FilterOptions,
) {
const { val, sourceField } = args;
const { knex } = rootArgs;
return {
rootApply: undefined,
clause: (qb: Knex.QueryBuilder) => {
if (!ncIsStringHasValue(val)) {
qb.where((nestedQb) => {
nestedQb.whereNotNull(sourceField as any);
});
} else {
qb.where((nestedQb) => {
nestedQb
.where(knex.raw('?? != ?', [sourceField, val]))
.orWhereNull(sourceField as any);
});
}
},
};
}
}

View File

@@ -12,4 +12,5 @@ export class DecimalMysqlHandler extends GenericMysqlFieldHandler {
override filterBlank = this.decimalGeneralHandler.filterBlank;
override filterNotblank = this.decimalGeneralHandler.filterNotblank;
override filterNeq = this.decimalGeneralHandler.filterNeq;
}

View File

@@ -12,4 +12,5 @@ export class DecimalPgHandler extends GenericPgFieldHandler {
override filterBlank = this.decimalGeneralHandler.filterBlank;
override filterNotblank = this.decimalGeneralHandler.filterNotblank;
override filterNeq = this.decimalGeneralHandler.filterNeq;
}

View File

@@ -12,4 +12,5 @@ export class DecimalSqliteHandler extends GenericSqliteFieldHandler {
override filterBlank = this.decimalGeneralHandler.filterBlank;
override filterNotblank = this.decimalGeneralHandler.filterNotblank;
override filterNeq = this.decimalGeneralHandler.filterNeq;
}