// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Watcher.Data;

#nullable disable

namespace Watcher.Migrations
{
    [DbContext(typeof(AppDbContext))]
    [Migration("20251105201056_AddContainerServerNavigation")]
    partial class AddContainerServerNavigation
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder.HasAnnotation("ProductVersion", "8.0.6");

            modelBuilder.Entity("Watcher.Models.Container", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("ContainerId")
                        .HasColumnType("TEXT")
                        .HasAnnotation("Relational:JsonPropertyName", "id");

                    b.Property<string>("Image")
                        .HasColumnType("TEXT")
                        .HasAnnotation("Relational:JsonPropertyName", "image");

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

                    b.Property<bool>("IsRunning")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT")
                        .HasAnnotation("Relational:JsonPropertyName", "name");

                    b.Property<int>("ServerId")
                        .HasColumnType("INTEGER")
                        .HasAnnotation("Relational:JsonPropertyName", "Server_id");

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

                    b.HasKey("Id");

                    b.HasIndex("ImageId");

                    b.HasIndex("ServerId");

                    b.HasIndex("TagId");

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

            modelBuilder.Entity("Watcher.Models.ContainerMetric", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<double>("CPU_Load")
                        .HasColumnType("REAL");

                    b.Property<double>("CPU_Temp")
                        .HasColumnType("REAL");

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

                    b.Property<double>("RAM_Load")
                        .HasColumnType("REAL");

                    b.Property<double>("RAM_Size")
                        .HasColumnType("REAL");

                    b.Property<DateTime>("Timestamp")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

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

            modelBuilder.Entity("Watcher.Models.Image", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.Property<string>("Tag")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

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

            modelBuilder.Entity("Watcher.Models.LogEvent", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<string>("Level")
                        .HasColumnType("TEXT");

                    b.Property<string>("Message")
                        .HasColumnType("TEXT");

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

                    b.Property<DateTime>("Timestamp")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("ContainerId");

                    b.HasIndex("ServerId");

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

            modelBuilder.Entity("Watcher.Models.Metric", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<double>("CPU_Load")
                        .HasColumnType("REAL");

                    b.Property<double>("CPU_Temp")
                        .HasColumnType("REAL");

                    b.Property<double>("DISK_Size")
                        .HasColumnType("REAL");

                    b.Property<double>("DISK_Temp")
                        .HasColumnType("REAL");

                    b.Property<double>("DISK_Usage")
                        .HasColumnType("REAL");

                    b.Property<double>("GPU_Load")
                        .HasColumnType("REAL");

                    b.Property<double>("GPU_Temp")
                        .HasColumnType("REAL");

                    b.Property<double>("GPU_Vram_Size")
                        .HasColumnType("REAL");

                    b.Property<double>("GPU_Vram_Usage")
                        .HasColumnType("REAL");

                    b.Property<double>("NET_In")
                        .HasColumnType("REAL");

                    b.Property<double>("NET_Out")
                        .HasColumnType("REAL");

                    b.Property<double>("RAM_Load")
                        .HasColumnType("REAL");

                    b.Property<double>("RAM_Size")
                        .HasColumnType("REAL");

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

                    b.Property<DateTime>("Timestamp")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

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

            modelBuilder.Entity("Watcher.Models.Server", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<double>("CPU_Load_Critical")
                        .HasColumnType("REAL");

                    b.Property<double>("CPU_Load_Warning")
                        .HasColumnType("REAL");

                    b.Property<double>("CPU_Temp_Critical")
                        .HasColumnType("REAL");

                    b.Property<double>("CPU_Temp_Warning")
                        .HasColumnType("REAL");

                    b.Property<int>("CpuCores")
                        .HasColumnType("INTEGER");

                    b.Property<string>("CpuType")
                        .HasColumnType("TEXT");

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

                    b.Property<double>("DISK_Temp_Critical")
                        .HasColumnType("REAL");

                    b.Property<double>("DISK_Temp_Warning")
                        .HasColumnType("REAL");

                    b.Property<string>("Description")
                        .HasColumnType("TEXT");

                    b.Property<string>("DiskSpace")
                        .HasColumnType("TEXT");

                    b.Property<double>("Disk_Usage_Critical")
                        .HasColumnType("REAL");

                    b.Property<double>("Disk_Usage_Warning")
                        .HasColumnType("REAL");

                    b.Property<double>("GPU_Load_Critical")
                        .HasColumnType("REAL");

                    b.Property<double>("GPU_Load_Warning")
                        .HasColumnType("REAL");

                    b.Property<double>("GPU_Temp_Critical")
                        .HasColumnType("REAL");

                    b.Property<double>("GPU_Temp_Warning")
                        .HasColumnType("REAL");

                    b.Property<string>("GpuType")
                        .HasColumnType("TEXT");

                    b.Property<string>("IPAddress")
                        .IsRequired()
                        .HasColumnType("TEXT");

                    b.Property<bool>("IsOnline")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IsVerified")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("LastSeen")
                        .HasColumnType("TEXT");

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

                    b.Property<double>("RAM_Load_Critical")
                        .HasColumnType("REAL");

                    b.Property<double>("RAM_Load_Warning")
                        .HasColumnType("REAL");

                    b.Property<double>("RamSize")
                        .HasColumnType("REAL");

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

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

                    b.HasKey("Id");

                    b.HasIndex("TagId");

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

            modelBuilder.Entity("Watcher.Models.Tag", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

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

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

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

                    b.Property<DateTime>("LastLogin")
                        .HasColumnType("TEXT");

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

                    b.Property<string>("Username")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

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

            modelBuilder.Entity("Watcher.Models.Container", b =>
                {
                    b.HasOne("Watcher.Models.Image", null)
                        .WithMany("Containers")
                        .HasForeignKey("ImageId");

                    b.HasOne("Watcher.Models.Server", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Watcher.Models.Tag", null)
                        .WithMany("Containers")
                        .HasForeignKey("TagId");

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

            modelBuilder.Entity("Watcher.Models.LogEvent", b =>
                {
                    b.HasOne("Watcher.Models.Container", "Container")
                        .WithMany()
                        .HasForeignKey("ContainerId");

                    b.HasOne("Watcher.Models.Server", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId");

                    b.Navigation("Container");

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

            modelBuilder.Entity("Watcher.Models.Server", b =>
                {
                    b.HasOne("Watcher.Models.Tag", null)
                        .WithMany("Servers")
                        .HasForeignKey("TagId");
                });

            modelBuilder.Entity("Watcher.Models.Image", b =>
                {
                    b.Navigation("Containers");
                });

            modelBuilder.Entity("Watcher.Models.Tag", b =>
                {
                    b.Navigation("Containers");

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