http-api/src/Persistence/InMemory/InMemoryDbContext.cs
cuqmbr 5fc9308ada
All checks were successful
/ tests (push) Successful in 31s
/ build (push) Successful in 7m9s
/ build-docker (push) Successful in 5m34s
add inheritance and enums configuration to in memory db context
2025-05-20 10:33:35 +03:00

55 lines
1.6 KiB
C#

using cuqmbr.TravelGuide.Domain.Enums;
using cuqmbr.TravelGuide.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using cuqmbr.TravelGuide.Persistence.TypeConverters;
namespace cuqmbr.TravelGuide.Persistence.InMemory;
public class InMemoryDbContext : DbContext
{
public InMemoryDbContext(DbContextOptions<InMemoryDbContext> options)
: base(options) { }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder
.Entity<Vehicle>()
.ToTable("vehicles")
.UseTphMappingStrategy()
.HasDiscriminator(v => v.VehicleType)
.HasValue<Bus>(VehicleType.Bus)
.HasValue<Aircraft>(VehicleType.Aircraft)
.HasValue<Train>(VehicleType.Train);
}
protected override void ConfigureConventions(
ModelConfigurationBuilder builder)
{
builder
.Properties<VehicleType>()
.HaveColumnType("varchar(16)")
.HaveConversion<VehicleTypeConverter>();
builder
.Properties<Currency>()
.HaveColumnType("varchar(8)")
.HaveConversion<CurrencyConverter>();
builder
.Properties<DocumentType>()
.HaveColumnType("varchar(64)")
.HaveConversion<DocumentTypeConverter>();
builder
.Properties<Sex>()
.HaveColumnType("varchar(32)")
.HaveConversion<SexConverter>();
builder
.Properties<DateTimeOffset>()
.HaveConversion<DateTimeOffsetConverter>();
}
}