gnattu 1 month ago committed by GitHub
commit 22a17190b6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -19,7 +19,8 @@ namespace Emby.Server.Implementations
{ FfmpegAnalyzeDurationKey, "200M" }, { FfmpegAnalyzeDurationKey, "200M" },
{ PlaylistsAllowDuplicatesKey, bool.FalseString }, { PlaylistsAllowDuplicatesKey, bool.FalseString },
{ BindToUnixSocketKey, bool.FalseString }, { BindToUnixSocketKey, bool.FalseString },
{ SqliteCacheSizeKey, "20000" } { SqliteCacheSizeKey, "20000" },
{ SqliteJournalModeKey, "WAL" }
}; };
} }
} }

@ -5,22 +5,27 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Jellyfin.Extensions; using Jellyfin.Extensions;
using MediaBrowser.Controller.Extensions;
using Microsoft.Data.Sqlite; using Microsoft.Data.Sqlite;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Data namespace Emby.Server.Implementations.Data
{ {
public abstract class BaseSqliteRepository : IDisposable public abstract class BaseSqliteRepository : IDisposable
{ {
private readonly IConfiguration _configuration;
private bool _disposed = false; private bool _disposed = false;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="BaseSqliteRepository"/> class. /// Initializes a new instance of the <see cref="BaseSqliteRepository"/> class.
/// </summary> /// </summary>
/// <param name="logger">The logger.</param> /// <param name="logger">The logger.</param>
protected BaseSqliteRepository(ILogger<BaseSqliteRepository> logger) /// <param name="configuration">The configuration.</param>
protected BaseSqliteRepository(ILogger<BaseSqliteRepository> logger, IConfiguration configuration)
{ {
Logger = logger; Logger = logger;
_configuration = configuration;
} }
/// <summary> /// <summary>
@ -60,7 +65,7 @@ namespace Emby.Server.Implementations.Data
/// Gets the journal mode. <see href="https://www.sqlite.org/pragma.html#pragma_journal_mode" />. /// Gets the journal mode. <see href="https://www.sqlite.org/pragma.html#pragma_journal_mode" />.
/// </summary> /// </summary>
/// <value>The journal mode.</value> /// <value>The journal mode.</value>
protected virtual string JournalMode => "WAL"; protected virtual string JournalMode => _configuration.GetSqliteJournalMode();
/// <summary> /// <summary>
/// Gets the journal size limit. <see href="https://www.sqlite.org/pragma.html#pragma_journal_size_limit" />. /// Gets the journal size limit. <see href="https://www.sqlite.org/pragma.html#pragma_journal_size_limit" />.

@ -314,7 +314,7 @@ namespace Emby.Server.Implementations.Data
ILocalizationManager localization, ILocalizationManager localization,
IImageProcessor imageProcessor, IImageProcessor imageProcessor,
IConfiguration configuration) IConfiguration configuration)
: base(logger) : base(logger, configuration)
{ {
_config = config; _config = config;
_appHost = appHost; _appHost = appHost;

@ -12,6 +12,7 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Persistence;
using Microsoft.Data.Sqlite; using Microsoft.Data.Sqlite;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Data namespace Emby.Server.Implementations.Data
@ -23,8 +24,9 @@ namespace Emby.Server.Implementations.Data
public SqliteUserDataRepository( public SqliteUserDataRepository(
ILogger<SqliteUserDataRepository> logger, ILogger<SqliteUserDataRepository> logger,
IServerConfigurationManager config, IServerConfigurationManager config,
IUserManager userManager) IUserManager userManager,
: base(logger) IConfiguration configuration)
: base(logger, configuration)
{ {
_userManager = userManager; _userManager = userManager;

@ -64,6 +64,11 @@ namespace MediaBrowser.Controller.Extensions
/// </summary> /// </summary>
public const string SqliteCacheSizeKey = "sqlite:cacheSize"; public const string SqliteCacheSizeKey = "sqlite:cacheSize";
/// <summary>
/// SQLite journal mode.
/// </summary>
public const string SqliteJournalModeKey = "sqlite:journalMode";
/// <summary> /// <summary>
/// Gets a value indicating whether the application should host static web content from the <see cref="IConfiguration"/>. /// Gets a value indicating whether the application should host static web content from the <see cref="IConfiguration"/>.
/// </summary> /// </summary>
@ -128,5 +133,16 @@ namespace MediaBrowser.Controller.Extensions
/// <returns>The sqlite cache size.</returns> /// <returns>The sqlite cache size.</returns>
public static int? GetSqliteCacheSize(this IConfiguration configuration) public static int? GetSqliteCacheSize(this IConfiguration configuration)
=> configuration.GetValue<int?>(SqliteCacheSizeKey); => configuration.GetValue<int?>(SqliteCacheSizeKey);
/// <summary>
/// Gets SQLite journal mode from the <see cref="IConfiguration" />.
/// </summary>
/// <param name="configuration">The configuration to read the setting from.</param>
/// <returns>SQLite journal mode.</returns>
public static string GetSqliteJournalMode(this IConfiguration configuration)
{
var journalMode = configuration.GetValue<string?>(SqliteJournalModeKey);
return journalMode is not null ? journalMode.ToUpperInvariant() : "WAL";
}
} }
} }

Loading…
Cancel
Save