diff --git a/components/settings.js b/components/settings.js index 95863472c706cbf802e55993456b7071fb9f80a2..d6a4a6ec29ab3fedcfbdf7b662a0b481e77f9906 100644 --- a/components/settings.js +++ b/components/settings.js @@ -85,7 +85,7 @@ async function getFileContentAndImport() { } try { - importCsv(fileContent) + importCsv(fileContent, false) } catch(err) { //TODO } diff --git a/db/index.js b/db/index.js index 330509d726c6391f517b224d57cb404a80f27708..0b08149bfdf9949afb0fa3386eae61232bcc0077 100644 --- a/db/index.js +++ b/db/index.js @@ -230,7 +230,11 @@ function getDbType(modelProperties, path) { async function importCsv(csv, deleteFirst) { const cycleDayProperties = db.schema.find(x => x.name === 'CycleDay').properties const parseFuncs = { - bool: val => val.toLowerCase() === 'false' ? false : true, + bool: val => { + if (val.toLowerCase() === 'true') return true + if (val.toLowerCase() === 'false') return false + return val + }, int: parseNumberIfPossible, float: parseNumberIfPossible, double: parseNumberIfPossible, @@ -245,6 +249,7 @@ async function importCsv(csv, deleteFirst) { } const config = { + ignoreEmpty: true, colParser: getColumnNamesForCsv().reduce((acc, colName) => { const path = colName.split('.') const dbType = getDbType(cycleDayProperties, path) @@ -270,13 +275,13 @@ async function importCsv(csv, deleteFirst) { putNullForEmptySymptoms(cycleDays) if (deleteFirst) { - db.write(() => { - db.delete(db.objects('CycleDay')) + db.write(() => { + db.delete(db.objects('CycleDay')) cycleDays.forEach(tryToCreateCycleDay) }) } else { db.write(() => { - cycleDays.forEach((day, i) => { + cycleDays.forEach((day, i) => { const existing = getCycleDay(day.date) if (existing) { db.delete(existing) @@ -288,14 +293,12 @@ async function importCsv(csv, deleteFirst) { } function tryToCreateCycleDay(day, i) { - try { - db.create('CycleDay', day) - } catch (err) { - const msg = `Error for line ${i + 1}(${day.date}): ${err.message}` - throw new Error(msg) - } - }) - }) + try { + db.create('CycleDay', day) + } catch (err) { + const msg = `Error for line ${i + 1}(${day.date}): ${err.message}` + throw new Error(msg) + } } function validateHeaders(headers) {