in src/middleware/db.go [254:297]
func (s SQLStorage) Update(t Todo) error {
orig, err := s.Read(strconv.Itoa(t.ID))
if err != nil {
s.log(fmt.Sprintf("could not read item to update it: %s", err))
return err
}
sql := `
UPDATE todo
SET title = $1, updated = NOW()
WHERE id = $2
`
if t.Complete && !orig.Complete {
sql = `
UPDATE todo
SET title = $1, updated = NOW(), completed = NOW()
WHERE id = $2
`
}
if orig.Complete && !t.Complete {
sql = `
UPDATE todo
SET title = $1, updated = NOW(), completed = NULL
WHERE id = $2
`
}
op, err := s.db.Prepare(sql)
if err != nil {
s.log(fmt.Sprintf("could not prepare item to update: %s", err))
return fmt.Errorf("update error: on prepare: %s", err)
}
_, err = op.Exec(t.Title, t.ID)
if err != nil {
s.log(fmt.Sprintf("could not exec update: %s", err))
return fmt.Errorf("update error: on exec: %s", err)
}
return nil
}