diff --git a/.github/workflows/pr-title-checker.yaml b/.github/workflows/pr-title-checker.yaml index bf7d0ff..d1aac76 100644 --- a/.github/workflows/pr-title-checker.yaml +++ b/.github/workflows/pr-title-checker.yaml @@ -1,23 +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: +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 index 55e006c..f3d2fce 100644 --- a/.github/workflows/update-changelog.yml +++ b/.github/workflows/update-changelog.yml @@ -1,28 +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' +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/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(); } }