feat(api): Postgres provider uses EnsureCreated (idempotent schema bootstrap, no migration history)
This commit is contained in:
@@ -1,10 +1,13 @@
|
|||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
using GreenHome.AI.DeepSeek;
|
using GreenHome.AI.DeepSeek;
|
||||||
|
using Microsoft.AspNetCore.Mvc.Versioning;
|
||||||
using GreenHome.Application;
|
using GreenHome.Application;
|
||||||
using GreenHome.Infrastructure;
|
using GreenHome.Infrastructure;
|
||||||
using GreenHome.Infrastructure.Data;
|
using GreenHome.Infrastructure.Data;
|
||||||
using GreenHome.Sms.Ippanel;
|
using GreenHome.Sms.Ippanel;
|
||||||
using GreenHome.VoiceCall.Avanak;
|
using GreenHome.VoiceCall.Avanak;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.AspNetCore.Mvc.Versioning;
|
||||||
using Microsoft.AspNetCore.StaticFiles;
|
using Microsoft.AspNetCore.StaticFiles;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.FileProviders;
|
using Microsoft.Extensions.FileProviders;
|
||||||
@@ -42,7 +45,17 @@ app.Run();
|
|||||||
|
|
||||||
void ConfigureCoreServices(WebApplicationBuilder builder)
|
void ConfigureCoreServices(WebApplicationBuilder builder)
|
||||||
{
|
{
|
||||||
builder.Services.AddControllers();
|
// API versioning: existing controllers stay unversioned (default v1.0, same URLs).
|
||||||
|
// New v2 controllers use [ApiVersion("2.0")] + [Route("api/v2/[controller]")] (or [Route("api/v2")] prefix).
|
||||||
|
builder.Services
|
||||||
|
.AddApiVersioning(options =>
|
||||||
|
{
|
||||||
|
options.DefaultApiVersion = new ApiVersion(1, 0);
|
||||||
|
options.AssumeDefaultVersionWhenUnspecified = true;
|
||||||
|
options.ReportApiVersions = true;
|
||||||
|
options.ApiVersionReader = new UrlSegmentApiVersionReader();
|
||||||
|
})
|
||||||
|
.AddMvc();
|
||||||
builder.Services.AddEndpointsApiExplorer();
|
builder.Services.AddEndpointsApiExplorer();
|
||||||
builder.Services.AddOpenApi();
|
builder.Services.AddOpenApi();
|
||||||
|
|
||||||
@@ -110,7 +123,19 @@ void ApplyMigrations(WebApplication app)
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var context = services.GetRequiredService<GreenHomeDbContext>();
|
var context = services.GetRequiredService<GreenHomeDbContext>();
|
||||||
context.Database.Migrate();
|
var provider = app.Configuration["Database:Provider"] ?? "SqlServer";
|
||||||
|
|
||||||
|
if (provider == "Postgres")
|
||||||
|
{
|
||||||
|
// Soft-migration path: Postgres starts empty. EnsureCreated() is
|
||||||
|
// idempotent — it builds the full schema from the model only when no
|
||||||
|
// tables exist yet, and is a no-op once schema + data are in place.
|
||||||
|
context.Database.EnsureCreated();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
context.Database.Migrate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user