From 017a419f6b10cfb3e37a57fc807ab5e87a4596f8 Mon Sep 17 00:00:00 2001 From: Pc Date: Thu, 1 Jun 2023 21:30:45 +0330 Subject: [PATCH] refactor: Remove migration from message processor --- src/BuildingBlocks/EFCore/Extensions.cs | 4 - .../Data/DesignTimeDbContextFactory.cs | 16 ---- .../20230508215131_initial.Designer.cs | 77 ------------------- .../Data/Migrations/20230508215131_initial.cs | 40 ---------- .../PersistMessageDbContextModelSnapshot.cs | 74 ------------------ .../Data/PersistMessageDbContext.cs | 23 ++++++ .../PersistMessageProcessor/Data/readme.md | 2 - .../PersistMessageProcessor/Extensions.cs | 25 +++--- .../InfrastructureExtensions.cs | 3 - .../InfrastructureExtensions.cs | 1 - .../InfrastructureExtensions.cs | 1 - .../InfrastructureExtensions.cs | 3 - 12 files changed, 32 insertions(+), 237 deletions(-) delete mode 100644 src/BuildingBlocks/PersistMessageProcessor/Data/DesignTimeDbContextFactory.cs delete mode 100644 src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230508215131_initial.Designer.cs delete mode 100644 src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230508215131_initial.cs delete mode 100644 src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/PersistMessageDbContextModelSnapshot.cs delete mode 100644 src/BuildingBlocks/PersistMessageProcessor/Data/readme.md diff --git a/src/BuildingBlocks/EFCore/Extensions.cs b/src/BuildingBlocks/EFCore/Extensions.cs index 989ac02..e81c336 100644 --- a/src/BuildingBlocks/EFCore/Extensions.cs +++ b/src/BuildingBlocks/EFCore/Extensions.cs @@ -1,6 +1,5 @@ using System.Linq.Expressions; using BuildingBlocks.Core.Model; -using BuildingBlocks.PersistMessageProcessor.Data; using BuildingBlocks.Web; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -114,9 +113,6 @@ public static class Extensions { using var scope = serviceProvider.CreateScope(); - var persistMessageContext = scope.ServiceProvider.GetRequiredService(); - await persistMessageContext.Database.MigrateAsync(); - var context = scope.ServiceProvider.GetRequiredService(); await context.Database.MigrateAsync(); } diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/DesignTimeDbContextFactory.cs b/src/BuildingBlocks/PersistMessageProcessor/Data/DesignTimeDbContextFactory.cs deleted file mode 100644 index 5609afe..0000000 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/DesignTimeDbContextFactory.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Design; - -namespace BuildingBlocks.PersistMessageProcessor.Data; - -public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory -{ - public PersistMessageDbContext CreateDbContext(string[] args) - { - var builder = new DbContextOptionsBuilder(); - - builder.UseNpgsql("Server=localhost;Port=5432;Database=persist_message;User Id=postgres;Password=postgres;Include Error Detail=true") - .UseSnakeCaseNamingConvention(); - return new PersistMessageDbContext(builder.Options); - } -} diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230508215131_initial.Designer.cs b/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230508215131_initial.Designer.cs deleted file mode 100644 index 847117a..0000000 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230508215131_initial.Designer.cs +++ /dev/null @@ -1,77 +0,0 @@ -// -using System; -using BuildingBlocks.PersistMessageProcessor.Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace BuildingBlocks.PersistMessageProcessor.Data.Migrations -{ - [DbContext(typeof(PersistMessageDbContext))] - [Migration("20230508215131_initial")] - partial class initial - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.2") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("BuildingBlocks.PersistMessageProcessor.PersistMessage", b => - { - b.Property("Id") - .HasColumnType("uuid") - .HasColumnName("id"); - - b.Property("Created") - .HasColumnType("timestamp with time zone") - .HasColumnName("created"); - - b.Property("Data") - .HasColumnType("text") - .HasColumnName("data"); - - b.Property("DataType") - .HasColumnType("text") - .HasColumnName("data_type"); - - b.Property("DeliveryType") - .IsRequired() - .ValueGeneratedOnAdd() - .HasColumnType("text") - .HasDefaultValue("Outbox") - .HasColumnName("delivery_type"); - - b.Property("MessageStatus") - .IsRequired() - .ValueGeneratedOnAdd() - .HasColumnType("text") - .HasDefaultValue("InProgress") - .HasColumnName("message_status"); - - b.Property("RetryCount") - .HasColumnType("integer") - .HasColumnName("retry_count"); - - b.Property("Version") - .IsConcurrencyToken() - .HasColumnType("bigint") - .HasColumnName("version"); - - b.HasKey("Id") - .HasName("pk_persist_message"); - - b.ToTable("persist_message", (string)null); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230508215131_initial.cs b/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230508215131_initial.cs deleted file mode 100644 index 2518f08..0000000 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230508215131_initial.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace BuildingBlocks.PersistMessageProcessor.Data.Migrations -{ - /// - public partial class initial : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "persist_message", - columns: table => new - { - id = table.Column(type: "uuid", nullable: false), - datatype = table.Column(name: "data_type", type: "text", nullable: true), - data = table.Column(type: "text", nullable: true), - created = table.Column(type: "timestamp with time zone", nullable: false), - retrycount = table.Column(name: "retry_count", type: "integer", nullable: false), - messagestatus = table.Column(name: "message_status", type: "text", nullable: false, defaultValue: "InProgress"), - deliverytype = table.Column(name: "delivery_type", type: "text", nullable: false, defaultValue: "Outbox"), - version = table.Column(type: "bigint", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_persist_message", x => x.id); - }); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "persist_message"); - } - } -} diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/PersistMessageDbContextModelSnapshot.cs b/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/PersistMessageDbContextModelSnapshot.cs deleted file mode 100644 index dd237d0..0000000 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/PersistMessageDbContextModelSnapshot.cs +++ /dev/null @@ -1,74 +0,0 @@ -// -using System; -using BuildingBlocks.PersistMessageProcessor.Data; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace BuildingBlocks.PersistMessageProcessor.Data.Migrations -{ - [DbContext(typeof(PersistMessageDbContext))] - partial class PersistMessageDbContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.2") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("BuildingBlocks.PersistMessageProcessor.PersistMessage", b => - { - b.Property("Id") - .HasColumnType("uuid") - .HasColumnName("id"); - - b.Property("Created") - .HasColumnType("timestamp with time zone") - .HasColumnName("created"); - - b.Property("Data") - .HasColumnType("text") - .HasColumnName("data"); - - b.Property("DataType") - .HasColumnType("text") - .HasColumnName("data_type"); - - b.Property("DeliveryType") - .IsRequired() - .ValueGeneratedOnAdd() - .HasColumnType("text") - .HasDefaultValue("Outbox") - .HasColumnName("delivery_type"); - - b.Property("MessageStatus") - .IsRequired() - .ValueGeneratedOnAdd() - .HasColumnType("text") - .HasDefaultValue("InProgress") - .HasColumnName("message_status"); - - b.Property("RetryCount") - .HasColumnType("integer") - .HasColumnName("retry_count"); - - b.Property("Version") - .IsConcurrencyToken() - .HasColumnType("bigint") - .HasColumnName("version"); - - b.HasKey("Id") - .HasName("pk_persist_message"); - - b.ToTable("persist_message", (string)null); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/PersistMessageDbContext.cs b/src/BuildingBlocks/PersistMessageProcessor/Data/PersistMessageDbContext.cs index 94c798a..243f274 100644 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/PersistMessageDbContext.cs +++ b/src/BuildingBlocks/PersistMessageProcessor/Data/PersistMessageDbContext.cs @@ -57,6 +57,29 @@ public class PersistMessageDbContext : DbContext, IPersistMessageDbContext } } + public void CreatePersistMessageTable() + { + if (Database.GetPendingMigrations().Any()) + { + throw new InvalidOperationException("Cannot create table if there are pending migrations."); + } + + string createTableSql = @" + create table if not exists persist_message ( + id uuid not null, + data_type text, + data text, + created timestamp with time zone not null, + retry_count integer not null, + message_status text not null default 'InProgress'::text, + delivery_type text not null default 'Outbox'::text, + version bigint not null, + constraint pk_persist_message primary key (id) + )"; + + Database.ExecuteSqlRaw(createTableSql); + } + private void OnBeforeSaving() { try diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/readme.md b/src/BuildingBlocks/PersistMessageProcessor/Data/readme.md deleted file mode 100644 index 062e4d3..0000000 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -dotnet ef migrations add initial --context PersistMessageDbContext -o "PersistMessageProcessor\Data\Migrations" -dotnet ef database update --context PersistMessageDbContext diff --git a/src/BuildingBlocks/PersistMessageProcessor/Extensions.cs b/src/BuildingBlocks/PersistMessageProcessor/Extensions.cs index c20aa9a..b91768a 100644 --- a/src/BuildingBlocks/PersistMessageProcessor/Extensions.cs +++ b/src/BuildingBlocks/PersistMessageProcessor/Extensions.cs @@ -30,7 +30,15 @@ public static class Extensions .UseSnakeCaseNamingConvention(); }); - services.AddScoped(provider => provider.GetService()); + services.AddScoped(provider => + { + var persistMessageDbContext = provider.GetRequiredService(); + + persistMessageDbContext.Database.EnsureCreated(); + persistMessageDbContext.CreatePersistMessageTable(); + + return persistMessageDbContext; + }); services.AddScoped(); @@ -41,19 +49,4 @@ public static class Extensions return services; } - - public static IApplicationBuilder UseMigrationPersistMessage(this IApplicationBuilder app, - IWebHostEnvironment env) - where TContext : DbContext, IPersistMessageDbContext - { - using var scope = app.ApplicationServices.CreateScope(); - - var persistMessageContext = scope.ServiceProvider.GetRequiredService(); - persistMessageContext.Database.Migrate(); - - var context = scope.ServiceProvider.GetRequiredService(); - context.Database.Migrate(); - - return app; - } } diff --git a/src/Services/Booking/src/Booking/Extensions/Infrastructure/InfrastructureExtensions.cs b/src/Services/Booking/src/Booking/Extensions/Infrastructure/InfrastructureExtensions.cs index a0e019f..036912a 100644 --- a/src/Services/Booking/src/Booking/Extensions/Infrastructure/InfrastructureExtensions.cs +++ b/src/Services/Booking/src/Booking/Extensions/Infrastructure/InfrastructureExtensions.cs @@ -24,8 +24,6 @@ using Serilog; namespace Booking.Extensions.Infrastructure; -using BuildingBlocks.PersistMessageProcessor.Data; - public static class InfrastructureExtensions { public static WebApplicationBuilder AddInfrastructure(this WebApplicationBuilder builder) @@ -97,7 +95,6 @@ public static class InfrastructureExtensions }); app.UseCorrelationId(); app.UseHttpMetrics(); - app.UseMigrationPersistMessage(env); app.UseCustomHealthCheck(); app.MapMetrics(); app.MapGet("/", x => x.Response.WriteAsync(appOptions.Name)); diff --git a/src/Services/Flight/src/Flight/Extensions/Infrastructure/InfrastructureExtensions.cs b/src/Services/Flight/src/Flight/Extensions/Infrastructure/InfrastructureExtensions.cs index bca21f5..25837e1 100644 --- a/src/Services/Flight/src/Flight/Extensions/Infrastructure/InfrastructureExtensions.cs +++ b/src/Services/Flight/src/Flight/Extensions/Infrastructure/InfrastructureExtensions.cs @@ -102,7 +102,6 @@ public static class InfrastructureExtensions }); app.UseCorrelationId(); app.UseHttpMetrics(); - app.UseMigrationPersistMessage(env); app.UseMigration(env); app.MapMetrics(); app.UseCustomHealthCheck(); diff --git a/src/Services/Identity/src/Identity/Extensions/Infrastructure/InfrastructureExtensions.cs b/src/Services/Identity/src/Identity/Extensions/Infrastructure/InfrastructureExtensions.cs index 26a4e55..e9333e3 100644 --- a/src/Services/Identity/src/Identity/Extensions/Infrastructure/InfrastructureExtensions.cs +++ b/src/Services/Identity/src/Identity/Extensions/Infrastructure/InfrastructureExtensions.cs @@ -99,7 +99,6 @@ public static class InfrastructureExtensions { options.EnrichDiagnosticContext = LogEnrichHelper.EnrichFromRequest; }); - app.UseMigrationPersistMessage(env); app.UseMigration(env); app.UseCorrelationId(); app.UseHttpMetrics(); diff --git a/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/InfrastructureExtensions.cs b/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/InfrastructureExtensions.cs index fc10d95..f2efd59 100644 --- a/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/InfrastructureExtensions.cs +++ b/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/InfrastructureExtensions.cs @@ -26,8 +26,6 @@ using Serilog; namespace Passenger.Extensions.Infrastructure; -using BuildingBlocks.PersistMessageProcessor.Data; - public static class InfrastructureExtensions { public static WebApplicationBuilder AddInfrastructure(this WebApplicationBuilder builder) @@ -94,7 +92,6 @@ public static class InfrastructureExtensions { options.EnrichDiagnosticContext = LogEnrichHelper.EnrichFromRequest; }); - app.UseMigrationPersistMessage(env); app.UseMigration(env); app.UseCorrelationId(); app.UseHttpMetrics();