diff options
| author | JPVenson <github@jpb.email> | 2025-01-27 16:35:46 +0000 |
|---|---|---|
| committer | JPVenson <github@jpb.email> | 2025-01-27 16:35:46 +0000 |
| commit | 9d1c4ea169a15d580923aefb0ec43c2b6be5b3a6 (patch) | |
| tree | 609e013c4c4fd5ca6f151cca2950520bfb50df83 /Jellyfin.Database/Jellyfin.Database.Providers.SqLite/ModelBuilderExtensions.cs | |
| parent | aa811eb1e3c78bdf8f4a751311c1bb6d639e851e (diff) | |
Fixed DbContext usage on Provider
Diffstat (limited to 'Jellyfin.Database/Jellyfin.Database.Providers.SqLite/ModelBuilderExtensions.cs')
| -rw-r--r-- | Jellyfin.Database/Jellyfin.Database.Providers.SqLite/ModelBuilderExtensions.cs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Jellyfin.Database/Jellyfin.Database.Providers.SqLite/ModelBuilderExtensions.cs b/Jellyfin.Database/Jellyfin.Database.Providers.SqLite/ModelBuilderExtensions.cs new file mode 100644 index 000000000..79ae1661a --- /dev/null +++ b/Jellyfin.Database/Jellyfin.Database.Providers.SqLite/ModelBuilderExtensions.cs @@ -0,0 +1,48 @@ +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)); + } + } +} |
