From 739825b4c1a809c4de4014c945ec2ea55f5a8cdb Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Sun, 16 Jun 2024 02:07:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B4=D0=B2=D0=B0=20=D1=8D=D0=BD=D0=B4=D0=BF=D0=BE=D0=B8=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=20=D0=B2=20=D0=B4=D0=B5=D0=B2=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=B8=20=D0=BC=D0=B8=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=B1=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DatabaseContext.cs | 4 +- .../HackathonPreparing.ApiService/Program.cs | 21 ++++++++- .../HackathonPreparing/HackathonPreparing.sln | 43 +++++++++++++++++++ 3 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 HackathonPreparing/HackathonPreparing/HackathonPreparing.sln diff --git a/HackathonPreparing/HackathonPreparing/HackathonPreparing.ApiService/DatabaseContext.cs b/HackathonPreparing/HackathonPreparing/HackathonPreparing.ApiService/DatabaseContext.cs index 7c8ba64..706023e 100644 --- a/HackathonPreparing/HackathonPreparing/HackathonPreparing.ApiService/DatabaseContext.cs +++ b/HackathonPreparing/HackathonPreparing/HackathonPreparing.ApiService/DatabaseContext.cs @@ -7,6 +7,7 @@ public sealed class DatabaseContext : DbContext public DatabaseContext(DbContextOptions options) : base(options) { + } public DbSet Forecasts => Set(); @@ -49,9 +50,6 @@ public class WeatherForecast Summary = summary; } - public WeatherForecast() - { - } public int Id { get; set; } public DateOnly Date { get; set; } diff --git a/HackathonPreparing/HackathonPreparing/HackathonPreparing.ApiService/Program.cs b/HackathonPreparing/HackathonPreparing/HackathonPreparing.ApiService/Program.cs index ae99025..dad49dc 100644 --- a/HackathonPreparing/HackathonPreparing/HackathonPreparing.ApiService/Program.cs +++ b/HackathonPreparing/HackathonPreparing/HackathonPreparing.ApiService/Program.cs @@ -1,9 +1,11 @@ +using System.Diagnostics; using HackathonPreparing.ApiService; using Microsoft.EntityFrameworkCore; using Microsoft.OpenApi.Models; var builder = WebApplication.CreateBuilder(args); + builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(c => { @@ -19,25 +21,42 @@ builder.AddServiceDefaults(); // Add services to the container. builder.Services.AddProblemDetails(); + builder.AddNpgsqlDbContext("prod", null, optionsBuilder => optionsBuilder.UseNpgsql(npgsqlBuilder => npgsqlBuilder.MigrationsAssembly(typeof(Program).Assembly.GetName().Name))); var app = builder.Build(); + + +var logger = app.Services.GetRequiredService>(); + + + + + + if (app.Environment.IsDevelopment()) { + logger.LogWarning("!!!!!!! Call /ensure-created enpoint or /migrate if no db !!!!!!!!"); app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Weather Forecast API V1"); }); + app.MapGet("/ensure-created", async (DatabaseContext db) => await db.Database.EnsureCreatedAsync()); + + app.MapGet("/migrate", async (DatabaseContext db) => await db.Database.MigrateAsync()); } // Configure the HTTP request pipeline. app.UseExceptionHandler(); + + + app.MapGet("/weatherforecast", async (DatabaseContext db) => await db.Forecasts.ToListAsync()); app.MapDefaultEndpoints(); -app.Run(); \ No newline at end of file +app.Run(); diff --git a/HackathonPreparing/HackathonPreparing/HackathonPreparing.sln b/HackathonPreparing/HackathonPreparing/HackathonPreparing.sln new file mode 100644 index 0000000..76f05c5 --- /dev/null +++ b/HackathonPreparing/HackathonPreparing/HackathonPreparing.sln @@ -0,0 +1,43 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HackathonPreparing.ApiService", "HackathonPreparing.ApiService\HackathonPreparing.ApiService.csproj", "{DF197643-F98E-43D0-8C93-78C27D11CB26}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HackathonPreparing.AppHost", "HackathonPreparing.AppHost\HackathonPreparing.AppHost.csproj", "{DD3AB30E-1CB0-4E60-B513-7BBA4A0EA7B0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HackathonPreparing.ServiceDefaults", "HackathonPreparing.ServiceDefaults\HackathonPreparing.ServiceDefaults.csproj", "{29EC9110-27F1-45F9-A351-8EF6A12A1D5C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HackathonPreparing.Web", "HackathonPreparing.Web\HackathonPreparing.Web.csproj", "{164763E8-DED7-4C3C-8F36-095CB4F863C7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DF197643-F98E-43D0-8C93-78C27D11CB26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF197643-F98E-43D0-8C93-78C27D11CB26}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF197643-F98E-43D0-8C93-78C27D11CB26}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF197643-F98E-43D0-8C93-78C27D11CB26}.Release|Any CPU.Build.0 = Release|Any CPU + {DD3AB30E-1CB0-4E60-B513-7BBA4A0EA7B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD3AB30E-1CB0-4E60-B513-7BBA4A0EA7B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD3AB30E-1CB0-4E60-B513-7BBA4A0EA7B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD3AB30E-1CB0-4E60-B513-7BBA4A0EA7B0}.Release|Any CPU.Build.0 = Release|Any CPU + {29EC9110-27F1-45F9-A351-8EF6A12A1D5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29EC9110-27F1-45F9-A351-8EF6A12A1D5C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29EC9110-27F1-45F9-A351-8EF6A12A1D5C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {29EC9110-27F1-45F9-A351-8EF6A12A1D5C}.Release|Any CPU.Build.0 = Release|Any CPU + {164763E8-DED7-4C3C-8F36-095CB4F863C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {164763E8-DED7-4C3C-8F36-095CB4F863C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {164763E8-DED7-4C3C-8F36-095CB4F863C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {164763E8-DED7-4C3C-8F36-095CB4F863C7}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {80C5F09A-371B-4BC1-9514-36F72E4A64F9} + EndGlobalSection +EndGlobal