// using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; using StockMaster.Data; #nullable disable namespace StockMaster.Migrations { [DbContext(typeof(StockDbContext))] [Migration("20260222001854_InitialSetup")] partial class InitialSetup { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "8.0.4") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("StockMaster.Models.Category", b => { b.Property("CategoryId") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("category_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("CategoryId")); b.Property("CreatedAt") .HasColumnType("timestamp without time zone") .HasColumnName("created_at"); b.Property("Description") .IsRequired() .HasColumnType("text") .HasColumnName("description"); b.Property("Name") .IsRequired() .HasMaxLength(50) .HasColumnType("character varying(50)") .HasColumnName("name"); b.HasKey("CategoryId"); b.ToTable("category", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.Customer", b => { b.Property("CustomerId") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("customer_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("CustomerId")); b.Property("Address") .IsRequired() .HasColumnType("text") .HasColumnName("address"); b.Property("CreatedAt") .HasColumnType("timestamp without time zone") .HasColumnName("created_at"); b.Property("Email") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("email"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("name"); b.Property("Phone") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)") .HasColumnName("phone"); b.HasKey("CustomerId"); b.ToTable("customer", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.Product", b => { b.Property("ProductId") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("product_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("ProductId")); b.Property("CategoryId") .HasColumnType("integer") .HasColumnName("category_id"); b.Property("CreatedAt") .HasColumnType("timestamp without time zone") .HasColumnName("created_at"); b.Property("Description") .IsRequired() .HasColumnType("text") .HasColumnName("description"); b.Property("IsActive") .HasColumnType("boolean") .HasColumnName("is_active"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("name"); b.Property("ReorderLevel") .HasColumnType("integer") .HasColumnName("reorder_level"); b.Property("Sku") .IsRequired() .HasMaxLength(50) .HasColumnType("character varying(50)") .HasColumnName("sku"); b.Property("SupplierId") .HasColumnType("integer") .HasColumnName("supplier_id"); b.Property("UnitPrice") .HasPrecision(12, 2) .HasColumnType("numeric(12,2)") .HasColumnName("unit_price"); b.HasKey("ProductId"); b.HasIndex("CategoryId"); b.HasIndex("SupplierId"); b.ToTable("product", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.ProductPriceLog", b => { b.Property("LogId") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("log_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("LogId")); b.Property("ChangedAt") .HasColumnType("timestamp without time zone") .HasColumnName("changed_at"); b.Property("ChangedBy") .IsRequired() .HasColumnType("text") .HasColumnName("changed_by"); b.Property("NewPrice") .HasColumnType("numeric") .HasColumnName("new_price"); b.Property("OldPrice") .HasColumnType("numeric") .HasColumnName("old_price"); b.Property("ProductId") .HasColumnType("integer") .HasColumnName("product_id"); b.Property("ProductName") .IsRequired() .HasColumnType("text") .HasColumnName("product_name"); b.HasKey("LogId"); b.ToTable("product_price_log", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.PurchaseOrder", b => { b.Property("PoId") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("po_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("PoId")); b.Property("ActualDeliveryDate") .HasColumnType("timestamp without time zone") .HasColumnName("actual_delivery_date"); b.Property("CreatedAt") .HasColumnType("timestamp without time zone") .HasColumnName("created_at"); b.Property("ExpectedDeliveryDate") .HasColumnType("timestamp without time zone") .HasColumnName("expected_delivery_date"); b.Property("OrderDate") .HasColumnType("timestamp without time zone") .HasColumnName("order_date"); b.Property("Status") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)") .HasColumnName("status"); b.Property("SupplierId") .HasColumnType("integer") .HasColumnName("supplier_id"); b.Property("WarehouseId") .HasColumnType("integer") .HasColumnName("warehouse_id"); b.HasKey("PoId"); b.HasIndex("SupplierId"); b.HasIndex("WarehouseId"); b.ToTable("purchase_order", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.PurchaseOrderItem", b => { b.Property("PoId") .HasColumnType("integer") .HasColumnName("po_id"); b.Property("ProductId") .HasColumnType("integer") .HasColumnName("product_id"); b.Property("Quantity") .HasColumnType("integer") .HasColumnName("quantity"); b.Property("ReceivedQuantity") .HasColumnType("integer") .HasColumnName("received_quantity"); b.Property("UnitCost") .HasPrecision(12, 2) .HasColumnType("numeric(12,2)") .HasColumnName("unit_cost"); b.HasKey("PoId", "ProductId"); b.HasIndex("ProductId"); b.ToTable("purchase_order_item", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.Sale", b => { b.Property("SaleId") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("sale_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("SaleId")); b.Property("CustomerId") .HasColumnType("integer") .HasColumnName("customer_id"); b.Property("DateTime") .HasColumnType("timestamp without time zone") .HasColumnName("date_time"); b.Property("TotalAmount") .HasPrecision(15, 2) .HasColumnType("numeric(15,2)") .HasColumnName("total_amount"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.Property("WarehouseId") .HasColumnType("integer") .HasColumnName("warehouse_id"); b.HasKey("SaleId"); b.HasIndex("CustomerId"); b.HasIndex("UserId"); b.HasIndex("WarehouseId"); b.ToTable("sale", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.SaleItem", b => { b.Property("SaleId") .HasColumnType("integer") .HasColumnName("sale_id"); b.Property("ProductId") .HasColumnType("integer") .HasColumnName("product_id"); b.Property("Quantity") .HasColumnType("integer") .HasColumnName("quantity"); b.Property("UnitPriceAtSale") .HasPrecision(12, 2) .HasColumnType("numeric(12,2)") .HasColumnName("unit_price_at_sale"); b.HasKey("SaleId", "ProductId"); b.HasIndex("ProductId"); b.ToTable("sale_item", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.Supplier", b => { b.Property("SupplierId") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("supplier_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("SupplierId")); b.Property("Address") .IsRequired() .HasColumnType("text") .HasColumnName("address"); b.Property("ContactPerson") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("contact_person"); b.Property("CreatedAt") .HasColumnType("timestamp without time zone") .HasColumnName("created_at"); b.Property("Email") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("email"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("name"); b.Property("Phone") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)") .HasColumnName("phone"); b.HasKey("SupplierId"); b.ToTable("supplier", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.User", b => { b.Property("UserId") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("user_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("UserId")); b.Property("CreatedAt") .HasColumnType("timestamp without time zone") .HasColumnName("created_at"); b.Property("Email") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("email"); b.Property("FullName") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("full_name"); b.Property("IsActive") .HasColumnType("boolean") .HasColumnName("is_active"); b.Property("Password") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("password"); b.Property("Role") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)") .HasColumnName("role"); b.Property("Username") .IsRequired() .HasMaxLength(50) .HasColumnType("character varying(50)") .HasColumnName("username"); b.HasKey("UserId"); b.ToTable("users", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.VwEmployeeRanking", b => { b.Property("AvgSaleValue") .HasColumnType("numeric") .HasColumnName("avg_sale_value"); b.Property("FullName") .IsRequired() .HasColumnType("text") .HasColumnName("full_name"); b.Property("RevenueRank") .HasColumnType("bigint") .HasColumnName("revenue_rank"); b.Property("Role") .IsRequired() .HasColumnType("text") .HasColumnName("role"); b.Property("TotalRevenue") .HasColumnType("numeric") .HasColumnName("total_revenue"); b.Property("TotalSales") .HasColumnType("bigint") .HasColumnName("total_sales"); b.Property("UniqueCustomers") .HasColumnType("bigint") .HasColumnName("unique_customers"); b.Property("UserId") .HasColumnType("integer") .HasColumnName("user_id"); b.ToTable((string)null); b.ToView("vw_employee_sales_ranking", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.VwSalesByDay", b => { b.Property("AvgSaleValue") .HasColumnType("numeric") .HasColumnName("avg_sale_value"); b.Property("DayName") .IsRequired() .HasColumnType("text") .HasColumnName("day_name"); b.Property("DayNumber") .HasColumnType("integer") .HasColumnName("day_number"); b.Property("TotalItemsSold") .HasColumnType("numeric") .HasColumnName("total_items_sold"); b.Property("TotalRevenue") .HasColumnType("numeric") .HasColumnName("total_revenue"); b.Property("TotalSales") .HasColumnType("bigint") .HasColumnName("total_sales"); b.ToTable((string)null); b.ToView("vw_sales_by_day_of_week", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.VwTodaysSummary", b => { b.Property("ActiveWarehouses") .HasColumnType("bigint") .HasColumnName("active_warehouses_today"); b.Property("TotalItemsSold") .HasColumnType("numeric") .HasColumnName("total_items_sold_today"); b.Property("TotalRevenue") .HasColumnType("numeric") .HasColumnName("total_revenue_today"); b.Property("TotalTransactions") .HasColumnType("bigint") .HasColumnName("total_transactions_today"); b.Property("UniqueCustomers") .HasColumnType("bigint") .HasColumnName("unique_customers_today"); b.ToTable((string)null); b.ToView("vw_todays_sales_summary", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.Warehouse", b => { b.Property("WarehouseId") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasColumnName("warehouse_id"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("WarehouseId")); b.Property("Capacity") .HasColumnType("integer") .HasColumnName("capacity"); b.Property("CreatedAt") .HasColumnType("timestamp without time zone") .HasColumnName("created_at"); b.Property("Location") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)") .HasColumnName("location"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)") .HasColumnName("name"); b.HasKey("WarehouseId"); b.ToTable("warehouse", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.WarehouseStock", b => { b.Property("WarehouseId") .HasColumnType("integer") .HasColumnName("warehouse_id"); b.Property("ProductId") .HasColumnType("integer") .HasColumnName("product_id"); b.Property("LastUpdated") .HasColumnType("timestamp without time zone") .HasColumnName("last_updated"); b.Property("QuantityOnHand") .HasColumnType("integer") .HasColumnName("quantity_on_hand"); b.HasKey("WarehouseId", "ProductId"); b.HasIndex("ProductId"); b.ToTable("warehouse_stock", "stock_management"); }); modelBuilder.Entity("StockMaster.Models.Product", b => { b.HasOne("StockMaster.Models.Category", "Category") .WithMany() .HasForeignKey("CategoryId"); b.HasOne("StockMaster.Models.Supplier", "Supplier") .WithMany() .HasForeignKey("SupplierId"); b.Navigation("Category"); b.Navigation("Supplier"); }); modelBuilder.Entity("StockMaster.Models.PurchaseOrder", b => { b.HasOne("StockMaster.Models.Supplier", "Supplier") .WithMany() .HasForeignKey("SupplierId"); b.HasOne("StockMaster.Models.Warehouse", "Warehouse") .WithMany() .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Supplier"); b.Navigation("Warehouse"); }); modelBuilder.Entity("StockMaster.Models.PurchaseOrderItem", b => { b.HasOne("StockMaster.Models.PurchaseOrder", "PurchaseOrder") .WithMany("PurchaseOrderItems") .HasForeignKey("PoId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("StockMaster.Models.Product", "Product") .WithMany() .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Product"); b.Navigation("PurchaseOrder"); }); modelBuilder.Entity("StockMaster.Models.Sale", b => { b.HasOne("StockMaster.Models.Customer", "Customer") .WithMany() .HasForeignKey("CustomerId"); b.HasOne("StockMaster.Models.User", "User") .WithMany() .HasForeignKey("UserId"); b.HasOne("StockMaster.Models.Warehouse", "Warehouse") .WithMany() .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Customer"); b.Navigation("User"); b.Navigation("Warehouse"); }); modelBuilder.Entity("StockMaster.Models.SaleItem", b => { b.HasOne("StockMaster.Models.Product", "Product") .WithMany() .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("StockMaster.Models.Sale", "Sale") .WithMany("SaleItems") .HasForeignKey("SaleId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Product"); b.Navigation("Sale"); }); modelBuilder.Entity("StockMaster.Models.WarehouseStock", b => { b.HasOne("StockMaster.Models.Product", "Product") .WithMany() .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("StockMaster.Models.Warehouse", "Warehouse") .WithMany() .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Product"); b.Navigation("Warehouse"); }); modelBuilder.Entity("StockMaster.Models.PurchaseOrder", b => { b.Navigation("PurchaseOrderItems"); }); modelBuilder.Entity("StockMaster.Models.Sale", b => { b.Navigation("SaleItems"); }); #pragma warning restore 612, 618 } } }