package model import ( "database/sql" ) type Step struct { Text string `json:"text"` } func (r *Recipe) CreateSteps(tx *sql.Tx) error { err := r.DeleteSteps(tx) if err != nil { return err } cmd := ` INSERT INTO steps (recipe, 'index', text) VALUES (?, ?, ?) ` for i, s := range r.Steps { _, err := tx.Exec(cmd, r.Id, i, s.Text) if err != nil { return err } } return nil } func (r *Recipe) ReadSteps(tx *sql.Tx) error { cmd := ` SELECT text FROM steps WHERE recipe = ? ORDER BY 'index' ASC ` rows, err := tx.Query(cmd, r.Id) if err != nil { return err } r.Steps = make([]Step, 0) for rows.Next() { s := Step{} err = rows.Scan(&s.Text) if err != nil { return err } r.Steps = append(r.Steps, s) } return nil } func (r *Recipe) UpdateSteps(tx *sql.Tx) error { err := r.DeleteSteps(tx) if err != nil { return err } return r.CreateSteps(tx) } func (r *Recipe) DeleteSteps(tx *sql.Tx) error { cmd := ` DELETE FROM steps WHERE recipe = ? ` _, err := tx.Exec(cmd, r.Id) if err != nil { return err } return nil }