Files
jellyfin/src/Emby.Server/Data/DbConnector.cs
2016-11-12 23:33:51 -05:00

52 lines
1.6 KiB
C#

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;
}
}
}