change db types for better handling

This commit is contained in:
Pedro Pérez 2025-10-23 17:23:52 +02:00
parent 5e8ccc6be1
commit 28c2c6a5d6
3 changed files with 21 additions and 7 deletions

View File

@ -13,7 +13,7 @@ type MeteoData struct {
MaxTemp float32 `csv:"temperatura maxima"`
MinTemp float32 `csv:"temperatura minima"`
Rainfall float32 `csv:"precipitacion"`
Cloudiness float32 `csv:"nubosidad"`
Cloudiness int `csv:"nubosidad"`
}
type RejectedMeteoData struct {

View File

@ -129,7 +129,7 @@ func normalize(record H) (*MeteoData, error) {
return nil, err
}
meteoData.Cloudiness, err = parseFloatField(record, "Nubosidad (%)", ErrMissingOrInvalidCloudiness)
meteoData.Cloudiness, err = parseIntField(record, "Nubosidad (%)", ErrMissingOrInvalidCloudiness)
if err != nil {
return nil, err
}
@ -166,3 +166,15 @@ func parseFloatField(record H, key string, errMissing error) (float32, error) {
}
return 0, errMissing
}
func parseIntField(record H, key string, errMissing error) (int, error) {
if str, ok := record[key].(string); ok && str != "" {
str = strings.TrimSpace(str)
i, err := strconv.Atoi(str)
if err != nil {
return 0, errMissing
}
return i, nil
}
return 0, errMissing
}

View File

@ -1,14 +1,16 @@
create extension citext; -- noqa
create table public.meteo_data
(
id serial primary key,
location_name citext not null,
max_temp float not null,
min_temp float not null,
rainfall float not null,
cloudiness float not null,
max_temp numeric(5,2) not null,
min_temp numeric(5,2) not null,
rainfall numeric(5,2) not null,
cloudiness int not null,
created_at timestamp not null default now()
created_at date not null default now()
);
create index idx_meteo_data_location_name on public.meteo_data (location_name);