add repository draft
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user