package services import ( "encoding/csv" "fmt" "strings" "github.com/pkg/errors" ) type Member struct { Name string Email string } func ParseMembersFromBytes(year int, fileBytes []byte) ([]Member, error) { reader := csv.NewReader(strings.NewReader(string(fileBytes))) records, err := reader.ReadAll() if err != nil { return nil, errors.Wrap(err, "failed to read CSV from bytes") } var members []Member for i, record := range records { if i == 0 { continue // Skip the first line (column headers) } if len(record) < 4 { continue } firstName := record[1] lastName := record[2] email := record[3] members = append(members, Member{ Name: fmt.Sprintf("%s %s", firstName, lastName), Email: email, }) } if len(members) == 0 { members = []Member{} } return members, nil }