84 lines
2.8 KiB
C#
84 lines
2.8 KiB
C#
using System;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Metadata;
|
|
using Microsoft.EntityFrameworkCore.Metadata.Internal;
|
|
using PartSource.Data.Converters;
|
|
using PartSource.Data.Models;
|
|
|
|
namespace PartSource.Data.Contexts
|
|
{
|
|
public class PartSourceContext : DbContext
|
|
{
|
|
public PartSourceContext(DbContextOptions<PartSourceContext> contextOptions)
|
|
: base(contextOptions) { }
|
|
|
|
public DbSet<ApiClient> ApiClients { get; set; }
|
|
|
|
public DbSet<ProductBackup> ProductBackups { get; set; }
|
|
|
|
public DbSet<Manufacturer> Manufacturers { get; set; }
|
|
|
|
public DbSet<ImportData> ImportData { get; set; }
|
|
|
|
public DbSet<ImportMetric> ImportMetrics { get; set; }
|
|
|
|
public DbSet<PartData> PartData { get; set; }
|
|
|
|
public DbSet<PartImage> PartImages { get; set; }
|
|
|
|
public DbSet<PartPrice> PartPrices { get; set; }
|
|
|
|
public DbSet<Part> Parts { get; set; }
|
|
|
|
public DbSet<ShopifyChangelog> ShopifyChangelogs { get; set; }
|
|
|
|
public DbSet<Vehicle> Vehicles { get; set; }
|
|
|
|
public DbSet<PartsAvailability> PartAvailabilities { get; set; }
|
|
|
|
public DbQuery<BaseVehicle> BaseVehicles { get; set; }
|
|
|
|
public DbQuery<Engine> Engines { get; set; }
|
|
|
|
public DbQuery<Submodel> Submodels { get; set; }
|
|
|
|
public DbQuery<VehicleMake> VehicleMakes { get; set; }
|
|
|
|
public DbQuery<VehicleModel> VehicleModels { get; set; }
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
modelBuilder.Query<BaseVehicle>().ToView(nameof(BaseVehicle));
|
|
modelBuilder.Query<Engine>().ToView(nameof(Engine));
|
|
modelBuilder.Query<Submodel>().ToView(nameof(Submodel));
|
|
modelBuilder.Query<VehicleMake>().ToView(nameof(VehicleMake));
|
|
modelBuilder.Query<VehicleModel>().ToView(nameof(VehicleModel));
|
|
|
|
modelBuilder.Entity<PartsAvailability>().HasKey(p => new { p.Store, p.SKU });
|
|
|
|
modelBuilder.Entity<ShopifyChangelog>()
|
|
.Property(s => s.ResourceType)
|
|
.HasConversion(new TypeToStringConverter());
|
|
|
|
modelBuilder.Entity<ShopifyChangelog>()
|
|
.Property(s => s.Data)
|
|
.HasConversion(new ObjectToJsonConverter());
|
|
|
|
foreach (IMutableEntityType entityType in modelBuilder.Model.GetEntityTypes())
|
|
{
|
|
entityType.Relational().TableName = entityType.ClrType.Name;
|
|
}
|
|
}
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
if (!optionsBuilder.IsConfigured)
|
|
{
|
|
optionsBuilder.UseSqlServer("Server=localhost;Database=ps-whi-stage;Trusted_Connection=True;");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|