Browse Source

fix: include formula tree generation part in validate

pull/7279/head
Pranav C 11 months ago
parent
commit
8a2df33690
  1. 2
      packages/nocodb/src/db/BaseModelSqlv2.ts
  2. 33
      packages/nocodb/src/db/formulav2/formulaQueryBuilderv2.ts

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

@ -5909,7 +5909,7 @@ function getCompositePk(primaryKeys: Column[], row) {
return primaryKeys.map((c) => row[c.title]).join('___');
}
function haveFormulaColumn(columns: Column[]) {
export function haveFormulaColumn(columns: Column[]) {
return columns.some((c) => c.uidt === UITypes.Formula);
}

33
packages/nocodb/src/db/formulav2/formulaQueryBuilderv2.ts

@ -1057,23 +1057,24 @@ export default async function formulaQueryBuilderv2(
const knex = baseModelSqlv2.dbDriver;
// register jsep curly hook once only
jsep.plugins.register(jsepCurlyHook);
// generate qb
const qb = await _formulaQueryBuilder(
baseModelSqlv2,
_tree,
alias,
model,
aliasToColumn,
tableAlias,
parsedTree ??
(await column
?.getColOptions<FormulaColumn>()
.then((formula) => formula?.getParsedTree())),
);
let qb;
try {
// generate qb
qb = await _formulaQueryBuilder(
baseModelSqlv2,
_tree,
alias,
model,
aliasToColumn,
tableAlias,
parsedTree ??
(await column
?.getColOptions<FormulaColumn>()
.then((formula) => formula?.getParsedTree())),
);
if (!validateFormula) return qb;
if (!validateFormula) return qb;
try {
// dry run qb.builder to see if it will break the grid view or not
// if so, set formula error and show empty selectQb instead
await baseModelSqlv2.execAndParse(
@ -1095,6 +1096,8 @@ export default async function formulaQueryBuilderv2(
}
}
} catch (e) {
if (!validateFormula) throw e;
console.error(e);
if (column) {
const formula = await column.getColOptions<FormulaColumn>();

Loading…
Cancel
Save