diff --git a/api/Public/Endpoints/PublicEndpoints.cs b/api/Public/Endpoints/PublicEndpoints.cs new file mode 100644 index 0000000..5a32984 --- /dev/null +++ b/api/Public/Endpoints/PublicEndpoints.cs @@ -0,0 +1,31 @@ +using Microsoft.Data.Sqlite; + +public static class PublicEndpoints +{ + public static void MapPublicEndpoints(WebApplication app) + { + app.MapGet("/", () => + { + return new + { + Version = "1.0.0" + }; + }) + .WithName("GetVersion"); + + app.MapGet("/health/db", async (SqliteConnection connection) => + { + await connection.OpenAsync(); + await using var command = connection.CreateCommand(); + command.CommandText = "SELECT 1"; + var result = await command.ExecuteScalarAsync(); + + return Results.Ok(new + { + Database = "ok", + Result = result + }); + }) + .WithName("GetDatabaseHealth"); + } +} diff --git a/api/Public/Program.cs b/api/Public/Program.cs index 3dd1942..7223a11 100644 --- a/api/Public/Program.cs +++ b/api/Public/Program.cs @@ -1,60 +1,44 @@ using Microsoft.Data.Sqlite; -var builder = WebApplication.CreateBuilder(args); - -var configuredConnectionString = builder.Configuration.GetConnectionString("DefaultConnection") - ?? throw new InvalidOperationException("Connection string 'DefaultConnection' was not found."); - -var sqliteConnectionStringBuilder = new SqliteConnectionStringBuilder(configuredConnectionString); -var databasePath = Path.GetFullPath(Path.Combine(builder.Environment.ContentRootPath, sqliteConnectionStringBuilder.DataSource)); -var databaseDirectory = Path.GetDirectoryName(databasePath) - ?? throw new InvalidOperationException("Could not determine database directory."); - -Directory.CreateDirectory(databaseDirectory); - -sqliteConnectionStringBuilder.DataSource = databasePath; -var resolvedConnectionString = sqliteConnectionStringBuilder.ToString(); - -builder.Services.AddScoped(_ => new SqliteConnection(resolvedConnectionString)); - -builder.Services.AddOpenApi(); - -var app = builder.Build(); - -using (var connection = new SqliteConnection(resolvedConnectionString)) +public class Program { - connection.Open(); -} - -if (app.Environment.IsDevelopment()) -{ - app.MapOpenApi(); -} - -app.UseHttpsRedirection(); - -app.MapGet("/", () => -{ - return new + public static void Main(string[] args) { - Version = "1.0.0" - }; -}) -.WithName("GetVersion"); + var builder = WebApplication.CreateBuilder(args); -app.MapGet("/health/db", async (SqliteConnection connection) => -{ - await connection.OpenAsync(); - await using var command = connection.CreateCommand(); - command.CommandText = "SELECT 1"; - var result = await command.ExecuteScalarAsync(); + var configuredConnectionString = builder.Configuration.GetConnectionString("DefaultConnection") + ?? throw new InvalidOperationException("Connection string 'DefaultConnection' was not found."); - return Results.Ok(new - { - Database = "ok", - Result = result - }); -}) -.WithName("GetDatabaseHealth"); + var sqliteConnectionStringBuilder = new SqliteConnectionStringBuilder(configuredConnectionString); + var databasePath = Path.GetFullPath(Path.Combine(builder.Environment.ContentRootPath, sqliteConnectionStringBuilder.DataSource)); + var databaseDirectory = Path.GetDirectoryName(databasePath) + ?? throw new InvalidOperationException("Could not determine database directory."); -app.Run(); + Directory.CreateDirectory(databaseDirectory); + + sqliteConnectionStringBuilder.DataSource = databasePath; + var resolvedConnectionString = sqliteConnectionStringBuilder.ToString(); + + builder.Services.AddScoped(_ => new SqliteConnection(resolvedConnectionString)); + + builder.Services.AddOpenApi(); + + var app = builder.Build(); + + using (var connection = new SqliteConnection(resolvedConnectionString)) + { + connection.Open(); + } + + if (app.Environment.IsDevelopment()) + { + app.MapOpenApi(); + } + + app.UseHttpsRedirection(); + + PublicEndpoints.MapPublicEndpoints(app); + + app.Run(); + } +}