using Google.Protobuf.Reflection; using Microsoft.EntityFrameworkCore; using MySql.EntityFrameworkCore.Extensions; using System; using System.Collections.Generic; using System.Linq; using System.Reflection.Emit; using System.Text; using System.Threading.Tasks; namespace server.Database.Model { public class ModelContext : DbContext { public DbSet Users { get; set; } public DbSet HardwareConfiguration { get; set; } public DbSet Reports { get; set; } public DbSet ReportTypeIllegalHandleOperation { get; set; } public DbSet ReportTypeStartAddress { get; set; } public DbSet ReportTypePageProtection { get; set; } public DbSet ReportTypePatternScan { get; set; } public DbSet ReportTypeNmiCallback { get; set; } public DbSet ReportTypeSystemModuleValidation { get; set; } public DbSet ReportTypeHiddenSystemThread { get; set; } public DbSet ReportTypeAttachProcess { get; set; } public DbSet ReportTypeInvalidProcessAllocation { get; set; } public DbSet ReportTypeProcessModuleIntegrityCheck { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySQL("server=localhost;userid=root;password=root;database=ac_db"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity(entity => { entity.HasKey(e => e.UserId); entity.Property(e => e.UserId) .UseMySQLAutoIncrementColumn(entity.Property(e => e.UserId).Metadata.Name); entity.Property(e => e.Steam64Id) .IsRequired(); entity.Property(e => e.IsBanned) .HasDefaultValue(false); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.HardwareId); entity.Property(e => e.HardwareId) .UseMySQLAutoIncrementColumn(entity.Property(e => e.HardwareId).Metadata.Name); entity.Property(e => e.IsBanned) .HasDefaultValue(false); entity.Property(e => e.MotherboardSerial) .IsRequired(); entity.Property(e => e.DeviceDrive0Serial) .IsRequired(); entity.HasOne(d => d.User) .WithMany(f => f.HardwareConfigurations); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportId); entity.Property(e => e.ReportId) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportId).Metadata.Name); entity.HasOne(d => d.User) .WithMany(e => e.Reports); entity.Property(e => e.ReportCode) .IsRequired(); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportNumber); entity.Property(e => e.ReportNumber) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name); entity.Property(e => e.IsKernelHandle) .IsRequired(); entity.Property(e => e.ProcessId) .IsRequired(); entity.Property(e => e.ThreadId) .IsRequired(); entity.Property(e => e.DesiredAccess) .IsRequired(); entity.Property(e => e.ProcessName) .IsRequired(); entity.HasOne(d => d.Report) .WithMany(f => f.ReportTypeIllegalHandleOperations); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportNumber); entity.Property(e => e.ReportNumber) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name); entity.Property(e => e.ThreadId) .IsRequired(); entity.Property(e => e.ThreadStartAddress) .IsRequired(); entity.HasOne(d => d.Report) .WithMany(f => f.ReportTypeStartAddresses); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportNumber); entity.Property(e => e.ReportNumber) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name); entity.Property(e => e.AllocationProtection) .IsRequired(); entity.Property(e => e.AllocationState) .IsRequired(); entity.Property(e => e.AllocationType) .IsRequired(); entity.HasOne(d => d.Report) .WithMany(f => f.ReportTypePageProtections); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportNumber); entity.Property(e => e.ReportNumber) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name); entity.Property(e => e.SignatureId) .IsRequired(); entity.Property(e => e.Address) .IsRequired(); entity.HasOne(d => d.Report) .WithMany(f => f.ReportTypePatternScans); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportNumber); entity.Property(e => e.ReportNumber) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name); entity.Property(e => e.WereNmisDisabled) .IsRequired(); entity.Property(e => e.KThreadAddress) .IsRequired(); entity.Property(e => e.InvalidRip) .IsRequired(); entity.HasOne(d => d.Report) .WithMany(f => f.ReportTypeNmiCallbacks); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportNumber); entity.Property(e => e.ReportNumber) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name); entity.Property(e => e.ReportType) .IsRequired(); entity.Property(e => e.DriverBaseAddress) .IsRequired(); entity.Property(e => e.DriverSize) .IsRequired(); entity.Property(e => e.ModuleName) .IsRequired(); entity.HasOne(d => d.Report) .WithMany(f => f.ReportTypeSystemModuleValidations); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportNumber); entity.Property(e => e.ReportNumber) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name); entity.Property(e => e.FoundInKThreadList) .IsRequired(); entity.Property(e => e.FoundInPspCidTable) .IsRequired(); entity.Property(e => e.ThreadAddress) .IsRequired(); entity.Property(e => e.ThreadId) .IsRequired(); entity.Property(e => e.ThreadStructure) .IsRequired(); entity.HasOne(d => d.Report) .WithMany(f => f.ReportTypeHiddenSystemThreads); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportNumber); entity.Property(e => e.ReportNumber) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name); entity.Property(e => e.ThreadId) .IsRequired(); entity.Property(e => e.ThreadAddress) .IsRequired(); entity.Property(e => e.ThreadAddress) .IsRequired(); entity.HasOne(d => d.Report) .WithMany(f => f.ReportTypeAttachProcesses); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportNumber); entity.Property(e => e.ReportNumber) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name); entity.Property(e => e.ProcessStructure) .IsRequired(); entity.HasOne(d => d.Report) .WithMany(f => f.ReportTypeInvalidProcessAllocations); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ReportNumber); entity.Property(e => e.ReportNumber) .UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name); entity.Property(e => e.ModuleBaseAddress) .IsRequired(); entity.Property(e => e.ModuleSize) .IsRequired(); entity.Property(e => e.ModuleName) .IsRequired(); entity.HasOne(d => d.Report) .WithMany(f => f.ReportTypeProcessModuleIntegrityChecks); }); } } }