using Microsoft.Extensions.DependencyInjection; using Microsoft.OpenApi.Models; using Oms.Application.Dtos.Orders; using Swashbuckle.AspNetCore.SwaggerGen; using System.Reflection; var services = new ServiceCollection(); services.AddSwaggerGen(c => { c.SwaggerDoc("OMS-Order", new OpenApiInfo { Title = "OMS-Order", Version = "v1" }); c.CustomSchemaIds(t => t.FullName?.Replace("+", ".") ?? t.Name); }); var sp = services.BuildServiceProvider(); var gen = sp.GetRequiredService(); var repo = new SchemaRepository("OMS-Order"); void Try(string name, Type t) { try { gen.GenerateSchema(t, repo); Console.WriteLine($"OK {name}"); } catch (Exception ex) { Console.WriteLine($"FAIL {name}: {ex.GetType().Name}: {ex.Message}"); if (ex.InnerException != null) Console.WriteLine($" inner: {ex.InnerException.Message}"); } } Try(nameof(OrderParcelBatchCreateInput), typeof(OrderParcelBatchCreateInput)); Try(nameof(OrderParcelCreateInput), typeof(OrderParcelCreateInput)); Try(nameof(OrderPriceCheckResultOutput), typeof(OrderPriceCheckResultOutput)); Try(nameof(OrderPriceCheckOutput), typeof(OrderPriceCheckOutput)); Try(nameof(OrderUploadInput), typeof(OrderUploadInput)); Try(nameof(OrderTemplateCustomDetailOutput), typeof(OrderTemplateCustomDetailOutput)); Try(nameof(OrderOutput), typeof(OrderOutput)); Try(nameof(OrderPaginatedOutput), typeof(OrderPaginatedOutput)); // Also generate for all public types in Orders Dtos var asm = typeof(OrderOutput).Assembly; foreach (var t in asm.GetTypes().Where(x => x.IsPublic && x.Namespace == "Oms.Application.Dtos.Orders").OrderBy(x => x.Name)) { Try(t.Name, t); } Console.WriteLine($"Schemas generated: {repo.Schemas.Count}");