cleaner parsing

This commit is contained in:
Martin McKeaveney 2020-10-05 19:21:51 +01:00
parent d8787a5d48
commit c9cfa2c5f9
2 changed files with 15 additions and 20 deletions

View File

@ -4,6 +4,7 @@ const {
getRecordParams,
getModelParams,
generateModelID,
generateRecordID,
} = require("../../db/utils")
exports.fetch = async function(ctx) {
@ -83,7 +84,10 @@ exports.save = async function(ctx) {
// Populate the table with records imported from CSV in a bulk update
const data = await csvParser.transform(dataImport)
for (let row of data) row.modelId = modelToSave._id
for (let row of data) {
row._id = generateRecordID(modelToSave._id)
row.modelId = modelToSave._id
}
await db.bulkDocs(data)
}

View File

@ -25,29 +25,20 @@ function parse(path, parsers) {
}
})
result.fromFile(path).subscribe(row => {
// For each CSV row
// parse all the columns that need parsed
// For each CSV row parse all the columns that need parsed
for (let key in parsers) {
// if the parsing has already failed for a column
// skip that column
if (
!schema[key] ||
!schema[key].success ||
schema[key].type === "omit"
) {
continue
}
if (!schema[key] || schema[key].success) {
// get the validator for the column type
const validator = VALIDATORS[parsers[key].type]
try {
// allow null/undefined values
schema[key].success = !row[key] || !!validator(row[key])
schema[key].success = !row[key] || validator(row[key])
} catch (err) {
schema[key].success = false
}
}
}
})
result.on("done", error => {
if (error) {