using System; using Jellyfin.Server.Implementations.ValueConverters; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Jellyfin.Server.Implementations { /// /// Model builder extensions. /// public static class ModelBuilderExtensions { /// /// Specify value converter for the object type. /// /// The model builder. /// The . /// The type to convert. /// The modified . public static ModelBuilder UseValueConverterForType(this ModelBuilder modelBuilder, ValueConverter converter) { var type = typeof(T); foreach (var entityType in modelBuilder.Model.GetEntityTypes()) { foreach (var property in entityType.GetProperties()) { if (property.ClrType == type) { property.SetValueConverter(converter); } } } return modelBuilder; } /// /// Specify the default . /// /// The model builder to extend. /// The to specify. public static void SetDefaultDateTimeKind(this ModelBuilder modelBuilder, DateTimeKind kind) { modelBuilder.UseValueConverterForType(new DateTimeKindValueConverter(kind)); modelBuilder.UseValueConverterForType(new DateTimeKindValueConverter(kind)); } } }