package meteo import ( "io" "log/slog" ) type Service struct { csv CSV repo Repository } func NewService(repo Repository) *Service { return &Service{ csv: CSV{}, repo: repo, } } func (s *Service) IngestCSV(r io.Reader, fs *FileStats) error { accepted, rejected, err := s.csv.Parse(r) if err != nil { return err } // TODO call insertToDB s.insertAcceptedToDB(accepted, fs) s.insertRejectedToDB(rejected, fs) return nil } func (s *Service) insertAcceptedToDB(data []MeteoData, fs *FileStats) error { var err error fs.RowsInserted, err = s.repo.InsertAcceptedMeteoData(data) if err != nil { slog.Error("error", "err", err) return err } return nil } func (s *Service) insertRejectedToDB(data []RejectedMeteoData, fs *FileStats) error { var err error fs.RowsRejected, err = s.repo.InsertRejectedMeteoData(data) if err != nil { return err } return nil }