Added support for rounding of values by default in API responses
All checks were successful
ci/woodpecker/push/build-image Pipeline was successful
All checks were successful
ci/woodpecker/push/build-image Pipeline was successful
This commit is contained in:
@@ -51,7 +51,7 @@ type WeatherForecastPeriodUS struct {
|
||||
UVIndex *float64 `json:"uvIndex,omitempty" xml:"uvIndex,omitempty"`
|
||||
}
|
||||
|
||||
func ForecastPayload(run *model.WeatherForecastRun, units Units) any {
|
||||
func ForecastPayload(run *model.WeatherForecastRun, units Units, precision int) any {
|
||||
if run == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -64,7 +64,7 @@ func ForecastPayload(run *model.WeatherForecastRun, units Units) any {
|
||||
Product: run.Product,
|
||||
Latitude: copyFloat64Ptr(run.Latitude),
|
||||
Longitude: copyFloat64Ptr(run.Longitude),
|
||||
ElevationFeet: scalePtr(run.ElevationMeters, metersToFeetFactor),
|
||||
ElevationFeet: roundedPtr(scalePtr(run.ElevationMeters, metersToFeetFactor), precision),
|
||||
Periods: make([]WeatherForecastPeriodUS, 0, len(run.Periods)),
|
||||
}
|
||||
for _, p := range run.Periods {
|
||||
@@ -79,25 +79,68 @@ func ForecastPayload(run *model.WeatherForecastRun, units Units) any {
|
||||
TextDescription: p.TextDescription,
|
||||
DetailedText: p.DetailedText,
|
||||
IconURL: p.IconURL,
|
||||
TemperatureF: celsiusToFahrenheitPtr(p.TemperatureC),
|
||||
TemperatureFMin: celsiusToFahrenheitPtr(p.TemperatureCMin),
|
||||
TemperatureFMax: celsiusToFahrenheitPtr(p.TemperatureCMax),
|
||||
DewpointF: celsiusToFahrenheitPtr(p.DewpointC),
|
||||
RelativeHumidityPercent: copyFloat64Ptr(p.RelativeHumidityPercent),
|
||||
WindDirectionDegrees: copyFloat64Ptr(p.WindDirectionDegrees),
|
||||
WindSpeedMph: scalePtr(p.WindSpeedKmh, kmhToMphFactor),
|
||||
WindGustMph: scalePtr(p.WindGustKmh, kmhToMphFactor),
|
||||
BarometricPressureInHg: scalePtr(p.BarometricPressurePa, paToInHgFactor),
|
||||
VisibilityMiles: scalePtr(p.VisibilityMeters, metersToMilesFactor),
|
||||
ApparentTemperatureF: celsiusToFahrenheitPtr(p.ApparentTemperatureC),
|
||||
CloudCoverPercent: copyFloat64Ptr(p.CloudCoverPercent),
|
||||
ProbabilityOfPrecipitationPercent: copyFloat64Ptr(p.ProbabilityOfPrecipitationPercent),
|
||||
PrecipitationAmountIn: scalePtr(p.PrecipitationAmountMm, mmToInchesFactor),
|
||||
SnowfallDepthIn: scalePtr(p.SnowfallDepthMM, mmToInchesFactor),
|
||||
UVIndex: copyFloat64Ptr(p.UVIndex),
|
||||
TemperatureF: roundedPtr(celsiusToFahrenheitPtr(p.TemperatureC), precision),
|
||||
TemperatureFMin: roundedPtr(celsiusToFahrenheitPtr(p.TemperatureCMin), precision),
|
||||
TemperatureFMax: roundedPtr(celsiusToFahrenheitPtr(p.TemperatureCMax), precision),
|
||||
DewpointF: roundedPtr(celsiusToFahrenheitPtr(p.DewpointC), precision),
|
||||
RelativeHumidityPercent: roundedPtr(copyFloat64Ptr(p.RelativeHumidityPercent), precision),
|
||||
WindDirectionDegrees: roundedPtr(copyFloat64Ptr(p.WindDirectionDegrees), precision),
|
||||
WindSpeedMph: roundedPtr(scalePtr(p.WindSpeedKmh, kmhToMphFactor), precision),
|
||||
WindGustMph: roundedPtr(scalePtr(p.WindGustKmh, kmhToMphFactor), precision),
|
||||
BarometricPressureInHg: roundedPtr(scalePtr(p.BarometricPressurePa, paToInHgFactor), precision),
|
||||
VisibilityMiles: roundedPtr(scalePtr(p.VisibilityMeters, metersToMilesFactor), precision),
|
||||
ApparentTemperatureF: roundedPtr(celsiusToFahrenheitPtr(p.ApparentTemperatureC), precision),
|
||||
CloudCoverPercent: roundedPtr(copyFloat64Ptr(p.CloudCoverPercent), precision),
|
||||
ProbabilityOfPrecipitationPercent: roundedPtr(copyFloat64Ptr(p.ProbabilityOfPrecipitationPercent), precision),
|
||||
PrecipitationAmountIn: roundedPtr(scalePtr(p.PrecipitationAmountMm, mmToInchesFactor), precision),
|
||||
SnowfallDepthIn: roundedPtr(scalePtr(p.SnowfallDepthMM, mmToInchesFactor), precision),
|
||||
UVIndex: roundedPtr(copyFloat64Ptr(p.UVIndex), precision),
|
||||
})
|
||||
}
|
||||
return out
|
||||
}
|
||||
return run
|
||||
|
||||
out := model.WeatherForecastRun{
|
||||
LocationID: run.LocationID,
|
||||
LocationName: run.LocationName,
|
||||
IssuedAt: run.IssuedAt,
|
||||
UpdatedAt: copyTimePtr(run.UpdatedAt),
|
||||
Product: run.Product,
|
||||
Latitude: copyFloat64Ptr(run.Latitude),
|
||||
Longitude: copyFloat64Ptr(run.Longitude),
|
||||
ElevationMeters: roundedPtr(copyFloat64Ptr(run.ElevationMeters), precision),
|
||||
Periods: make([]model.WeatherForecastPeriod, 0, len(run.Periods)),
|
||||
}
|
||||
|
||||
for _, p := range run.Periods {
|
||||
out.Periods = append(out.Periods, model.WeatherForecastPeriod{
|
||||
StartTime: p.StartTime,
|
||||
EndTime: p.EndTime,
|
||||
Name: p.Name,
|
||||
IsDay: copyBoolPtr(p.IsDay),
|
||||
ConditionCode: p.ConditionCode,
|
||||
ConditionText: p.ConditionText,
|
||||
ProviderRawDescription: p.ProviderRawDescription,
|
||||
TextDescription: p.TextDescription,
|
||||
DetailedText: p.DetailedText,
|
||||
IconURL: p.IconURL,
|
||||
TemperatureC: roundedPtr(copyFloat64Ptr(p.TemperatureC), precision),
|
||||
TemperatureCMin: roundedPtr(copyFloat64Ptr(p.TemperatureCMin), precision),
|
||||
TemperatureCMax: roundedPtr(copyFloat64Ptr(p.TemperatureCMax), precision),
|
||||
DewpointC: roundedPtr(copyFloat64Ptr(p.DewpointC), precision),
|
||||
RelativeHumidityPercent: roundedPtr(copyFloat64Ptr(p.RelativeHumidityPercent), precision),
|
||||
WindDirectionDegrees: roundedPtr(copyFloat64Ptr(p.WindDirectionDegrees), precision),
|
||||
WindSpeedKmh: roundedPtr(copyFloat64Ptr(p.WindSpeedKmh), precision),
|
||||
WindGustKmh: roundedPtr(copyFloat64Ptr(p.WindGustKmh), precision),
|
||||
BarometricPressurePa: roundedPtr(copyFloat64Ptr(p.BarometricPressurePa), precision),
|
||||
VisibilityMeters: roundedPtr(copyFloat64Ptr(p.VisibilityMeters), precision),
|
||||
ApparentTemperatureC: roundedPtr(copyFloat64Ptr(p.ApparentTemperatureC), precision),
|
||||
CloudCoverPercent: roundedPtr(copyFloat64Ptr(p.CloudCoverPercent), precision),
|
||||
ProbabilityOfPrecipitationPercent: roundedPtr(copyFloat64Ptr(p.ProbabilityOfPrecipitationPercent), precision),
|
||||
PrecipitationAmountMm: roundedPtr(copyFloat64Ptr(p.PrecipitationAmountMm), precision),
|
||||
SnowfallDepthMM: roundedPtr(copyFloat64Ptr(p.SnowfallDepthMM), precision),
|
||||
UVIndex: roundedPtr(copyFloat64Ptr(p.UVIndex), precision),
|
||||
})
|
||||
}
|
||||
return &out
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user