Use Program cs style entry point

This commit is contained in:
2025-01-11 15:30:11 +01:00
parent 9edb3d17de
commit 42155ac748

View File

@@ -3,69 +3,76 @@ using Electricity.Api;
using Electricity.Api.Services; using Electricity.Api.Services;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
var rootCommand = new RootCommand("ElectricityServer is a small REST API to access the electricity log database"); internal class Program
var connectionStringArgument = new Option<string>( {
private static int Main(string[] args)
{
var rootCommand = new RootCommand("ElectricityServer is a small REST API to access the electricity log database");
var connectionStringArgument = new Option<string>(
name: "--connection-string", name: "--connection-string",
description: "Filepath to the Sqlite3 database file (*.db)"); description: "Filepath to the Sqlite3 database file (*.db)");
rootCommand.AddOption(connectionStringArgument); rootCommand.AddOption(connectionStringArgument);
var result = rootCommand.Parse(args); var result = rootCommand.Parse(args);
if (result.Errors.Any()) if (result.Errors.Any())
{ {
foreach (var error in result.Errors) foreach (var error in result.Errors)
{ {
Console.WriteLine(error.Message); Console.WriteLine(error.Message);
} }
return 1; return 1;
} }
var sqlite3DatabaseFilePath = result.GetValueForOption(connectionStringArgument); var sqlite3DatabaseFilePath = result.GetValueForOption(connectionStringArgument);
if (!File.Exists(sqlite3DatabaseFilePath)) if (!File.Exists(sqlite3DatabaseFilePath))
{ {
Console.WriteLine($"Sqlite3 database <{sqlite3DatabaseFilePath}> does not exist or is inaccessible"); Console.WriteLine($"Sqlite3 database <{sqlite3DatabaseFilePath}> does not exist or is inaccessible");
return 1; return 1;
} }
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<DatabaseContext>((DbContextOptionsBuilder builder) => builder.Services.AddDbContext<DatabaseContext>((builder) =>
{ {
builder.UseSqlite($"Data Source={sqlite3DatabaseFilePath}"); builder.UseSqlite($"Data Source={sqlite3DatabaseFilePath}");
}); });
builder.Services.AddCors(options => builder.Services.AddCors(options =>
{ {
options.AddPolicy( options.AddPolicy(
name: "default", name: "default",
policy => policy =>
{ {
policy.WithOrigins("http://localhost:8080"); policy.WithOrigins("http://localhost:8080");
}); });
}); });
builder.Services.AddControllers()
builder.Services.AddControllers()
.AddJsonOptions(config => .AddJsonOptions(config =>
{ {
config.JsonSerializerOptions.PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase; config.JsonSerializerOptions.PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase;
config.JsonSerializerOptions.WriteIndented = true; config.JsonSerializerOptions.WriteIndented = true;
}); });
builder.Services.AddSwaggerGen(); builder.Services.AddSwaggerGen();
builder.Services.AddScoped<ElectricityService>(); builder.Services.AddScoped<ElectricityService>();
var app = builder.Build(); var app = builder.Build();
if (app.Environment.IsDevelopment()) if (app.Environment.IsDevelopment())
{ {
app.UseHttpsRedirection(); app.UseHttpsRedirection();
app.UseSwagger(); app.UseSwagger();
app.UseSwaggerUI(); app.UseSwaggerUI();
app.UseCors("default"); app.UseCors("default");
} }
app.UseAuthorization(); app.UseAuthorization();
app.MapControllers(); app.MapControllers();
app.Run(); app.Run();
return 0; return 0;
}
}