22 lines
637 B
Go
22 lines
637 B
Go
package data
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"time"
|
|
)
|
|
|
|
// FetchActualHourlyRain sums rs485_weather_10min.rain_10m_mm_x1000 over [start,end) and returns mm.
|
|
func FetchActualHourlyRain(ctx context.Context, stationID string, start, end time.Time) (float64, bool, error) {
|
|
const q = `SELECT SUM(rain_10m_mm_x1000) FROM rs485_weather_10min WHERE station_id=$1 AND bucket_start >= $2 AND bucket_start < $3`
|
|
var sum sql.NullInt64
|
|
err := DB().QueryRowContext(ctx, q, stationID, start, end).Scan(&sum)
|
|
if err != nil {
|
|
return 0, false, err
|
|
}
|
|
if !sum.Valid {
|
|
return 0, false, nil
|
|
}
|
|
return float64(sum.Int64) / 1000.0, true, nil
|
|
}
|