meteologica/service_a/internal/domains/meteo/domain.go

48 lines
1.8 KiB
Go

package meteo
import (
"errors"
"time"
)
type H map[string]any
type MeteoData struct {
Timestamp time.Time `csv:"fecha"`
Location string `csv:"ciudad"`
MaxTemp float32 `csv:"temperatura maxima"`
MinTemp float32 `csv:"temperatura minima"`
Rainfall float32 `csv:"precipitacion"`
Cloudiness float32 `csv:"nubosidad"`
}
type RejectedMeteoData struct {
RowValue string
Reason string
}
type FileStats struct {
RowsInserted int `json:"rows_inserted"`
RowsRejected int `json:"rows_rejected"`
ElapsedMS int `json:"elapsed_ms"`
FileChecksum string `json:"file_checksum"`
}
var (
ErrCannotParseFile = errors.New("cannot parse file")
ErrValidateRecord = errors.New("error validating record")
ErrRecordNotValid = errors.New("record not valid")
ErrReadingCSVHeader = errors.New("error reading CSV header")
ErrReadingCSVRow = errors.New("error reading CSV row")
ErrMissingOrInvalidDateField = errors.New("missing or invalid date field")
ErrMissingOrInvalidCityField = errors.New("missing or invalid city field")
ErrMissingOrInvalidMaxTemp = errors.New("missing or invalid max temp field")
ErrMissingOrInvalidMinTemp = errors.New("missing or invalid min temp field")
ErrMissingOrInvalidRainfall = errors.New("missing or invalid rainfall field")
ErrMissingOrInvalidCloudiness = errors.New("missing or invalid cloudiness field")
ErrMaxTempOutOfRange = errors.New("max temp out of range (must be <= 60°C)")
ErrMinTempOutOfRange = errors.New("min temp out of range (must be >= -20°C)")
ErrRainfallOutOfRange = errors.New("rainfall out of range (must be 0-500 mm)")
ErrCloudinessOutOfRange = errors.New("cloudiness out of range (must be 0-100%)")
)