44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
using System;
|
|
using System.Data.Odbc;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Routing;
|
|
|
|
namespace AS400API.Endpoints;
|
|
|
|
public static class SystemEndpoints
|
|
{
|
|
public static IEndpointRouteBuilder MapRootEndpoints(this IEndpointRouteBuilder app)
|
|
{
|
|
app.MapGet("/", () => Results.Ok(new { name = "AS400API", status = "ok" }));
|
|
return app;
|
|
}
|
|
|
|
public static RouteGroupBuilder MapSystemEndpoints(this RouteGroupBuilder group)
|
|
{
|
|
group.MapGet("/v1/health", async (OdbcConnection conn) =>
|
|
{
|
|
try
|
|
{
|
|
await conn.OpenAsync();
|
|
using var cmd = conn.CreateCommand();
|
|
cmd.CommandText = "SELECT CURRENT_DATE AS THE_DATE FROM SYSIBM.SYSDUMMY1";
|
|
using var reader = await cmd.ExecuteReaderAsync();
|
|
if (await reader.ReadAsync())
|
|
{
|
|
var d = reader.GetDateTime(0);
|
|
return Results.Ok(new { AS400 = "online", currentDateOnAS400 = d.ToString("yyyy-MM-dd"), timestamp = DateTime.UtcNow });
|
|
}
|
|
|
|
return Results.Ok(new { AS400 = "online", note = "no rows" });
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return Results.Problem($"AS400 ODBC check failed: {ex.Message}");
|
|
}
|
|
}).AllowAnonymous();
|
|
|
|
return group;
|
|
}
|
|
}
|