From 5609b9832edeac0aa9f61f00d7a991b57371ba23 Mon Sep 17 00:00:00 2001 From: meysamhadeli Date: Fri, 13 Jan 2023 23:42:29 +0330 Subject: [PATCH] ci: Add update-changelog and pr-title-checker --- .github/workflows/pr-title-checker.yaml | 23 +++++++++++++ .github/workflows/release-drafter.yml | 1 - .github/workflows/update-changelog.yml | 28 ++++++++++++++++ CHANGELOG.md | 0 src/BuildingBlocks/BuildingBlocks.csproj | 1 + src/BuildingBlocks/EFCore/Extensions.cs | 32 +++++++++++++++++++ .../PersistMessageConfiguration.cs | 2 +- ....cs => 20230113183839_initial.Designer.cs} | 4 +-- ...5_initial.cs => 20230113183839_initial.cs} | 4 +-- .../PersistMessageDbContextModelSnapshot.cs | 2 +- .../Data/PersistMessageDbContext.cs | 1 + .../Configurations/AircraftConfiguration.cs | 2 +- .../Configurations/AirportConfiguration.cs | 3 +- .../Configurations/FlightConfiguration.cs | 2 +- .../Data/Configurations/SeatConfiguration.cs | 2 +- .../Flight/src/Flight/Data/FlightDbContext.cs | 4 ++- ...ner.cs => 20230113183335_Init.Designer.cs} | 4 +-- ...3134450_Init.cs => 20230113183335_Init.cs} | 2 +- .../FlightDbContextModelSnapshot.cs | 2 +- .../src/Identity/Data/IdentityContext.cs | 27 +--------------- ....cs => 20230113183552_initial.Designer.cs} | 2 +- ...3_initial.cs => 20230113183552_initial.cs} | 0 .../Configurations/PassengerConfiguration.cs | 2 +- ....cs => 20230113183717_initial.Designer.cs} | 2 +- ...0_initial.cs => 20230113183717_initial.cs} | 0 .../src/Passenger/Data/PassengerDbContext.cs | 1 + 26 files changed, 107 insertions(+), 46 deletions(-) create mode 100644 .github/workflows/pr-title-checker.yaml create mode 100644 .github/workflows/update-changelog.yml create mode 100644 CHANGELOG.md rename src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/{20230113134415_initial.Designer.cs => 20230113183839_initial.Designer.cs} (95%) rename src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/{20230113134415_initial.cs => 20230113183839_initial.cs} (94%) rename src/Services/Flight/src/Flight/Data/Migrations/{20230113134450_Init.Designer.cs => 20230113183335_Init.Designer.cs} (98%) rename src/Services/Flight/src/Flight/Data/Migrations/{20230113134450_Init.cs => 20230113183335_Init.cs} (99%) rename src/Services/Identity/src/Identity/Data/Migrations/{20230113134523_initial.Designer.cs => 20230113183552_initial.Designer.cs} (99%) rename src/Services/Identity/src/Identity/Data/Migrations/{20230113134523_initial.cs => 20230113183552_initial.cs} (100%) rename src/Services/Passenger/src/Passenger/Data/Migrations/{20230113134610_initial.Designer.cs => 20230113183717_initial.Designer.cs} (98%) rename src/Services/Passenger/src/Passenger/Data/Migrations/{20230113134610_initial.cs => 20230113183717_initial.cs} (100%) diff --git a/.github/workflows/pr-title-checker.yaml b/.github/workflows/pr-title-checker.yaml new file mode 100644 index 0000000..d1aac76 --- /dev/null +++ b/.github/workflows/pr-title-checker.yaml @@ -0,0 +1,23 @@ +name: Check PR title + +on: + pull_request: + types: + - opened + - reopened + - edited + - synchronize + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + title-checker: + name: Check PR title + runs-on: [ self-hosted ] + + steps: + - uses: aslafy-z/conventional-pr-title-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 7c30e46..435365f 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -5,7 +5,6 @@ on: push: branches: - - develop - main jobs: diff --git a/.github/workflows/update-changelog.yml b/.github/workflows/update-changelog.yml new file mode 100644 index 0000000..f3d2fce --- /dev/null +++ b/.github/workflows/update-changelog.yml @@ -0,0 +1,28 @@ +name: Update Changelog + +on: + release: + types: + - released + +jobs: + update: + name: Update Changelog + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Update Changelog + uses: stefanzweifel/changelog-updater-action@v1 + with: + latest-version: ${{ github.event.release.name }} + release-notes: ${{ github.event.release.body }} + + - name: Commit updated Changelog + uses: stefanzweifel/git-auto-commit-action@v4 + with: + branch: main + commit_message: 'docs(changelog): update changelog' + file_pattern: CHANGELOG.md \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e69de29 diff --git a/src/BuildingBlocks/BuildingBlocks.csproj b/src/BuildingBlocks/BuildingBlocks.csproj index fc9433b..2da37be 100644 --- a/src/BuildingBlocks/BuildingBlocks.csproj +++ b/src/BuildingBlocks/BuildingBlocks.csproj @@ -152,6 +152,7 @@ + diff --git a/src/BuildingBlocks/EFCore/Extensions.cs b/src/BuildingBlocks/EFCore/Extensions.cs index 9f6c998..7237edb 100644 --- a/src/BuildingBlocks/EFCore/Extensions.cs +++ b/src/BuildingBlocks/EFCore/Extensions.cs @@ -11,6 +11,9 @@ using Microsoft.Extensions.Hosting; namespace BuildingBlocks.EFCore; +using Humanizer; +using Microsoft.EntityFrameworkCore.Metadata; + public static class Extensions { public static IServiceCollection AddCustomDbContext( @@ -71,6 +74,35 @@ public static class Extensions } } + + //ref: https://andrewlock.net/customising-asp-net-core-identity-ef-core-naming-conventions-for-postgresql/ + public static void ToSnakeCaseTables(this ModelBuilder modelBuilder) + { + foreach (var entity in modelBuilder.Model.GetEntityTypes()) + { + // Replace table names + entity.SetTableName(entity.GetTableName()?.Underscore()); + + var tableObjectIdentifier = StoreObjectIdentifier.Table(entity.GetTableName()?.Underscore()!, entity.GetSchema()); + + // Replace column names + foreach (var property in entity.GetProperties()) + { + property.SetColumnName(property.GetColumnName(tableObjectIdentifier)?.Underscore()); + } + + foreach (var key in entity.GetKeys()) + { + key.SetName(key.GetName()?.Underscore()); + } + + foreach (var key in entity.GetForeignKeys()) + { + key.SetConstraintName(key.GetConstraintName()?.Underscore()); + } + } + } + private static async Task MigrateDatabaseAsync(IServiceProvider serviceProvider) where TContext : DbContext, IDbContext { diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/Configurations/PersistMessageConfiguration.cs b/src/BuildingBlocks/PersistMessageProcessor/Data/Configurations/PersistMessageConfiguration.cs index 6689f49..5d75328 100644 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/Configurations/PersistMessageConfiguration.cs +++ b/src/BuildingBlocks/PersistMessageProcessor/Data/Configurations/PersistMessageConfiguration.cs @@ -7,7 +7,7 @@ public class PersistMessageConfiguration : IEntityTypeConfiguration builder) { - builder.ToTable("persistMessage"); + builder.ToTable(nameof(PersistMessage)); builder.HasKey(x => x.Id); diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113134415_initial.Designer.cs b/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113183839_initial.Designer.cs similarity index 95% rename from src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113134415_initial.Designer.cs rename to src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113183839_initial.Designer.cs index dd72190..e6ae47d 100644 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113134415_initial.Designer.cs +++ b/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113183839_initial.Designer.cs @@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace BuildingBlocks.PersistMessageProcessor.Data.Migrations { [DbContext(typeof(PersistMessageDbContext))] - [Migration("20230113134415_initial")] + [Migration("20230113183839_initial")] partial class initial { /// @@ -64,7 +64,7 @@ namespace BuildingBlocks.PersistMessageProcessor.Data.Migrations b.HasKey("Id") .HasName("pk_persist_message"); - b.ToTable("persistMessage", (string)null); + b.ToTable("persist_message", (string)null); }); #pragma warning restore 612, 618 } diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113134415_initial.cs b/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113183839_initial.cs similarity index 94% rename from src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113134415_initial.cs rename to src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113183839_initial.cs index ee75b55..d69e646 100644 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113134415_initial.cs +++ b/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/20230113183839_initial.cs @@ -12,7 +12,7 @@ namespace BuildingBlocks.PersistMessageProcessor.Data.Migrations protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( - name: "persistMessage", + name: "persist_message", columns: table => new { id = table.Column(type: "bigint", nullable: false), @@ -33,7 +33,7 @@ namespace BuildingBlocks.PersistMessageProcessor.Data.Migrations protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( - name: "persistMessage"); + name: "persist_message"); } } } diff --git a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/PersistMessageDbContextModelSnapshot.cs b/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/PersistMessageDbContextModelSnapshot.cs index 74939c2..5b82f17 100644 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/PersistMessageDbContextModelSnapshot.cs +++ b/src/BuildingBlocks/PersistMessageProcessor/Data/Migrations/PersistMessageDbContextModelSnapshot.cs @@ -61,7 +61,7 @@ namespace BuildingBlocks.PersistMessageProcessor.Data.Migrations b.HasKey("Id") .HasName("pk_persist_message"); - b.ToTable("persistMessage", (string)null); + 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 19d94b7..2db8d66 100644 --- a/src/BuildingBlocks/PersistMessageProcessor/Data/PersistMessageDbContext.cs +++ b/src/BuildingBlocks/PersistMessageProcessor/Data/PersistMessageDbContext.cs @@ -15,5 +15,6 @@ public class PersistMessageDbContext : AppDbContextBase, IPersistMessageDbContex { builder.ApplyConfiguration(new PersistMessageConfiguration()); base.OnModelCreating(builder); + builder.ToSnakeCaseTables(); } } diff --git a/src/Services/Flight/src/Flight/Data/Configurations/AircraftConfiguration.cs b/src/Services/Flight/src/Flight/Data/Configurations/AircraftConfiguration.cs index c0ae112..2af92aa 100644 --- a/src/Services/Flight/src/Flight/Data/Configurations/AircraftConfiguration.cs +++ b/src/Services/Flight/src/Flight/Data/Configurations/AircraftConfiguration.cs @@ -8,7 +8,7 @@ public class AircraftConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { - builder.ToTable("aircraft"); + builder.ToTable(nameof(Aircraft)); builder.HasKey(r => r.Id); builder.Property(r => r.Id).ValueGeneratedNever(); } diff --git a/src/Services/Flight/src/Flight/Data/Configurations/AirportConfiguration.cs b/src/Services/Flight/src/Flight/Data/Configurations/AirportConfiguration.cs index 9561491..8fc776a 100644 --- a/src/Services/Flight/src/Flight/Data/Configurations/AirportConfiguration.cs +++ b/src/Services/Flight/src/Flight/Data/Configurations/AirportConfiguration.cs @@ -1,4 +1,3 @@ -using BuildingBlocks.EFCore; using Flight.Airports.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -9,7 +8,7 @@ public class AirportConfiguration: IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { - builder.ToTable("airport"); + builder.ToTable(nameof(Airport)); builder.HasKey(r => r.Id); builder.Property(r => r.Id).ValueGeneratedNever(); diff --git a/src/Services/Flight/src/Flight/Data/Configurations/FlightConfiguration.cs b/src/Services/Flight/src/Flight/Data/Configurations/FlightConfiguration.cs index a1aa491..181dbab 100644 --- a/src/Services/Flight/src/Flight/Data/Configurations/FlightConfiguration.cs +++ b/src/Services/Flight/src/Flight/Data/Configurations/FlightConfiguration.cs @@ -12,7 +12,7 @@ public class FlightConfiguration : IEntityTypeConfiguration builder) { - builder.ToTable("flight"); + builder.ToTable(nameof(Flight)); builder.HasKey(r => r.Id); builder.Property(r => r.Id).ValueGeneratedNever(); diff --git a/src/Services/Flight/src/Flight/Data/Configurations/SeatConfiguration.cs b/src/Services/Flight/src/Flight/Data/Configurations/SeatConfiguration.cs index 1e8404e..0ff9083 100644 --- a/src/Services/Flight/src/Flight/Data/Configurations/SeatConfiguration.cs +++ b/src/Services/Flight/src/Flight/Data/Configurations/SeatConfiguration.cs @@ -11,7 +11,7 @@ public class SeatConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { - builder.ToTable("seat"); + builder.ToTable(nameof(Seat)); builder.HasKey(r => r.Id); builder.Property(r => r.Id).ValueGeneratedNever(); diff --git a/src/Services/Flight/src/Flight/Data/FlightDbContext.cs b/src/Services/Flight/src/Flight/Data/FlightDbContext.cs index 1ee6f11..8274430 100644 --- a/src/Services/Flight/src/Flight/Data/FlightDbContext.cs +++ b/src/Services/Flight/src/Flight/Data/FlightDbContext.cs @@ -1,5 +1,4 @@ using BuildingBlocks.EFCore; -using BuildingBlocks.Utils; using BuildingBlocks.Web; using Flight.Aircrafts.Models; using Flight.Airports.Models; @@ -8,12 +7,14 @@ using Microsoft.EntityFrameworkCore; namespace Flight.Data; + public sealed class FlightDbContext : AppDbContextBase { public FlightDbContext(DbContextOptions options, ICurrentUserProvider currentUserProvider) : base( options, currentUserProvider) { } + public DbSet Flights => Set(); public DbSet Airports => Set(); public DbSet Aircraft => Set(); @@ -24,5 +25,6 @@ public sealed class FlightDbContext : AppDbContextBase base.OnModelCreating(builder); builder.FilterSoftDeletedProperties(); builder.ApplyConfigurationsFromAssembly(typeof(FlightRoot).Assembly); + builder.ToSnakeCaseTables(); } } diff --git a/src/Services/Flight/src/Flight/Data/Migrations/20230113134450_Init.Designer.cs b/src/Services/Flight/src/Flight/Data/Migrations/20230113183335_Init.Designer.cs similarity index 98% rename from src/Services/Flight/src/Flight/Data/Migrations/20230113134450_Init.Designer.cs rename to src/Services/Flight/src/Flight/Data/Migrations/20230113183335_Init.Designer.cs index 89a56bf..9374273 100644 --- a/src/Services/Flight/src/Flight/Data/Migrations/20230113134450_Init.Designer.cs +++ b/src/Services/Flight/src/Flight/Data/Migrations/20230113183335_Init.Designer.cs @@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Flight.Data.Migrations { [DbContext(typeof(FlightDbContext))] - [Migration("20230113134450_Init")] + [Migration("20230113183335_Init")] partial class Init { /// @@ -281,7 +281,7 @@ namespace Flight.Data.Migrations .HasForeignKey("ArriveAirportId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() - .HasConstraintName("fk_flight_airport_airport_id"); + .HasConstraintName("fk_flight_airport_arrive_airport_id"); }); modelBuilder.Entity("Flight.Seats.Models.Seat", b => diff --git a/src/Services/Flight/src/Flight/Data/Migrations/20230113134450_Init.cs b/src/Services/Flight/src/Flight/Data/Migrations/20230113183335_Init.cs similarity index 99% rename from src/Services/Flight/src/Flight/Data/Migrations/20230113134450_Init.cs rename to src/Services/Flight/src/Flight/Data/Migrations/20230113183335_Init.cs index 12f07ac..affce5c 100644 --- a/src/Services/Flight/src/Flight/Data/Migrations/20230113134450_Init.cs +++ b/src/Services/Flight/src/Flight/Data/Migrations/20230113183335_Init.cs @@ -83,7 +83,7 @@ namespace Flight.Data.Migrations principalColumn: "id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "fk_flight_airport_airport_id", + name: "fk_flight_airport_arrive_airport_id", column: x => x.arriveairportid, principalTable: "airport", principalColumn: "id", diff --git a/src/Services/Flight/src/Flight/Data/Migrations/FlightDbContextModelSnapshot.cs b/src/Services/Flight/src/Flight/Data/Migrations/FlightDbContextModelSnapshot.cs index 613d044..3a944c1 100644 --- a/src/Services/Flight/src/Flight/Data/Migrations/FlightDbContextModelSnapshot.cs +++ b/src/Services/Flight/src/Flight/Data/Migrations/FlightDbContextModelSnapshot.cs @@ -278,7 +278,7 @@ namespace Flight.Data.Migrations .HasForeignKey("ArriveAirportId") .OnDelete(DeleteBehavior.Cascade) .IsRequired() - .HasConstraintName("fk_flight_airport_airport_id"); + .HasConstraintName("fk_flight_airport_arrive_airport_id"); }); modelBuilder.Entity("Flight.Seats.Models.Seat", b => diff --git a/src/Services/Identity/src/Identity/Data/IdentityContext.cs b/src/Services/Identity/src/Identity/Data/IdentityContext.cs index 84b9b02..8c1ab5a 100644 --- a/src/Services/Identity/src/Identity/Data/IdentityContext.cs +++ b/src/Services/Identity/src/Identity/Data/IdentityContext.cs @@ -34,33 +34,8 @@ public sealed class IdentityContext : IdentityDbContext diff --git a/src/Services/Identity/src/Identity/Data/Migrations/20230113134523_initial.cs b/src/Services/Identity/src/Identity/Data/Migrations/20230113183552_initial.cs similarity index 100% rename from src/Services/Identity/src/Identity/Data/Migrations/20230113134523_initial.cs rename to src/Services/Identity/src/Identity/Data/Migrations/20230113183552_initial.cs diff --git a/src/Services/Passenger/src/Passenger/Data/Configurations/PassengerConfiguration.cs b/src/Services/Passenger/src/Passenger/Data/Configurations/PassengerConfiguration.cs index 6fea012..eb787bd 100644 --- a/src/Services/Passenger/src/Passenger/Data/Configurations/PassengerConfiguration.cs +++ b/src/Services/Passenger/src/Passenger/Data/Configurations/PassengerConfiguration.cs @@ -8,7 +8,7 @@ public class PassengerConfiguration: IEntityTypeConfiguration builder) { - builder.ToTable("passenger"); + builder.ToTable(nameof(Passenger)); builder.HasKey(r => r.Id); builder.Property(r => r.Id).ValueGeneratedNever(); diff --git a/src/Services/Passenger/src/Passenger/Data/Migrations/20230113134610_initial.Designer.cs b/src/Services/Passenger/src/Passenger/Data/Migrations/20230113183717_initial.Designer.cs similarity index 98% rename from src/Services/Passenger/src/Passenger/Data/Migrations/20230113134610_initial.Designer.cs rename to src/Services/Passenger/src/Passenger/Data/Migrations/20230113183717_initial.Designer.cs index 7657b3f..ee01a84 100644 --- a/src/Services/Passenger/src/Passenger/Data/Migrations/20230113134610_initial.Designer.cs +++ b/src/Services/Passenger/src/Passenger/Data/Migrations/20230113183717_initial.Designer.cs @@ -12,7 +12,7 @@ using Passenger.Data; namespace Passenger.Data.Migrations { [DbContext(typeof(PassengerDbContext))] - [Migration("20230113134610_initial")] + [Migration("20230113183717_initial")] partial class initial { /// diff --git a/src/Services/Passenger/src/Passenger/Data/Migrations/20230113134610_initial.cs b/src/Services/Passenger/src/Passenger/Data/Migrations/20230113183717_initial.cs similarity index 100% rename from src/Services/Passenger/src/Passenger/Data/Migrations/20230113134610_initial.cs rename to src/Services/Passenger/src/Passenger/Data/Migrations/20230113183717_initial.cs diff --git a/src/Services/Passenger/src/Passenger/Data/PassengerDbContext.cs b/src/Services/Passenger/src/Passenger/Data/PassengerDbContext.cs index f0bfd18..03caa18 100644 --- a/src/Services/Passenger/src/Passenger/Data/PassengerDbContext.cs +++ b/src/Services/Passenger/src/Passenger/Data/PassengerDbContext.cs @@ -17,5 +17,6 @@ public sealed class PassengerDbContext : AppDbContextBase { builder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()); base.OnModelCreating(builder); + builder.ToSnakeCaseTables(); } }