// <auto-generated />
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable
namespace Hcs.WebApp.Data.Hcs.Migrations
{
    [DbContext(typeof(HcsDbContext))]
    [Migration("20251105064709_CreateHcsSchema")]
    public partial class CreateHcsSchema
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "9.0.9")
                .HasAnnotation("Relational:MaxIdentifierLength", 128);

            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);

            modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Campaign", b =>
            {
                b.Property<int>("Id")
                    .ValueGeneratedOnAdd()
                    .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));

                b.Property<DateTime>("CreatedAt")
                    .HasColumnType("datetime2");

                b.Property<DateTime?>("EndedAt")
                    .HasColumnType("datetime2");

                b.Property<string>("FailureReason")
                    .HasColumnType("nvarchar(max)");

                b.Property<string>("InitiatorId")
                    .IsRequired()
                    .HasColumnType("nvarchar(max)");

                b.Property<int>("Progress")
                    .HasColumnType("int");

                b.Property<DateTime?>("StartedAt")
                    .HasColumnType("datetime2");

                b.Property<int>("Step")
                    .HasColumnType("int");

                b.Property<string>("Type")
                    .IsRequired()
                    .HasColumnType("nvarchar(max)");

                b.HasKey("Id");

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

            modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Operation", b =>
            {
                b.Property<int>("Id")
                    .ValueGeneratedOnAdd()
                    .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));

                b.Property<int>("CampaignId")
                    .HasColumnType("int");

                b.Property<DateTime>("CreatedAt")
                    .HasColumnType("datetime2");

                b.Property<DateTime?>("EndedAt")
                    .HasColumnType("datetime2");

                b.Property<string>("FailureReason")
                    .HasColumnType("nvarchar(max)");

                b.Property<string>("MessageGuid")
                    .HasColumnType("nvarchar(max)");

                b.Property<DateTime?>("StartedAt")
                    .HasColumnType("datetime2");

                b.Property<string>("Type")
                    .IsRequired()
                    .HasColumnType("nvarchar(max)");

                b.HasKey("Id");

                b.HasIndex("CampaignId");

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

            modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Registry", b =>
            {
                b.Property<Guid>("Id")
                    .ValueGeneratedOnAdd()
                    .HasColumnType("uniqueidentifier");

                b.Property<bool>("IsCommon")
                    .HasColumnType("bit");

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

                b.Property<string>("Name")
                    .IsRequired()
                    .HasColumnType("nvarchar(max)");

                b.Property<int>("Number")
                    .HasColumnType("int");

                b.Property<DateTime?>("SyncedAt")
                    .HasColumnType("datetime2");

                b.HasKey("Id");

                b.HasIndex("LastSyncOperationId");

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

            modelBuilder.Entity("Hcs.WebApp.Data.Hcs.RegistryElement", b =>
            {
                b.Property<Guid>("Id")
                    .ValueGeneratedOnAdd()
                    .HasColumnType("uniqueidentifier");

                b.Property<string>("Code")
                    .IsRequired()
                    .HasColumnType("nvarchar(max)");

                b.Property<string>("GUID")
                    .IsRequired()
                    .HasColumnType("nvarchar(max)");

                b.Property<string>("Json")
                    .HasColumnType("nvarchar(max)");

                b.Property<Guid>("RegistryId")
                    .HasColumnType("uniqueidentifier");

                b.HasKey("Id");

                b.HasIndex("RegistryId");

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

            modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Operation", b =>
            {
                b.HasOne("Hcs.WebApp.Data.Hcs.Campaign", "Campaign")
                    .WithMany("Operations")
                    .HasForeignKey("CampaignId")
                    .OnDelete(DeleteBehavior.Cascade)
                    .IsRequired();

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

            modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Registry", b =>
            {
                b.HasOne("Hcs.WebApp.Data.Hcs.Operation", "LastSyncOperation")
                    .WithMany("Registries")
                    .HasForeignKey("LastSyncOperationId");

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

            modelBuilder.Entity("Hcs.WebApp.Data.Hcs.RegistryElement", b =>
            {
                b.HasOne("Hcs.WebApp.Data.Hcs.Registry", "Registry")
                    .WithMany("Elements")
                    .HasForeignKey("RegistryId")
                    .OnDelete(DeleteBehavior.Cascade)
                    .IsRequired();

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

            modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Campaign", b =>
            {
                b.Navigation("Operations");
            });

            modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Operation", b =>
            {
                b.Navigation("Registries");
            });

            modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Registry", b =>
            {
                b.Navigation("Elements");
            });
#pragma warning restore 612, 618
        }
    }
}
