|
|
|
@ -1,52 +0,0 @@
|
|
|
|
|
using System;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using MediaBrowser.Model.Logging;
|
|
|
|
|
using Emby.Server.Core.Data;
|
|
|
|
|
using Microsoft.Data.Sqlite;
|
|
|
|
|
|
|
|
|
|
namespace Emby.Server.Data
|
|
|
|
|
{
|
|
|
|
|
public class DbConnector : IDbConnector
|
|
|
|
|
{
|
|
|
|
|
private readonly ILogger _logger;
|
|
|
|
|
|
|
|
|
|
public DbConnector(ILogger logger)
|
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<IDbConnection> Connect(string dbPath, bool isReadOnly, bool enablePooling = false, int? cacheSize = null)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(dbPath))
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException("dbPath");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//SQLiteConnection.SetMemoryStatus(false);
|
|
|
|
|
|
|
|
|
|
var connectionstr = new SqliteConnectionStringBuilder
|
|
|
|
|
{
|
|
|
|
|
//PageSize = 4096,
|
|
|
|
|
//CacheSize = cacheSize ?? 2000,
|
|
|
|
|
//SyncMode = SynchronizationModes.Normal,
|
|
|
|
|
DataSource = dbPath,
|
|
|
|
|
//JournalMode = SQLiteJournalModeEnum.Wal,
|
|
|
|
|
|
|
|
|
|
// This is causing crashing under linux
|
|
|
|
|
//Pooling = enablePooling && Environment.OSVersion.Platform == PlatformID.Win32NT,
|
|
|
|
|
//ReadOnly = isReadOnly,
|
|
|
|
|
Cache = enablePooling ? SqliteCacheMode.Default : SqliteCacheMode.Private,
|
|
|
|
|
Mode = isReadOnly ? SqliteOpenMode.ReadOnly : SqliteOpenMode.ReadWriteCreate
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var connectionString = connectionstr.ConnectionString;
|
|
|
|
|
|
|
|
|
|
var connection = new SqliteConnection(connectionString);
|
|
|
|
|
|
|
|
|
|
await connection.OpenAsync().ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
return connection;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|