diff --git a/WyvernInventory.Infrastructure/Migrations/20260501023055_InitialCreate.Designer.cs b/WyvernInventory.Infrastructure/Migrations/20260501023055_InitialCreate.Designer.cs new file mode 100644 index 0000000..650ad6b --- /dev/null +++ b/WyvernInventory.Infrastructure/Migrations/20260501023055_InitialCreate.Designer.cs @@ -0,0 +1,182 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using WyvernInventory.Infrastructure.Data; + +#nullable disable + +namespace WyvernInventory.Infrastructure.Migrations +{ + [DbContext(typeof(DBContext))] + [Migration("20260501023055_InitialCreate")] + partial class InitialCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "10.0.7") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryAttributeDefinition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DataType") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TypeId"); + + b.ToTable("InventoryAttributeDefinitions"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryAttributeValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AttributeDefinitionId") + .HasColumnType("int"); + + b.Property("BoolValue") + .HasColumnType("bit"); + + b.Property("DateTimeValue") + .HasColumnType("datetime2"); + + b.Property("DecimalValue") + .HasColumnType("decimal(18,2)"); + + b.Property("IntValue") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("int"); + + b.Property("StringValue") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("AttributeDefinitionId"); + + b.HasIndex("ItemId", "AttributeDefinitionId") + .IsUnique(); + + b.ToTable("InventoryAttributeValues"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TypeId"); + + b.ToTable("InventoryItems"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("InventoryTypes"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryAttributeDefinition", b => + { + b.HasOne("WyvernInventory.Core.Models.InventoryType", "Type") + .WithMany("AttributeDefinitions") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryAttributeValue", b => + { + b.HasOne("WyvernInventory.Core.Models.InventoryAttributeDefinition", "AttributeDefinition") + .WithMany() + .HasForeignKey("AttributeDefinitionId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("WyvernInventory.Core.Models.InventoryItem", "Item") + .WithMany("AttributeValues") + .HasForeignKey("ItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AttributeDefinition"); + + b.Navigation("Item"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryItem", b => + { + b.HasOne("WyvernInventory.Core.Models.InventoryType", "Type") + .WithMany() + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryItem", b => + { + b.Navigation("AttributeValues"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryType", b => + { + b.Navigation("AttributeDefinitions"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/WyvernInventory.Infrastructure/Migrations/20260501023055_InitialCreate.cs b/WyvernInventory.Infrastructure/Migrations/20260501023055_InitialCreate.cs new file mode 100644 index 0000000..3cc990f --- /dev/null +++ b/WyvernInventory.Infrastructure/Migrations/20260501023055_InitialCreate.cs @@ -0,0 +1,136 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace WyvernInventory.Infrastructure.Migrations +{ + /// + public partial class InitialCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "InventoryTypes", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_InventoryTypes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "InventoryAttributeDefinitions", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + TypeId = table.Column(type: "int", nullable: true), + Name = table.Column(type: "nvarchar(max)", nullable: true), + DataType = table.Column(type: "int", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_InventoryAttributeDefinitions", x => x.Id); + table.ForeignKey( + name: "FK_InventoryAttributeDefinitions_InventoryTypes_TypeId", + column: x => x.TypeId, + principalTable: "InventoryTypes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "InventoryItems", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(max)", nullable: false), + TypeId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_InventoryItems", x => x.Id); + table.ForeignKey( + name: "FK_InventoryItems_InventoryTypes_TypeId", + column: x => x.TypeId, + principalTable: "InventoryTypes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "InventoryAttributeValues", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ItemId = table.Column(type: "int", nullable: false), + AttributeDefinitionId = table.Column(type: "int", nullable: false), + StringValue = table.Column(type: "nvarchar(max)", nullable: true), + IntValue = table.Column(type: "int", nullable: true), + DecimalValue = table.Column(type: "decimal(18,2)", nullable: true), + BoolValue = table.Column(type: "bit", nullable: true), + DateTimeValue = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_InventoryAttributeValues", x => x.Id); + table.ForeignKey( + name: "FK_InventoryAttributeValues_InventoryAttributeDefinitions_AttributeDefinitionId", + column: x => x.AttributeDefinitionId, + principalTable: "InventoryAttributeDefinitions", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_InventoryAttributeValues_InventoryItems_ItemId", + column: x => x.ItemId, + principalTable: "InventoryItems", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_InventoryAttributeDefinitions_TypeId", + table: "InventoryAttributeDefinitions", + column: "TypeId"); + + migrationBuilder.CreateIndex( + name: "IX_InventoryAttributeValues_AttributeDefinitionId", + table: "InventoryAttributeValues", + column: "AttributeDefinitionId"); + + migrationBuilder.CreateIndex( + name: "IX_InventoryAttributeValues_ItemId_AttributeDefinitionId", + table: "InventoryAttributeValues", + columns: new[] { "ItemId", "AttributeDefinitionId" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_InventoryItems_TypeId", + table: "InventoryItems", + column: "TypeId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "InventoryAttributeValues"); + + migrationBuilder.DropTable( + name: "InventoryAttributeDefinitions"); + + migrationBuilder.DropTable( + name: "InventoryItems"); + + migrationBuilder.DropTable( + name: "InventoryTypes"); + } + } +} diff --git a/WyvernInventory.Infrastructure/Migrations/DBContextModelSnapshot.cs b/WyvernInventory.Infrastructure/Migrations/DBContextModelSnapshot.cs new file mode 100644 index 0000000..71f3310 --- /dev/null +++ b/WyvernInventory.Infrastructure/Migrations/DBContextModelSnapshot.cs @@ -0,0 +1,179 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using WyvernInventory.Infrastructure.Data; + +#nullable disable + +namespace WyvernInventory.Infrastructure.Migrations +{ + [DbContext(typeof(DBContext))] + partial class DBContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "10.0.7") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryAttributeDefinition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DataType") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TypeId"); + + b.ToTable("InventoryAttributeDefinitions"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryAttributeValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AttributeDefinitionId") + .HasColumnType("int"); + + b.Property("BoolValue") + .HasColumnType("bit"); + + b.Property("DateTimeValue") + .HasColumnType("datetime2"); + + b.Property("DecimalValue") + .HasColumnType("decimal(18,2)"); + + b.Property("IntValue") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("int"); + + b.Property("StringValue") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("AttributeDefinitionId"); + + b.HasIndex("ItemId", "AttributeDefinitionId") + .IsUnique(); + + b.ToTable("InventoryAttributeValues"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("TypeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TypeId"); + + b.ToTable("InventoryItems"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("InventoryTypes"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryAttributeDefinition", b => + { + b.HasOne("WyvernInventory.Core.Models.InventoryType", "Type") + .WithMany("AttributeDefinitions") + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryAttributeValue", b => + { + b.HasOne("WyvernInventory.Core.Models.InventoryAttributeDefinition", "AttributeDefinition") + .WithMany() + .HasForeignKey("AttributeDefinitionId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("WyvernInventory.Core.Models.InventoryItem", "Item") + .WithMany("AttributeValues") + .HasForeignKey("ItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AttributeDefinition"); + + b.Navigation("Item"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryItem", b => + { + b.HasOne("WyvernInventory.Core.Models.InventoryType", "Type") + .WithMany() + .HasForeignKey("TypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryItem", b => + { + b.Navigation("AttributeValues"); + }); + + modelBuilder.Entity("WyvernInventory.Core.Models.InventoryType", b => + { + b.Navigation("AttributeDefinitions"); + }); +#pragma warning restore 612, 618 + } + } +}