(uid int64, req models.CreateProgramRequest)
| 96 | func (s *ProgramStore) get(id int64) (models.Program, error) { |
| 97 | var p models.Program |
| 98 | if err := scanProgram(s.db.QueryRow(`SELECT `+programCols+` FROM programs WHERE id = ?`, id), &p); err != nil { |
| 99 | return models.Program{}, err |
| 100 | } |
| 101 | if err := s.hydrate(&p); err != nil { |
| 102 | return models.Program{}, err |
| 103 | } |
| 104 | return p, nil |
| 105 | } |
| 106 | |
| 107 | // hydrate loads a program's Days (with their Exercises/Sets) and computes |
| 108 | // CurrentDayIndex in place. |
| 109 | func (s *ProgramStore) hydrate(p *models.Program) error { |
| 110 | days, err := s.loadDays(p.ID) |
| 111 | if err != nil { |
| 112 | return err |
| 113 | } |
| 114 | p.Days = days |
| 115 | idxByID, err := s.currentDayIndex(p.UserID, []models.Program{{ID: p.ID, Days: days}}) |
| 116 | if err != nil { |
| 117 | return err |
| 118 | } |
| 119 | p.CurrentDayIndex = idxByID[p.ID] |
| 120 | return nil |
nothing calls this directly
no test coverage detected