mirror of
https://github.com/ckaczor/HomeMonitor.git
synced 2026-01-18 09:35:40 -05:00
Add API to get most recent reading
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
using Dapper;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System.Data.SqlClient;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ChrisKaczor.HomeMonitor.Weather.Service.Data
|
||||
{
|
||||
@@ -24,32 +25,31 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service.Data
|
||||
InitialCatalog = "master"
|
||||
};
|
||||
|
||||
using (var connection = new SqlConnection(connectionStringBuilder.ConnectionString))
|
||||
using var connection = new SqlConnection(connectionStringBuilder.ConnectionString);
|
||||
|
||||
var command = new SqlCommand { Connection = connection };
|
||||
|
||||
connection.Open();
|
||||
|
||||
// Check to see if the database exists
|
||||
command.CommandText = $"SELECT CAST(1 as bit) from sys.databases WHERE name='{_configuration["Weather:Database:Name"]}'";
|
||||
var databaseExists = (bool?)command.ExecuteScalar();
|
||||
|
||||
// Create database if needed
|
||||
if (!databaseExists.GetValueOrDefault(false))
|
||||
{
|
||||
var command = new SqlCommand { Connection = connection };
|
||||
|
||||
connection.Open();
|
||||
|
||||
// Check to see if the database exists
|
||||
command.CommandText = $"SELECT CAST(1 as bit) from sys.databases WHERE name='{_configuration["Weather:Database:Name"]}'";
|
||||
var databaseExists = (bool?)command.ExecuteScalar();
|
||||
|
||||
// Create database if needed
|
||||
if (!databaseExists.GetValueOrDefault(false))
|
||||
{
|
||||
command.CommandText = $"CREATE DATABASE {_configuration["Weather:Database:Name"]}";
|
||||
command.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
// Switch to the database now that we're sure it exists
|
||||
connection.ChangeDatabase(_configuration["Weather:Database:Name"]);
|
||||
|
||||
var schema = ResourceReader.GetString("ChrisKaczor.HomeMonitor.Weather.Service.Data.Resources.Schema.sql");
|
||||
|
||||
// Make sure the database is up to date
|
||||
command.CommandText = schema;
|
||||
command.CommandText = $"CREATE DATABASE {_configuration["Weather:Database:Name"]}";
|
||||
command.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
// Switch to the database now that we're sure it exists
|
||||
connection.ChangeDatabase(_configuration["Weather:Database:Name"]);
|
||||
|
||||
var schema = ResourceReader.GetString("ChrisKaczor.HomeMonitor.Weather.Service.Data.Resources.Schema.sql");
|
||||
|
||||
// Make sure the database is up to date
|
||||
command.CommandText = schema;
|
||||
command.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
private SqlConnection CreateConnection()
|
||||
@@ -70,12 +70,20 @@ namespace ChrisKaczor.HomeMonitor.Weather.Service.Data
|
||||
|
||||
public void StoreWeatherData(WeatherMessage weatherMessage)
|
||||
{
|
||||
using (var connection = CreateConnection())
|
||||
{
|
||||
var query = ResourceReader.GetString("ChrisKaczor.HomeMonitor.Weather.Service.Data.Resources.CreateReading.sql");
|
||||
using var connection = CreateConnection();
|
||||
|
||||
connection.Query(query, weatherMessage);
|
||||
}
|
||||
var query = ResourceReader.GetString("ChrisKaczor.HomeMonitor.Weather.Service.Data.Resources.CreateReading.sql");
|
||||
|
||||
connection.Query(query, weatherMessage);
|
||||
}
|
||||
|
||||
public async Task<WeatherReading> GetRecentReading()
|
||||
{
|
||||
await using var connection = CreateConnection();
|
||||
|
||||
var query = ResourceReader.GetString("ChrisKaczor.HomeMonitor.Weather.Service.Data.Resources.GetRecentReading.sql");
|
||||
|
||||
return await connection.QueryFirstOrDefaultAsync<WeatherReading>(query);
|
||||
}
|
||||
}
|
||||
}
|
||||
17
Weather/Service/Data/Resources/GetRecentReading.sql
Normal file
17
Weather/Service/Data/Resources/GetRecentReading.sql
Normal file
@@ -0,0 +1,17 @@
|
||||
SELECT TOP 1 Timestamp,
|
||||
WindDirection,
|
||||
WindSpeed,
|
||||
Humidity,
|
||||
HumidityTemperature,
|
||||
Rain,
|
||||
Pressure,
|
||||
PressureTemperature,
|
||||
BatteryLevel,
|
||||
LightLevel,
|
||||
Latitude,
|
||||
Longitude,
|
||||
Altitude,
|
||||
SatelliteCount,
|
||||
GpsTimestamp
|
||||
FROM Reading
|
||||
ORDER BY Timestamp DESC
|
||||
Reference in New Issue
Block a user