57 lines
1.9 KiB
C#
57 lines
1.9 KiB
C#
using Dapper;
|
|
using Npgsql;
|
|
using SDG_Backend_Barracuda.Models;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
// Add services to the container.
|
|
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
|
|
builder.Services.AddOpenApi();
|
|
|
|
// Register NpgsqlDataSource
|
|
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
|
|
builder.Services.AddNpgsqlDataSource(connectionString!);
|
|
|
|
// Register Data Tables
|
|
builder.Services.AddScoped<ICardModel, CardModel>();
|
|
builder.Services.AddScoped<ICardListModel, CardListModel>();
|
|
|
|
var app = builder.Build();
|
|
|
|
// Ensure the table exists
|
|
using (var scope = app.Services.CreateScope())
|
|
{
|
|
var dataSource = scope.ServiceProvider.GetRequiredService<NpgsqlDataSource>();
|
|
await using var connection = await dataSource.OpenConnectionAsync();
|
|
await connection.ExecuteAsync(@"
|
|
CREATE TABLE IF NOT EXISTS ""Card"" (
|
|
""Id"" SERIAL PRIMARY KEY,
|
|
""Value"" TEXT NOT NULL
|
|
);
|
|
CREATE TABLE IF NOT EXISTS ""CardList"" (
|
|
""Id"" SERIAL PRIMARY KEY
|
|
);
|
|
CREATE TABLE IF NOT EXISTS ""CardListCard"" (
|
|
""CardListId"" INTEGER NOT NULL REFERENCES ""CardList""(""Id"") ON DELETE CASCADE,
|
|
""CardId"" INTEGER NOT NULL REFERENCES ""Card""(""Id"") ON DELETE CASCADE,
|
|
PRIMARY KEY (""CardListId"", ""CardId"")
|
|
);
|
|
CREATE TABLE IF NOT EXISTS ""CardListSubList"" (
|
|
""CardListId"" INTEGER NOT NULL REFERENCES ""CardList""(""Id"") ON DELETE CASCADE,
|
|
""SubCardListId"" INTEGER NOT NULL REFERENCES ""CardList""(""Id"") ON DELETE CASCADE,
|
|
PRIMARY KEY (""CardListId"", ""SubCardListId"")
|
|
);");
|
|
}
|
|
|
|
// Configure the HTTP request pipeline.
|
|
if (app.Environment.IsDevelopment())
|
|
{
|
|
app.MapOpenApi();
|
|
}
|
|
|
|
app.UseHttpsRedirection();
|
|
|
|
CardModel.MapEndpoints(app);
|
|
CardListModel.MapEndpoints(app);
|
|
|
|
app.Run(); |