24 lines
654 B
JavaScript
24 lines
654 B
JavaScript
|
const { FieldTypes } = require("../../constants")
|
||
|
const { processStringSync } = require("@budibase/string-templates")
|
||
|
|
||
|
/**
|
||
|
* Looks through the rows provided and finds formulas - which it then processes.
|
||
|
*/
|
||
|
exports.processFormulas = (table, rows) => {
|
||
|
const single = !Array.isArray(rows)
|
||
|
if (single) {
|
||
|
rows = [rows]
|
||
|
}
|
||
|
for (let [column, schema] of Object.entries(table.schema)) {
|
||
|
if (schema.type !== FieldTypes.FORMULA) {
|
||
|
continue
|
||
|
}
|
||
|
// iterate through rows and process formula
|
||
|
rows = rows.map(row => ({
|
||
|
...row,
|
||
|
[column]: processStringSync(schema.formula, row),
|
||
|
}))
|
||
|
}
|
||
|
return single ? rows[0] : rows
|
||
|
}
|