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 } result, err := s.repo.InsertMeteoDataTX(ctx, InsertMeteoDataParams{ FileChecksum: fs.FileChecksum, Accepted: accepted, Rejected: rejected, }) if err != nil { slog.Error("error inserting meteo data", "err", err) return err } fs.BatchID = result.BatchID fs.RowsInserted = result.AcceptedCount fs.RowsRejected = result.RejectedCount return nil } func (s *Service) UpdateElapsedMS(ctx context.Context, batchID, elapsedMS int) error { if err := s.repo.UpdateBatchElapsedTime(ctx, batchID, elapsedMS); err != nil { slog.Error("error updating batch elapsed time", "err", err) } return nil } func (s *Service) GetMeteoData(params GetMeteoData) ([]MeteoData, error) { return []MeteoData{}, nil }