Browse Source

Merge pull request #6974 from nocodb/nc-fix/6943-apply-filter-validation-for-v1-apis

fix: Apply filter validation on v1 list api
pull/6994/head
Raju Udava 1 year ago committed by GitHub
parent
commit
9fedf1498e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      packages/nocodb/src/db/conditionV2.ts
  2. 5
      packages/nocodb/src/helpers/getAst.ts
  3. 3
      packages/nocodb/src/services/datas.service.ts

2
packages/nocodb/src/db/conditionV2.ts

@ -342,7 +342,7 @@ const parseConditionV2 = async (
return (qbP: Knex.QueryBuilder) => {
if (filter.comparison_op in negatedMapping)
qbP.where((qb) =>
qbP
qb
.whereNotIn(childColumn.column_name, selectQb)
.orWhereNull(childColumn.column_name),
);

5
packages/nocodb/src/helpers/getAst.ts

@ -68,7 +68,10 @@ const getAst = async ({
fields = Array.isArray(fields) ? fields : fields.split(',');
if (throwErrorIfInvalidParams) {
const colAliasMap = await model.getColAliasMapping();
const invalidFields = fields.filter((f) => !colAliasMap[f]);
const aliasColMap = await model.getAliasColMapping();
const invalidFields = fields.filter(
(f) => !colAliasMap[f] && !aliasColMap[f],
);
if (invalidFields.length) {
NcError.unprocessableEntity(
`Following fields are invalid: ${invalidFields.join(', ')}`,

3
packages/nocodb/src/services/datas.service.ts

@ -27,6 +27,7 @@ export class DatasService {
model,
view,
query: param.query,
throwErrorIfInvalidParams: true,
});
}
@ -51,7 +52,7 @@ export class DatasService {
dbDriver: await NcConnectionMgrv2.get(source),
});
const countArgs: any = { ...param.query };
const countArgs: any = { ...param.query, throwErrorIfInvalidParams: true };
try {
countArgs.filterArr = JSON.parse(countArgs.filterArrJson);
} catch (e) {}

Loading…
Cancel
Save