Files
GameList/Program.cs

46 lines
1.4 KiB
C#

using GameList.Data;
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
var dataDirectory = Path.Combine(builder.Environment.ContentRootPath, "App_Data");
Directory.CreateDirectory(dataDirectory);
var configuredConnection = builder.Configuration.GetConnectionString("Default");
var dbPath = Path.Combine(dataDirectory, "gamelist.db");
var connectionBuilder = new SqliteConnectionStringBuilder();
if (string.IsNullOrWhiteSpace(configuredConnection))
{
connectionBuilder.DataSource = dbPath;
}
else
{
connectionBuilder = new SqliteConnectionStringBuilder(configuredConnection);
if (connectionBuilder.DataSource.Contains("App_Data", StringComparison.OrdinalIgnoreCase))
{
var fileName = Path.GetFileName(connectionBuilder.DataSource);
connectionBuilder.DataSource = Path.Combine(dataDirectory, fileName);
}
else if (!Path.IsPathRooted(connectionBuilder.DataSource))
{
connectionBuilder.DataSource = Path.GetFullPath(connectionBuilder.DataSource, dataDirectory);
}
}
var connectionString = connectionBuilder.ToString();
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlite(connectionString));
var app = builder.Build();
app.UseDefaultFiles();
app.UseStaticFiles();
app.MapGet("/health", () => Results.Ok(new { status = "ok" }));
app.Run();