func()

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
}