func scanFormations(rows *pgx.Rows) ([]*ct.Formation, error) { var formations []*ct.Formation for rows.Next() { formation, err := scanFormation(rows) if err != nil { rows.Close() return nil, err } formations = append(formations, formation) } return formations, rows.Err() }
func releaseList(rows *pgx.Rows) ([]*ct.Release, error) { var releases []*ct.Release for rows.Next() { release, err := scanRelease(rows) if err != nil { rows.Close() return nil, err } releases = append(releases, release) } return releases, rows.Err() }
func (r *FormationRepo) listExpanded(rows *pgx.Rows) ([]*ct.ExpandedFormation, error) { defer rows.Close() var formations []*ct.ExpandedFormation // artifactIDs is a list of artifact IDs related to the formation list // and is used to populate the formation's artifact fields using a // subsequent artifact list query artifactIDs := make(map[string]struct{}) for rows.Next() { formation, err := scanExpandedFormation(rows) if err != nil { return nil, err } formations = append(formations, formation) for _, id := range formation.Release.ArtifactIDs { artifactIDs[id] = struct{}{} } } if len(artifactIDs) > 0 { ids := make([]string, 0, len(artifactIDs)) for id := range artifactIDs { ids = append(ids, id) } artifacts, err := r.artifacts.ListIDs(ids...) if err != nil { return nil, err } for _, formation := range formations { populateFormationArtifacts(formation, artifacts) } } return formations, rows.Err() }