package meteo import ( "context" "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(ctx context.Context, r io.Reader, fs *FileStats) error { accepted, rejected, err := s.csv.Parse(r) if err != nil { return err } // TODO call insertToDB s.insertAcceptedToDB(ctx, accepted, fs) s.insertRejectedToDB(ctx, rejected, fs) return nil } func (s *Service) insertAcceptedToDB(ctx context.Context, data []MeteoData, fs *FileStats) error { var err error fs.RowsInserted, err = s.repo.InsertAcceptedMeteoData(ctx, data) if err != nil { slog.Error("error", "err", err) return err } return nil } func (s *Service) insertRejectedToDB(ctx context.Context, data []RejectedMeteoData, fs *FileStats) error { var err error fs.RowsRejected, err = s.repo.InsertRejectedMeteoData(ctx, data) if err != nil { return err } return nil }