diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs index afef93c7..db163a01 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs @@ -33,9 +33,29 @@ namespace EShopOnAbp.OrderingService.EntityFrameworkCore b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "Buyers", OrderingServiceDbProperties.DbSchema); b.ConfigureByConvention(); //auto configure for the base class props - b.Property(q => q.UserName).IsRequired(); + b.Property(q => q.Email).IsRequired(); b.Property(q => q.Name).IsRequired(); - b.Property(q => q.PaymentId).IsRequired(); + + b.Property("_paymentTypeId").UsePropertyAccessMode(PropertyAccessMode.Field) + .HasColumnName("PaymentTypeId") + .IsRequired(); + + b.HasOne(q => q.PaymentType).WithMany().HasForeignKey("_paymentTypeId"); + }); + builder.Entity(b => + { + b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "PaymentTypes", + OrderingServiceDbProperties.DbSchema); + b.ConfigureByConvention(); //auto configure for the base class props + + b.HasKey(q => q.Id); + b.Property(q => q.Id) + .HasDefaultValue(1) + .ValueGeneratedNever() + .IsRequired(); + b.Property(o => o.Name) + .HasMaxLength(OrderConstants.OrderPaymentTypeNameMaxLength) + .IsRequired(); }); builder.Entity(b => @@ -46,7 +66,6 @@ namespace EShopOnAbp.OrderingService.EntityFrameworkCore b.Property("_orderStatusId").UsePropertyAccessMode(PropertyAccessMode.Field) .HasColumnName("OrderStatusId") .IsRequired(); - b.Property(q => q.Description).HasMaxLength(OrderConstants.OrderDescriptionMaxLength).IsRequired(false); b.HasOne().WithMany().HasForeignKey(q => q.BuyerId).IsRequired(false); b.HasOne(q => q.OrderStatus).WithMany().HasForeignKey("_orderStatusId"); @@ -56,7 +75,7 @@ namespace EShopOnAbp.OrderingService.EntityFrameworkCore b.HasIndex(q => q.Id); b.HasIndex(q => q.BuyerId); }); - // Consider removing persistancy to db or seeding + builder.Entity(b => { b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "OrderStatus", diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20211231094501_Updated-Order-and-Buyer.Designer.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20211231094501_Updated-Order-and-Buyer.Designer.cs new file mode 100644 index 00000000..07c6ca36 --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20211231094501_Updated-Order-and-Buyer.Designer.cs @@ -0,0 +1,240 @@ +// +using System; +using EShopOnAbp.OrderingService.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace EShopOnAbp.OrderingService.Migrations +{ + [DbContext(typeof(OrderingServiceDbContext))] + [Migration("20211231094501_Updated-Order-and-Buyer")] + partial class UpdatedOrderandBuyer + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Buyers.Buyer", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("_paymentTypeId") + .HasColumnType("integer") + .HasColumnName("PaymentTypeId"); + + b.HasKey("Id"); + + b.HasIndex("_paymentTypeId"); + + b.ToTable("Buyers", (string)null); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Buyers.PaymentType", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasDefaultValue(1); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.HasKey("Id"); + + b.ToTable("PaymentTypes", (string)null); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("BuyerId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("OrderDate") + .HasColumnType("timestamp with time zone"); + + b.Property("PaymentMethodToken") + .HasColumnType("text"); + + b.Property("_orderStatusId") + .HasColumnType("integer") + .HasColumnName("OrderStatusId"); + + b.HasKey("Id"); + + b.HasIndex("BuyerId"); + + b.HasIndex("Id"); + + b.HasIndex("_orderStatusId"); + + b.ToTable("Orders", (string)null); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderItem", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Discount") + .HasColumnType("numeric"); + + b.Property("OrderId") + .HasColumnType("uuid"); + + b.Property("PictureUrl") + .HasColumnType("text"); + + b.Property("ProductId") + .HasColumnType("uuid"); + + b.Property("ProductName") + .IsRequired() + .HasColumnType("text"); + + b.Property("UnitPrice") + .HasColumnType("numeric"); + + b.Property("Units") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.ToTable("OrderItems", (string)null); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderStatus", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasDefaultValue(1); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.ToTable("OrderStatus", (string)null); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Buyers.Buyer", b => + { + b.HasOne("EShopOnAbp.OrderingService.Buyers.PaymentType", "PaymentType") + .WithMany() + .HasForeignKey("_paymentTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentType"); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => + { + b.HasOne("EShopOnAbp.OrderingService.Buyers.Buyer", null) + .WithMany() + .HasForeignKey("BuyerId"); + + b.HasOne("EShopOnAbp.OrderingService.Orders.OrderStatus", "OrderStatus") + .WithMany() + .HasForeignKey("_orderStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsOne("EShopOnAbp.OrderingService.Orders.Address", "Address", b1 => + { + b1.Property("OrderId") + .HasColumnType("uuid"); + + b1.Property("City") + .HasColumnType("text"); + + b1.Property("Country") + .HasColumnType("text"); + + b1.Property("Description") + .HasColumnType("text"); + + b1.Property("Street") + .HasColumnType("text"); + + b1.Property("ZipCode") + .HasColumnType("text"); + + b1.HasKey("OrderId"); + + b1.ToTable("Orders"); + + b1.WithOwner() + .HasForeignKey("OrderId"); + }); + + b.Navigation("Address"); + + b.Navigation("OrderStatus"); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderItem", b => + { + b.HasOne("EShopOnAbp.OrderingService.Orders.Order", null) + .WithMany("OrderItems") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => + { + b.Navigation("OrderItems"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20211231094501_Updated-Order-and-Buyer.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20211231094501_Updated-Order-and-Buyer.cs new file mode 100644 index 00000000..8e0d8f06 --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20211231094501_Updated-Order-and-Buyer.cs @@ -0,0 +1,94 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace EShopOnAbp.OrderingService.Migrations +{ + public partial class UpdatedOrderandBuyer : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Description", + table: "Orders"); + + migrationBuilder.DropColumn( + name: "PaymentId", + table: "Buyers"); + + migrationBuilder.RenameColumn( + name: "UserName", + table: "Buyers", + newName: "Email"); + + migrationBuilder.AddColumn( + name: "PaymentTypeId", + table: "Buyers", + type: "integer", + nullable: false, + defaultValue: 0); + + migrationBuilder.CreateTable( + name: "PaymentTypes", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false, defaultValue: 1), + Name = table.Column(type: "character varying(128)", maxLength: 128, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_PaymentTypes", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_Buyers_PaymentTypeId", + table: "Buyers", + column: "PaymentTypeId"); + + migrationBuilder.AddForeignKey( + name: "FK_Buyers_PaymentTypes_PaymentTypeId", + table: "Buyers", + column: "PaymentTypeId", + principalTable: "PaymentTypes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Buyers_PaymentTypes_PaymentTypeId", + table: "Buyers"); + + migrationBuilder.DropTable( + name: "PaymentTypes"); + + migrationBuilder.DropIndex( + name: "IX_Buyers_PaymentTypeId", + table: "Buyers"); + + migrationBuilder.DropColumn( + name: "PaymentTypeId", + table: "Buyers"); + + migrationBuilder.RenameColumn( + name: "Email", + table: "Buyers", + newName: "UserName"); + + migrationBuilder.AddColumn( + name: "Description", + table: "Orders", + type: "character varying(1024)", + maxLength: 1024, + nullable: true); + + migrationBuilder.AddColumn( + name: "PaymentId", + table: "Buyers", + type: "text", + nullable: false, + defaultValue: ""); + } + } +} diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs index 14f7bd8a..02fb559b 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs @@ -35,6 +35,10 @@ namespace EShopOnAbp.OrderingService.Migrations .HasColumnType("character varying(40)") .HasColumnName("ConcurrencyStamp"); + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + b.Property("ExtraProperties") .HasColumnType("text") .HasColumnName("ExtraProperties"); @@ -43,17 +47,31 @@ namespace EShopOnAbp.OrderingService.Migrations .IsRequired() .HasColumnType("text"); - b.Property("PaymentId") - .IsRequired() - .HasColumnType("text"); + b.Property("_paymentTypeId") + .HasColumnType("integer") + .HasColumnName("PaymentTypeId"); + + b.HasKey("Id"); - b.Property("UserName") + b.HasIndex("_paymentTypeId"); + + b.ToTable("Buyers", (string)null); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Buyers.PaymentType", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasDefaultValue(1); + + b.Property("Name") .IsRequired() - .HasColumnType("text"); + .HasMaxLength(128) + .HasColumnType("character varying(128)"); b.HasKey("Id"); - b.ToTable("Buyers", (string)null); + b.ToTable("PaymentTypes", (string)null); }); modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => @@ -70,10 +88,6 @@ namespace EShopOnAbp.OrderingService.Migrations .HasColumnType("character varying(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("Description") - .HasMaxLength(1024) - .HasColumnType("character varying(1024)"); - b.Property("ExtraProperties") .HasColumnType("text") .HasColumnName("ExtraProperties"); @@ -149,6 +163,17 @@ namespace EShopOnAbp.OrderingService.Migrations b.ToTable("OrderStatus", (string)null); }); + modelBuilder.Entity("EShopOnAbp.OrderingService.Buyers.Buyer", b => + { + b.HasOne("EShopOnAbp.OrderingService.Buyers.PaymentType", "PaymentType") + .WithMany() + .HasForeignKey("_paymentTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentType"); + }); + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => { b.HasOne("EShopOnAbp.OrderingService.Buyers.Buyer", null) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs new file mode 100644 index 00000000..a1b3ec37 --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs @@ -0,0 +1,13 @@ +using System; +using EShopOnAbp.OrderingService.EntityFrameworkCore; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace EShopOnAbp.OrderingService.Orders; + +public class EfCoreOrderRepository : EfCoreRepository, IOrderRepository +{ + public EfCoreOrderRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } +} \ No newline at end of file