gnattu 2 weeks 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" },
{ PlaylistsAllowDuplicatesKey, bool.FalseString },
{ BindToUnixSocketKey, bool.FalseString },
{ SqliteCacheSizeKey, "20000" }
{ SqliteCacheSizeKey, "20000" },
{ SqliteJournalModeKey, "WAL" }
};
}
}

@ -5,22 +5,27 @@
using System;
using System.Collections.Generic;
using Jellyfin.Extensions;
using MediaBrowser.Controller.Extensions;
using Microsoft.Data.Sqlite;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Data
{
public abstract class BaseSqliteRepository : IDisposable
{
private readonly IConfiguration _configuration;
private bool _disposed = false;
/// <summary>
/// Initializes a new instance of the <see cref="BaseSqliteRepository"/> class.
/// </summary>
/// <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;
_configuration = configuration;
}
/// <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" />.
/// </summary>
/// <value>The journal mode.</value>
protected virtual string JournalMode => "WAL";
protected virtual string JournalMode => _configuration.GetSqliteJournalMode();
/// <summary>
/// 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,
IImageProcessor imageProcessor,
IConfiguration configuration)
: base(logger)
: base(logger, configuration)
{
_config = config;
_appHost = appHost;

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

@ -64,6 +64,11 @@ namespace MediaBrowser.Controller.Extensions
/// </summary>
public const string SqliteCacheSizeKey = "sqlite:cacheSize";
/// <summary>
/// SQLite journal mode.
/// </summary>
public const string SqliteJournalModeKey = "sqlite:journalMode";
/// <summary>
/// Gets a value indicating whether the application should host static web content from the <see cref="IConfiguration"/>.
/// </summary>
@ -128,5 +133,16 @@ namespace MediaBrowser.Controller.Extensions
/// <returns>The sqlite cache size.</returns>
public static int? GetSqliteCacheSize(this IConfiguration configuration)
=> 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