forked from tsai/budibase
4 changed files with 89 additions and 57 deletions
@ -0,0 +1,71 @@ |
|||||
|
const CouchDB = require("../db") |
||||
|
|
||||
|
module.exports.cleanMustache = string => { |
||||
|
let charToReplace = { |
||||
|
"[": ".", |
||||
|
"]": "", |
||||
|
} |
||||
|
let regex = new RegExp(/{{[^}}]*}}/g) |
||||
|
let matches = string.match(regex) |
||||
|
if (matches == null) { |
||||
|
return string |
||||
|
} |
||||
|
for (let match of matches) { |
||||
|
let baseIdx = string.indexOf(match) |
||||
|
for (let key of Object.keys(charToReplace)) { |
||||
|
let idxChar = match.indexOf(key) |
||||
|
if (idxChar !== -1) { |
||||
|
string = |
||||
|
string.slice(baseIdx, baseIdx + idxChar) + |
||||
|
charToReplace[key] + |
||||
|
string.slice(baseIdx + idxChar + 1) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return string |
||||
|
} |
||||
|
|
||||
|
module.exports.cleanInputValues = (inputs, schema) => { |
||||
|
if (schema == null) { |
||||
|
return inputs |
||||
|
} |
||||
|
for (let inputKey of Object.keys(inputs)) { |
||||
|
let input = inputs[inputKey] |
||||
|
if (typeof input !== "string") { |
||||
|
continue |
||||
|
} |
||||
|
let propSchema = schema.properties[inputKey] |
||||
|
if (!propSchema) { |
||||
|
continue |
||||
|
} |
||||
|
if (propSchema.type === "boolean") { |
||||
|
let lcInput = input.toLowerCase() |
||||
|
if (lcInput === "true") { |
||||
|
inputs[inputKey] = true |
||||
|
} |
||||
|
if (lcInput === "false") { |
||||
|
inputs[inputKey] = false |
||||
|
} |
||||
|
} |
||||
|
if (propSchema.type === "number") { |
||||
|
let floatInput = parseFloat(input) |
||||
|
if (!isNaN(floatInput)) { |
||||
|
inputs[inputKey] = floatInput |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return inputs |
||||
|
} |
||||
|
|
||||
|
module.exports.cleanUpRecord = async (instanceId, modelId, record) => { |
||||
|
const db = new CouchDB(instanceId) |
||||
|
const model = await db.get(modelId) |
||||
|
|
||||
|
return module.exports.cleanInputValues(record, { properties: model.schema }) |
||||
|
} |
||||
|
|
||||
|
module.exports.cleanUpRecordById = async (instanceId, recordId, record) => { |
||||
|
const db = new CouchDB(instanceId) |
||||
|
const foundRecord = await db.get(recordId) |
||||
|
return module.exports.cleanUpRecord(instanceId, foundRecord.modelId, record) |
||||
|
} |
||||
Loading…
Reference in new issue