Determine isCycleStart on importing data too

This commit is contained in:
Julia Friesel
2018-10-25 15:42:10 +02:00
parent 918d383163
commit 8445cc8ed8
2 changed files with 21 additions and 6 deletions
+14 -5
View File
@@ -40,7 +40,6 @@ export async function openDb ({ hash, persistConnection }) {
getMensesDaysRightAfter = cycle.getMensesDaysRightAfter getMensesDaysRightAfter = cycle.getMensesDaysRightAfter
} }
export function getBleedingDaysSortedByDate() { export function getBleedingDaysSortedByDate() {
return db.objects('CycleDay').filtered('bleeding != null').sorted('date', true) return db.objects('CycleDay').filtered('bleeding != null').sorted('date', true)
} }
@@ -97,8 +96,16 @@ export function saveSymptom(symptom, cycleDay, val) {
const mensesDaysAfter = getMensesDaysRightAfter(cycleDay) const mensesDaysAfter = getMensesDaysRightAfter(cycleDay)
mensesDaysAfter.forEach(day => day.isCycleStart = false) mensesDaysAfter.forEach(day => day.isCycleStart = false)
} }
}
export function updateCycleStartsForAllCycleDays() {
db.write(() => {
getBleedingDaysSortedByDate().forEach(day => {
if (isMensesStart(day)) {
day.isCycleStart = true
}
})
})
} }
export function getOrCreateCycleDay(localDate) { export function getOrCreateCycleDay(localDate) {
@@ -128,8 +135,10 @@ export function getPreviousTemperature(cycleDay) {
return winner.temperature.value return winner.temperature.value
} }
export function tryToCreateCycleDay(day, i) { function tryToCreateCycleDayFromImport(day, i) {
try { try {
// we cannot know this yet, gets detected afterwards
day.isCycleStart = false
db.create('CycleDay', day) db.create('CycleDay', day)
} catch (err) { } catch (err) {
const msg = `Line ${i + 1}(${day.date}): ${err.message}` const msg = `Line ${i + 1}(${day.date}): ${err.message}`
@@ -157,7 +166,7 @@ export function getSchema() {
export function tryToImportWithDelete(cycleDays) { export function tryToImportWithDelete(cycleDays) {
db.write(() => { db.write(() => {
db.delete(db.objects('CycleDay')) db.delete(db.objects('CycleDay'))
cycleDays.forEach(tryToCreateCycleDay) cycleDays.forEach(tryToCreateCycleDayFromImport)
}) })
} }
@@ -166,7 +175,7 @@ export function tryToImportWithoutDelete(cycleDays) {
cycleDays.forEach((day, i) => { cycleDays.forEach((day, i) => {
const existing = getCycleDay(day.date) const existing = getCycleDay(day.date)
if (existing) db.delete(existing) if (existing) db.delete(existing)
tryToCreateCycleDay(day, i) tryToCreateCycleDayFromImport(day, i)
}) })
}) })
} }
+7 -1
View File
@@ -1,6 +1,11 @@
import csvParser from 'csvtojson' import csvParser from 'csvtojson'
import isObject from 'isobject' import isObject from 'isobject'
import { getSchema, tryToImportWithDelete, tryToImportWithoutDelete } from '../../db' import {
getSchema,
tryToImportWithDelete,
tryToImportWithoutDelete,
updateCycleStartsForAllCycleDays
} from '../../db'
import getColumnNamesForCsv from './get-csv-column-names' import getColumnNamesForCsv from './get-csv-column-names'
export default async function importCsv(csv, deleteFirst) { export default async function importCsv(csv, deleteFirst) {
@@ -49,6 +54,7 @@ export default async function importCsv(csv, deleteFirst) {
} else { } else {
tryToImportWithoutDelete(cycleDays) tryToImportWithoutDelete(cycleDays)
} }
updateCycleStartsForAllCycleDays()
} }
function validateHeaders(headers) { function validateHeaders(headers) {