http-api/src/Persistence/PostgreSql/PostgreSqlDbContext.cs

44 lines
1.3 KiB
C#

using System.Reflection;
using cuqmbr.TravelGuide.Domain.Enums;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;
using cuqmbr.TravelGuide.Persistence.PostgreSql.TypeConverters;
namespace cuqmbr.TravelGuide.Persistence.PostgreSql;
public class PostgreSqlDbContext : DbContext
{
public PostgreSqlDbContext(
DbContextOptions<PostgreSqlDbContext> options,
IOptions<ConfigurationOptions> configurationOptions)
: base(options)
{
DefaultSchema = configurationOptions.Value.PartitionName;
}
public static string DefaultSchema { get; private set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.HasDefaultSchema(DefaultSchema);
builder
.ApplyConfigurationsFromAssembly(
Assembly.GetExecutingAssembly(),
t => t.Namespace ==
"cuqmbr.TravelGuide.Persistence.PostgreSql.Configurations");
}
protected override void ConfigureConventions(
ModelConfigurationBuilder builder)
{
builder
.Properties<VehicleType>()
.HaveColumnType("vehicle_type")
.HaveConversion<VehicleTypeConverter>();
}
}