// <auto-generated />
using System;
using ComputerShopDatabaseImplement;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;

#nullable disable

namespace ComputerShopDatabaseImplement.Migrations
{
    [DbContext(typeof(ComputerShopDatabase))]
    partial class ComputerShopDatabaseModelSnapshot : ModelSnapshot
    {
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "7.0.18")
                .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<string>("AssemblyName")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<string>("Category")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<double>("Price")
                        .HasColumnType("double precision");

                    b.Property<int>("UserId")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.HasIndex("UserId");

                    b.ToTable("Assemblies");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.AssemblyComponent", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<int>("AssemblyId")
                        .HasColumnType("integer");

                    b.Property<int>("ComponentId")
                        .HasColumnType("integer");

                    b.Property<int>("Count")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.HasIndex("AssemblyId");

                    b.HasIndex("ComponentId");

                    b.ToTable("AssemblyComponents");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<string>("ComponentName")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<double>("Cost")
                        .HasColumnType("double precision");

                    b.Property<int>("UserId")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.HasIndex("UserId");

                    b.ToTable("Components");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<DateTime>("DateCreate")
                        .HasColumnType("timestamp without time zone");

                    b.Property<int>("Status")
                        .HasColumnType("integer");

                    b.Property<double>("Sum")
                        .HasColumnType("double precision");

                    b.Property<int>("UserId")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.HasIndex("UserId");

                    b.ToTable("Orders");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Product", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<double>("Price")
                        .HasColumnType("double precision");

                    b.Property<string>("ProductName")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<int?>("ShipmentId")
                        .HasColumnType("integer");

                    b.Property<int>("UserId")
                        .HasColumnType("integer");

                    b.Property<int>("Warranty")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.HasIndex("ShipmentId");

                    b.HasIndex("UserId");

                    b.ToTable("Products");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ProductComponent", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<int>("ComponentId")
                        .HasColumnType("integer");

                    b.Property<int>("Count")
                        .HasColumnType("integer");

                    b.Property<int>("ProductId")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.HasIndex("ComponentId");

                    b.HasIndex("ProductId");

                    b.ToTable("ProductComponents");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Request", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<int?>("AssemblyId")
                        .HasColumnType("integer");

                    b.Property<string>("ClientFIO")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<DateTime>("DateRequest")
                        .HasColumnType("timestamp without time zone");

                    b.Property<int>("UserId")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.HasIndex("AssemblyId");

                    b.HasIndex("UserId");

                    b.ToTable("Requests");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.RequestOrder", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<int>("OrderId")
                        .HasColumnType("integer");

                    b.Property<int>("RequestId")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.HasIndex("OrderId");

                    b.HasIndex("RequestId");

                    b.ToTable("RequestOrders");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Shipment", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<DateTime>("DateShipment")
                        .HasColumnType("timestamp without time zone");

                    b.Property<string>("ProviderName")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<int>("UserId")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.HasIndex("UserId");

                    b.ToTable("Shipments");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ShipmentOrder", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<int>("OrderId")
                        .HasColumnType("integer");

                    b.Property<int>("ShipmentId")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.HasIndex("OrderId");

                    b.HasIndex("ShipmentId");

                    b.ToTable("ShipmentOrders");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.User", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("integer");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));

                    b.Property<string>("Email")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<string>("Login")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<string>("Password")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<int>("Role")
                        .HasColumnType("integer");

                    b.HasKey("Id");

                    b.ToTable("Users");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b =>
                {
                    b.HasOne("ComputerShopDatabaseImplement.Models.User", null)
                        .WithMany("Assemblies")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.AssemblyComponent", b =>
                {
                    b.HasOne("ComputerShopDatabaseImplement.Models.Assembly", "Assembly")
                        .WithMany("Components")
                        .HasForeignKey("AssemblyId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component")
                        .WithMany("AssemblyComponents")
                        .HasForeignKey("ComponentId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Assembly");

                    b.Navigation("Component");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b =>
                {
                    b.HasOne("ComputerShopDatabaseImplement.Models.User", null)
                        .WithMany("Components")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b =>
                {
                    b.HasOne("ComputerShopDatabaseImplement.Models.User", null)
                        .WithMany("Orders")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Product", b =>
                {
                    b.HasOne("ComputerShopDatabaseImplement.Models.Shipment", "Shipment")
                        .WithMany("Products")
                        .HasForeignKey("ShipmentId");

                    b.HasOne("ComputerShopDatabaseImplement.Models.User", null)
                        .WithMany("Proucts")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Shipment");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ProductComponent", b =>
                {
                    b.HasOne("ComputerShopDatabaseImplement.Models.Component", "Component")
                        .WithMany("ProductComponents")
                        .HasForeignKey("ComponentId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("ComputerShopDatabaseImplement.Models.Product", "Product")
                        .WithMany("Components")
                        .HasForeignKey("ProductId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Component");

                    b.Navigation("Product");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Request", b =>
                {
                    b.HasOne("ComputerShopDatabaseImplement.Models.Assembly", "Assembly")
                        .WithMany("Requests")
                        .HasForeignKey("AssemblyId");

                    b.HasOne("ComputerShopDatabaseImplement.Models.User", "User")
                        .WithMany("Requests")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Assembly");

                    b.Navigation("User");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.RequestOrder", b =>
                {
                    b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order")
                        .WithMany("Requests")
                        .HasForeignKey("OrderId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("ComputerShopDatabaseImplement.Models.Request", "Request")
                        .WithMany("Orders")
                        .HasForeignKey("RequestId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Order");

                    b.Navigation("Request");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Shipment", b =>
                {
                    b.HasOne("ComputerShopDatabaseImplement.Models.User", null)
                        .WithMany("Shipments")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.ShipmentOrder", b =>
                {
                    b.HasOne("ComputerShopDatabaseImplement.Models.Order", "Order")
                        .WithMany("Shipments")
                        .HasForeignKey("OrderId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("ComputerShopDatabaseImplement.Models.Shipment", "Shipment")
                        .WithMany("Orders")
                        .HasForeignKey("ShipmentId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Order");

                    b.Navigation("Shipment");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Assembly", b =>
                {
                    b.Navigation("Components");

                    b.Navigation("Requests");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Component", b =>
                {
                    b.Navigation("AssemblyComponents");

                    b.Navigation("ProductComponents");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Order", b =>
                {
                    b.Navigation("Requests");

                    b.Navigation("Shipments");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Product", b =>
                {
                    b.Navigation("Components");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Request", b =>
                {
                    b.Navigation("Orders");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.Shipment", b =>
                {
                    b.Navigation("Orders");

                    b.Navigation("Products");
                });

            modelBuilder.Entity("ComputerShopDatabaseImplement.Models.User", b =>
                {
                    b.Navigation("Assemblies");

                    b.Navigation("Components");

                    b.Navigation("Orders");

                    b.Navigation("Proucts");

                    b.Navigation("Requests");

                    b.Navigation("Shipments");
                });
#pragma warning restore 612, 618
        }
    }
}