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

#nullable disable

namespace PetCompanion.Migrations
{
    [DbContext(typeof(ApplicationDbContext))]
    partial class ApplicationDbContextModelSnapshot : ModelSnapshot
    {
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder.HasAnnotation("ProductVersion", "9.0.1");

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("GameItemId");

                    b.HasIndex("PetId");

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

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

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

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

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

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

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

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

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

                    b.HasKey("Id");

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

            modelBuilder.Entity("PetCompanion.Models.Inventory", b =>
                {
                    b.Property<string>("PetId")
                        .HasColumnType("TEXT");

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

                    b.PrimitiveCollection<string>("Items")
                        .IsRequired()
                        .HasColumnType("TEXT");

                    b.HasKey("PetId");

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

            modelBuilder.Entity("PetCompanion.Models.Pet", b =>
                {
                    b.Property<string>("Id")
                        .HasColumnType("TEXT");

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

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

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

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

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

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

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

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

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

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

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

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

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

                    b.HasKey("Id");

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

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("PetId");

                    b.HasIndex("SkillId");

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

            modelBuilder.Entity("PetCompanion.Models.PetStats", b =>
                {
                    b.Property<string>("PetId")
                        .HasColumnType("TEXT");

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

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

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

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

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

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

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

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

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

                    b.HasKey("PetId");

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

            modelBuilder.Entity("PetCompanion.Models.Resources", b =>
                {
                    b.Property<string>("PetId")
                        .HasColumnType("TEXT");

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

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

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

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

                    b.HasKey("PetId");

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

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

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

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

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

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

                    b.PrimitiveCollection<string>("SkillsIdRequired")
                        .HasColumnType("TEXT");

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

                    b.HasKey("Id");

                    b.ToTable("Skills");

                    b.HasData(
                        new
                        {
                            Id = 1,
                            Description = "Increases maximum health of your pet, making it more resilient.",
                            Icon = "❤",
                            Name = "Vitality Mastery",
                            PointsCost = 1,
                            Type = 0
                        },
                        new
                        {
                            Id = 2,
                            Description = "Increases maximum intelligence of your pet, improving its learning capabilities.",
                            Icon = "🧠",
                            Name = "Mind Enhancement",
                            PointsCost = 1,
                            Type = 0
                        },
                        new
                        {
                            Id = 3,
                            Description = "Increases maximum strength of your pet, making it more powerful.",
                            Icon = "💪",
                            Name = "Strength Training",
                            PointsCost = 1,
                            Type = 0
                        },
                        new
                        {
                            Id = 4,
                            Description = "Increases maximum charisma of your pet, making it more charming.",
                            Icon = "🎭",
                            Name = "Charisma Boost",
                            PointsCost = 1,
                            Type = 0
                        },
                        new
                        {
                            Id = 5,
                            Description = "Increases luck of your pet, making it more fortunate to find rare items.",
                            Icon = "🍀",
                            Name = "Luck of the Draw",
                            PointsCost = 1,
                            SkillsIdRequired = "[4]",
                            Type = 0
                        },
                        new
                        {
                            Id = 6,
                            Description = "Increases agility of your pet, making it faster in combat.",
                            Icon = "🏃",
                            Name = "Agility Training",
                            PointsCost = 1,
                            SkillsIdRequired = "[3]",
                            Type = 0
                        },
                        new
                        {
                            Id = 7,
                            Description = "Increases perception of your pet, making it more aware of its surroundings.",
                            Icon = "👀",
                            Name = "Perception Boost",
                            PointsCost = 1,
                            SkillsIdRequired = "[2]",
                            Type = 0
                        });
                });

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

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

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

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

                    b.Property<decimal>("Value")
                        .HasColumnType("TEXT");

                    b.HasKey("Id");

                    b.HasIndex("SkillId");

                    b.ToTable("SkillEffects");

                    b.HasData(
                        new
                        {
                            Id = 1,
                            Effect = "MaxHealth",
                            SkillId = 1,
                            Tier = 1,
                            Value = 25m
                        },
                        new
                        {
                            Id = 2,
                            Effect = "MaxHealth",
                            SkillId = 1,
                            Tier = 2,
                            Value = 50m
                        },
                        new
                        {
                            Id = 3,
                            Effect = "MaxHealth",
                            SkillId = 1,
                            Tier = 3,
                            Value = 100m
                        },
                        new
                        {
                            Id = 4,
                            Effect = "MaxIntelligence",
                            SkillId = 2,
                            Tier = 1,
                            Value = 5m
                        },
                        new
                        {
                            Id = 5,
                            Effect = "MaxIntelligence",
                            SkillId = 2,
                            Tier = 2,
                            Value = 10m
                        },
                        new
                        {
                            Id = 6,
                            Effect = "MaxIntelligence",
                            SkillId = 2,
                            Tier = 3,
                            Value = 20m
                        },
                        new
                        {
                            Id = 7,
                            Effect = "MaxStrength",
                            SkillId = 3,
                            Tier = 1,
                            Value = 5m
                        },
                        new
                        {
                            Id = 8,
                            Effect = "MaxStrength",
                            SkillId = 3,
                            Tier = 2,
                            Value = 10m
                        },
                        new
                        {
                            Id = 9,
                            Effect = "MaxStrength",
                            SkillId = 3,
                            Tier = 3,
                            Value = 20m
                        },
                        new
                        {
                            Id = 10,
                            Effect = "MaxCharisma",
                            SkillId = 4,
                            Tier = 1,
                            Value = 5m
                        },
                        new
                        {
                            Id = 11,
                            Effect = "MaxCharisma",
                            SkillId = 4,
                            Tier = 2,
                            Value = 10m
                        },
                        new
                        {
                            Id = 12,
                            Effect = "MaxCharisma",
                            SkillId = 4,
                            Tier = 3,
                            Value = 20m
                        },
                        new
                        {
                            Id = 13,
                            Effect = "Luck",
                            SkillId = 5,
                            Tier = 1,
                            Value = 1m
                        },
                        new
                        {
                            Id = 14,
                            Effect = "Luck",
                            SkillId = 5,
                            Tier = 2,
                            Value = 2m
                        },
                        new
                        {
                            Id = 15,
                            Effect = "Luck",
                            SkillId = 5,
                            Tier = 3,
                            Value = 3m
                        },
                        new
                        {
                            Id = 16,
                            Effect = "Agility",
                            SkillId = 6,
                            Tier = 1,
                            Value = 1m
                        },
                        new
                        {
                            Id = 17,
                            Effect = "Agility",
                            SkillId = 6,
                            Tier = 2,
                            Value = 2m
                        },
                        new
                        {
                            Id = 18,
                            Effect = "Agility",
                            SkillId = 6,
                            Tier = 3,
                            Value = 3m
                        },
                        new
                        {
                            Id = 19,
                            Effect = "Perception",
                            SkillId = 7,
                            Tier = 1,
                            Value = 1m
                        },
                        new
                        {
                            Id = 20,
                            Effect = "Perception",
                            SkillId = 7,
                            Tier = 2,
                            Value = 2m
                        },
                        new
                        {
                            Id = 21,
                            Effect = "Perception",
                            SkillId = 7,
                            Tier = 3,
                            Value = 3m
                        });
                });

            modelBuilder.Entity("PetCompanion.Models.EquippedItem", b =>
                {
                    b.HasOne("PetCompanion.Models.GameItem", "GameItem")
                        .WithMany()
                        .HasForeignKey("GameItemId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("PetCompanion.Models.Pet", "Pet")
                        .WithMany("EquippedItemsList")
                        .HasForeignKey("PetId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("GameItem");

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

            modelBuilder.Entity("PetCompanion.Models.Inventory", b =>
                {
                    b.HasOne("PetCompanion.Models.Pet", "Pet")
                        .WithOne("Inventory")
                        .HasForeignKey("PetCompanion.Models.Inventory", "PetId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

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

            modelBuilder.Entity("PetCompanion.Models.PetSkill", b =>
                {
                    b.HasOne("PetCompanion.Models.Pet", "Pet")
                        .WithMany("Skills")
                        .HasForeignKey("PetId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("PetCompanion.Models.Skill", "Skill")
                        .WithMany("PetSkills")
                        .HasForeignKey("SkillId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Pet");

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

            modelBuilder.Entity("PetCompanion.Models.PetStats", b =>
                {
                    b.HasOne("PetCompanion.Models.Pet", null)
                        .WithOne("Stats")
                        .HasForeignKey("PetCompanion.Models.PetStats", "PetId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("PetCompanion.Models.Resources", b =>
                {
                    b.HasOne("PetCompanion.Models.Pet", null)
                        .WithOne("Resources")
                        .HasForeignKey("PetCompanion.Models.Resources", "PetId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("PetCompanion.Models.SkillEffect", b =>
                {
                    b.HasOne("PetCompanion.Models.Skill", "Skill")
                        .WithMany("Effects")
                        .HasForeignKey("SkillId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

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

            modelBuilder.Entity("PetCompanion.Models.Pet", b =>
                {
                    b.Navigation("EquippedItemsList");

                    b.Navigation("Inventory")
                        .IsRequired();

                    b.Navigation("Resources")
                        .IsRequired();

                    b.Navigation("Skills");

                    b.Navigation("Stats")
                        .IsRequired();
                });

            modelBuilder.Entity("PetCompanion.Models.Skill", b =>
                {
                    b.Navigation("Effects");

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