1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package store
- import (
- "math/rand"
- "os"
- "strconv"
- "git.andreafazzi.eu/andrea/probo/pkg/models"
- "github.com/gocarina/gocsv"
- )
- type ParticipantStore struct {
- *FilterStore[*models.Participant]
- }
- func NewParticipantStore() *ParticipantStore {
- store := new(ParticipantStore)
- store.FilterStore = NewFilterStore[*models.Participant]()
- return store
- }
- func (s *ParticipantStore) ImportCSV(path string) ([]*models.Participant, error) {
- file, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, os.ModePerm)
- if err != nil {
- return nil, err
- }
- defer file.Close()
- participants := make([]*models.Participant, 0)
- if err := gocsv.UnmarshalFile(file, &participants); err != nil {
- return nil, err
- }
- memParticipants := make([]*models.Participant, 0)
- for _, p := range participants {
- if p.Token == "" {
- p.Token = generateToken()
- }
- memParticipant, err := s.Create(p)
- if err != nil {
- return nil, err
- }
- memParticipants = append(memParticipants, memParticipant)
- }
- return memParticipants, nil
- }
- func generateToken() string {
- // Generate six random numbers from 1 to 9
- var token string
- for i := 0; i < 6; i++ {
- randomNumber := rand.Intn(9) + 1
- token += strconv.Itoa(randomNumber)
- }
- return token
- }
- // func (s *ParticipantStore) FilterInGroup(group *models.Group, filter map[string]string) []*models.Participant {
- // participants := s.ReadAll()
- // if filter == nil {
- // return participants
- // }
- // filteredParticipants := s.Filter(participants, func(p *models.Participant) bool {
- // for pk, pv := range p.Attributes {
- // for fk, fv := range filter {
- // if pk == fk && pv == fv {
- // return true
- // }
- // }
- // }
- // return false
- // })
- // group.Participants = filteredParticipants
- // return group.Participants
- // }
|