aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server.Implementations
diff options
context:
space:
mode:
Diffstat (limited to 'Jellyfin.Server.Implementations')
-rw-r--r--Jellyfin.Server.Implementations/Extensions/ServiceCollectionExtensions.cs19
-rw-r--r--Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj1
-rw-r--r--Jellyfin.Server.Implementations/ModelBuilderExtensions.cs48
-rw-r--r--Jellyfin.Server.Implementations/ValueConverters/DateTimeKindValueConverter.cs21
4 files changed, 12 insertions, 77 deletions
diff --git a/Jellyfin.Server.Implementations/Extensions/ServiceCollectionExtensions.cs b/Jellyfin.Server.Implementations/Extensions/ServiceCollectionExtensions.cs
index e48f4ce10..1b0dbbe10 100644
--- a/Jellyfin.Server.Implementations/Extensions/ServiceCollectionExtensions.cs
+++ b/Jellyfin.Server.Implementations/Extensions/ServiceCollectionExtensions.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
+using Jellyfin.Database.Providers.SqLite;
using Jellyfin.Server.Implementations.DatabaseConfiguration;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Configuration;
@@ -17,14 +18,15 @@ namespace Jellyfin.Server.Implementations.Extensions;
/// </summary>
public static class ServiceCollectionExtensions
{
+ private static IEnumerable<Type> DatabaseProviderTypes()
+ {
+ yield return typeof(SqliteDatabaseProvider);
+ }
+
private static IDictionary<string, JellyfinDbProviderFactory> GetSupportedDbProviders()
{
var items = new Dictionary<string, JellyfinDbProviderFactory>();
- foreach (var providerType in AppDomain
- .CurrentDomain
- .GetAssemblies()
- .SelectMany(f => f.GetTypes())
- .Where(e => e.IsClass && typeof(IJellyfinDatabaseProvider).IsAssignableFrom(e)))
+ foreach (var providerType in DatabaseProviderTypes())
{
var keyAttribute = providerType.GetCustomAttribute<JellyfinDatabaseProviderKeyAttribute>();
if (keyAttribute is null || string.IsNullOrWhiteSpace(keyAttribute.DatabaseProviderKey))
@@ -51,15 +53,16 @@ public static class ServiceCollectionExtensions
var providers = GetSupportedDbProviders();
JellyfinDbProviderFactory? providerFactory = null;
- if (efCoreConfiguration is null)
+ if (efCoreConfiguration?.DatabaseType is null)
{
// when nothing is setup via new Database configuration, fallback to SqLite with default settings.
efCoreConfiguration = new DatabaseConfigurationOptions()
{
- DatabaseType = "SqLite",
+ DatabaseType = "Jellyfin-SqLite",
};
}
- else if (!providers.TryGetValue(efCoreConfiguration.DatabaseType, out providerFactory!))
+
+ if (!providers.TryGetValue(efCoreConfiguration.DatabaseType, out providerFactory!))
{
throw new InvalidOperationException($"Jellyfin cannot find the database provider of type '{efCoreConfiguration.DatabaseType}'. Supported types are {string.Join(", ", providers.Keys)}");
}
diff --git a/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj b/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj
index cf3c79276..b566b3489 100644
--- a/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj
+++ b/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj
@@ -36,6 +36,7 @@
<ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj" />
<ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" />
<ProjectReference Include="..\Jellyfin.Database\Jellyfin.Database.Implementations\Jellyfin.Database.Implementations.csproj" />
+ <ProjectReference Include="..\Jellyfin.Database\Jellyfin.Database.Providers.SqLite\Jellyfin.Database.Providers.SqLite.csproj" />
</ItemGroup>
</Project>
diff --git a/Jellyfin.Server.Implementations/ModelBuilderExtensions.cs b/Jellyfin.Server.Implementations/ModelBuilderExtensions.cs
deleted file mode 100644
index 79ae1661a..000000000
--- a/Jellyfin.Server.Implementations/ModelBuilderExtensions.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-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));
- }
- }
-}
diff --git a/Jellyfin.Server.Implementations/ValueConverters/DateTimeKindValueConverter.cs b/Jellyfin.Server.Implementations/ValueConverters/DateTimeKindValueConverter.cs
deleted file mode 100644
index 2e585c92d..000000000
--- a/Jellyfin.Server.Implementations/ValueConverters/DateTimeKindValueConverter.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-namespace Jellyfin.Server.Implementations.ValueConverters
-{
- /// <summary>
- /// ValueConverter to specify kind.
- /// </summary>
- public class DateTimeKindValueConverter : ValueConverter<DateTime, DateTime>
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="DateTimeKindValueConverter"/> class.
- /// </summary>
- /// <param name="kind">The kind to specify.</param>
- /// <param name="mappingHints">The mapping hints.</param>
- public DateTimeKindValueConverter(DateTimeKind kind, ConverterMappingHints? mappingHints = null)
- : base(v => v.ToUniversalTime(), v => DateTime.SpecifyKind(v, kind), mappingHints)
- {
- }
- }
-}