| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | using System;using Jellyfin.Server.Implementations.ValueConverters;using Microsoft.EntityFrameworkCore;using Microsoft.EntityFrameworkCore.Storage.ValueConversion;namespace Jellyfin.Server.Implementations{    /// <summary>    /// Model builder extensions.    /// </summary>    public static class ModelBuilderExtensions    {        /// <summary>        /// Specify value converter for the object type.        /// </summary>        /// <param name="modelBuilder">The model builder.</param>        /// <param name="converter">The <see cref="ValueConverter{TModel,TProvider}"/>.</param>        /// <typeparam name="T">The type to convert.</typeparam>        /// <returns>The modified <see cref="ModelBuilder"/>.</returns>        public static ModelBuilder UseValueConverterForType<T>(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;        }        /// <summary>        /// Specify the default <see cref="DateTimeKind"/>.        /// </summary>        /// <param name="modelBuilder">The model builder to extend.</param>        /// <param name="kind">The <see cref="DateTimeKind"/> to specify.</param>        public static void SetDefaultDateTimeKind(this ModelBuilder modelBuilder, DateTimeKind kind)        {            modelBuilder.UseValueConverterForType<DateTime>(new DateTimeKindValueConverter(kind));            modelBuilder.UseValueConverterForType<DateTime?>(new DateTimeKindValueConverter(kind));        }    }}
 |