Add database entities for USB vendor and product IDs.

This commit is contained in:
2018-12-24 06:29:52 +00:00
parent 93baf690cd
commit 383794bace
14 changed files with 1809 additions and 0 deletions

View File

@@ -54,6 +54,8 @@ namespace DiscImageChef.Database
public DbSet<DeviceStat> SeenDevices { get; set; }
public DbSet<OperatingSystem> OperatingSystems { get; set; }
public DbSet<Version> Versions { get; set; }
public DbSet<UsbVendor> UsbVendors { get; set; }
public DbSet<UsbProduct> UsbProducts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{

View File

@@ -80,6 +80,8 @@
<Compile Include="Migrations\20181223183913_FixUnsignedFields.Designer.cs" />
<Compile Include="Migrations\20181223214411_UseBinaryDataForIdentifyInquiryAndModesInReports.cs" />
<Compile Include="Migrations\20181223214411_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs" />
<Compile Include="Migrations\20181224044809_StoreUsbIdsInDatabase.cs" />
<Compile Include="Migrations\20181224044809_StoreUsbIdsInDatabase.Designer.cs" />
<Compile Include="Migrations\DicContextModelSnapshot.cs" />
<Compile Include="Models\Command.cs" />
<Compile Include="Models\Device.cs" />
@@ -91,6 +93,8 @@
<Compile Include="Models\OperatingSystem.cs" />
<Compile Include="Models\Partition.cs" />
<Compile Include="Models\Report.cs" />
<Compile Include="Models\UsbProduct.cs" />
<Compile Include="Models\UsbVendor.cs" />
<Compile Include="Models\Version.cs" />
</ItemGroup>
<ItemGroup>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,46 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace DiscImageChef.Database.Migrations
{
public partial class StoreUsbIdsInDatabase : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable("UsbVendors",
table => new
{
Id = table.Column<ushort>(nullable: false),
Vendor = table.Column<string>(nullable: true),
AddedWhen = table.Column<DateTime>(nullable: false),
ModifiedWhen = table.Column<DateTime>(nullable: false)
}, constraints: table => { table.PrimaryKey("PK_UsbVendors", x => x.Id); });
migrationBuilder.CreateTable("UsbProducts",
table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
ProductId = table.Column<ushort>(nullable: false),
Product = table.Column<string>(nullable: true),
AddedWhen = table.Column<DateTime>(nullable: false),
ModifiedWhen = table.Column<DateTime>(nullable: false),
VendorId = table.Column<ushort>(nullable: false)
}, constraints: table =>
{
table.PrimaryKey("PK_UsbProducts", x => x.Id);
table.ForeignKey("FK_UsbProducts_UsbVendors_VendorId", x => x.VendorId,
"UsbVendors", "Id", onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex("IX_UsbProducts_VendorId", "UsbProducts", "VendorId");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable("UsbProducts");
migrationBuilder.DropTable("UsbVendors");
}
}
}

View File

@@ -1122,6 +1122,42 @@ namespace DiscImageChef.Database.Migrations
b.ToTable("Reports");
});
modelBuilder.Entity("DiscImageChef.Database.Models.UsbProduct", b =>
{
b.Property<int>("Id").ValueGeneratedOnAdd();
b.Property<DateTime>("AddedWhen");
b.Property<DateTime>("ModifiedWhen");
b.Property<string>("Product");
b.Property<ushort>("ProductId");
b.Property<ushort>("VendorId");
b.HasKey("Id");
b.HasIndex("VendorId");
b.ToTable("UsbProducts");
});
modelBuilder.Entity("DiscImageChef.Database.Models.UsbVendor", b =>
{
b.Property<ushort>("Id").ValueGeneratedOnAdd();
b.Property<DateTime>("AddedWhen");
b.Property<DateTime>("ModifiedWhen");
b.Property<string>("Vendor");
b.HasKey("Id");
b.ToTable("UsbVendors");
});
modelBuilder.Entity("DiscImageChef.Database.Models.Version", b =>
{
b.Property<int>("Id").ValueGeneratedOnAdd();
@@ -1270,6 +1306,13 @@ namespace DiscImageChef.Database.Migrations
b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB").WithMany().HasForeignKey("USBId");
});
modelBuilder.Entity("DiscImageChef.Database.Models.UsbProduct",
b =>
{
b.HasOne("DiscImageChef.Database.Models.UsbVendor", "Vendor").WithMany("Products")
.HasForeignKey("VendorId").OnDelete(DeleteBehavior.Cascade);
});
#pragma warning restore 612, 618
}
}

View File

@@ -0,0 +1,28 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace DiscImageChef.Database.Models
{
public class UsbProduct
{
public UsbProduct() { }
public UsbProduct(ushort vendorId, ushort id, string product)
{
ProductId = id;
Product = product;
AddedWhen = ModifiedWhen = DateTime.UtcNow;
}
[Key]
public int Id { get; set; }
public ushort ProductId { get; set; }
public string Product { get; set; }
public DateTime AddedWhen { get; set; }
public DateTime ModifiedWhen { get; set; }
public ushort VendorId { get; set; }
public virtual UsbVendor Vendor { get; set; }
}
}

View File

@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace DiscImageChef.Database.Models
{
public class UsbVendor
{
public UsbVendor() { }
public UsbVendor(ushort id, string vendor)
{
Id = id;
Vendor = vendor;
AddedWhen = ModifiedWhen = DateTime.UtcNow;
}
[Key]
public ushort Id { get; set; }
public string Vendor { get; set; }
public DateTime AddedWhen { get; set; }
public DateTime ModifiedWhen { get; set; }
public virtual ICollection<UsbProduct> Products { get; set; }
}
}