(ctx context.Context, q queryer, id int64)
| 172 | } |
| 173 | |
| 174 | func getTx(ctx context.Context, q queryer, id int64) (Instruction, error) { |
| 175 | var in Instruction |
| 176 | var created, updated string |
| 177 | err := q.QueryRowContext(ctx, `SELECT id, name, description, content, created_at, updated_at FROM instructions WHERE id = ?`, id). |
| 178 | Scan(&in.ID, &in.Name, &in.Description, &in.Content, &created, &updated) |
| 179 | if err == sql.ErrNoRows { |
| 180 | return Instruction{}, ErrInstructionNotFound |
| 181 | } |
| 182 | if err != nil { |
| 183 | return Instruction{}, fmt.Errorf("instructions: get: %w", err) |
| 184 | } |
| 185 | in.CreatedAt = parseTime(created) |
| 186 | in.UpdatedAt = parseTime(updated) |
| 187 | installs, err := installsFor(ctx, q, id) |
| 188 | if err != nil { |
| 189 | return Instruction{}, err |
| 190 | } |
| 191 | in.Installs = installs |
| 192 | return in, nil |
| 193 | } |
| 194 | |
| 195 | // queryer abstracts *sql.DB and *sql.Tx for shared read helpers. |
| 196 | type queryer interface { |
no test coverage detected