diff --git a/Weather/Service/Data/Database.cs b/Weather/Service/Data/Database.cs index 9b0720a..87bb869 100644 --- a/Weather/Service/Data/Database.cs +++ b/Weather/Service/Data/Database.cs @@ -109,6 +109,17 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service.Data return await connection.QueryAsync(query, new { Start = start, End = end }); } + public async Task GetReadingValueSum(WeatherValueType weatherValueType, DateTimeOffset start, DateTimeOffset end) + { + await using var connection = CreateConnection(); + + var query = ResourceReader.GetString("ChrisKaczor.HomeMonitor.Weather.Service.Data.Resources.GetReadingValueSum.sql"); + + query = query.Replace("@Value", weatherValueType.ToString()); + + return await connection.ExecuteScalarAsync(query, new { Start = start, End = end }); + } + public async Task> GetReadingValueHistoryGrouped(WeatherValueType weatherValueType, DateTimeOffset start, DateTimeOffset end, int bucketMinutes) { await using var connection = CreateConnection(); diff --git a/Weather/Service/Data/Resources/GetReadingValueSum.sql b/Weather/Service/Data/Resources/GetReadingValueSum.sql new file mode 100644 index 0000000..a000541 --- /dev/null +++ b/Weather/Service/Data/Resources/GetReadingValueSum.sql @@ -0,0 +1,3 @@ +SELECT SUM(@Value) +FROM Reading +WHERE Timestamp BETWEEN @Start AND @End diff --git a/Weather/Service/MessageHandler.cs b/Weather/Service/MessageHandler.cs index 826564f..7d8cf2f 100644 --- a/Weather/Service/MessageHandler.cs +++ b/Weather/Service/MessageHandler.cs @@ -8,9 +8,11 @@ using Newtonsoft.Json; using RabbitMQ.Client; using RabbitMQ.Client.Events; using System; +using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; +using ChrisKaczor.HomeMonitor.Weather.Service.Models; namespace ChrisKaczor.HomeMonitor.Weather.Service { @@ -95,6 +97,8 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service _database.StoreWeatherData(weatherMessage); + weatherMessage.Rain = _database.GetReadingValueSum(WeatherValueType.Rain, weatherMessage.Timestamp.AddHours(1), weatherMessage.Timestamp).Result; + if (_hubConnection == null) return; @@ -103,7 +107,7 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service if (_hubConnection.State == HubConnectionState.Disconnected) _hubConnection.StartAsync().Wait(); - _hubConnection.InvokeAsync("SendLatestReading", message).Wait(); + _hubConnection.InvokeAsync("SendLatestReading", JsonConvert.SerializeObject(weatherMessage)).Wait(); } catch (Exception exception) { diff --git a/Weather/Service/Service.csproj b/Weather/Service/Service.csproj index 1b4b98c..b3ee606 100644 --- a/Weather/Service/Service.csproj +++ b/Weather/Service/Service.csproj @@ -13,6 +13,7 @@ + @@ -21,6 +22,7 @@ +