using EFlib; using EFManager; using FluentAssertions.Common; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ApiExplorer; using Microsoft.AspNetCore.Mvc.Versioning; using Microsoft.EntityFrameworkCore; using Microsoft.OpenApi.Models; using Model; using StubLib; var builder = WebApplication.CreateBuilder(args); var connectionString = builder.Configuration.GetConnectionString("SQLiteContext"); builder.Services.AddDbContext(options => options.UseSqlite(connectionString), ServiceLifetime.Singleton); builder.Services.AddSingleton(); // builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); //builder.Services.AddSwaggerGen(); builder.Services.AddVersionedApiExplorer(setup => { setup.GroupNameFormat = "'v'VVV"; setup.SubstituteApiVersionInUrl = true; }); // Versionnage builder.Services.AddApiVersioning(opt => { opt.DefaultApiVersion = new ApiVersion(1, 0); opt.AssumeDefaultVersionWhenUnspecified = true; opt.ReportApiVersions = true; opt.ApiVersionReader = ApiVersionReader.Combine(new UrlSegmentApiVersionReader()); }); builder.Services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInfo { Title = "API v1", Version = "v1" }); options.SwaggerDoc("v2", new OpenApiInfo { Title = "API v2", Version = "v2" }); options.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); }); var app = builder.Build(); var apiVersionDescriptionProvider = app.Services.GetRequiredService(); app?.Services?.GetService()?.Database.EnsureCreated(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(options => { foreach (var description in apiVersionDescriptionProvider.ApiVersionDescriptions) { options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant()); } }); } app.UseApiVersioning(); app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run();