Lidarr/src/NzbDrone.Core/Datastore/ConnectionStringFactory.cs

52 lines
1.7 KiB
C#
Raw Normal View History

2013-07-05 03:56:27 +00:00
using System;
using System.Data.SQLite;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions;
2013-07-05 03:56:27 +00:00
namespace NzbDrone.Core.Datastore
{
public interface IConnectionStringFactory
{
string MainDbConnectionString { get; }
string LogDbConnectionString { get; }
string GetDatabasePath(string connectionString);
2013-07-05 03:56:27 +00:00
}
public class ConnectionStringFactory : IConnectionStringFactory
{
public ConnectionStringFactory(IAppFolderInfo appFolderInfo)
2013-07-05 03:56:27 +00:00
{
2017-09-27 02:06:05 +00:00
MainDbConnectionString = GetConnectionString(appFolderInfo.GetDatabase());
LogDbConnectionString = GetConnectionString(appFolderInfo.GetLogDatabase());
2013-07-05 03:56:27 +00:00
}
public string MainDbConnectionString { get; private set; }
public string LogDbConnectionString { get; private set; }
public string GetDatabasePath(string connectionString)
{
var connectionBuilder = new SQLiteConnectionStringBuilder(connectionString);
return connectionBuilder.DataSource;
}
2013-07-05 03:56:27 +00:00
private static string GetConnectionString(string dbPath)
{
var connectionBuilder = new SQLiteConnectionStringBuilder();
connectionBuilder.DataSource = dbPath;
connectionBuilder.CacheSize = (int)-10000;
2013-07-05 03:56:27 +00:00
connectionBuilder.DateTimeKind = DateTimeKind.Utc;
connectionBuilder.JournalMode = OsInfo.IsOsx ? SQLiteJournalModeEnum.Truncate : SQLiteJournalModeEnum.Wal;
2014-10-16 02:10:25 +00:00
connectionBuilder.Pooling = true;
connectionBuilder.Version = 3;
if (OsInfo.IsOsx)
{
connectionBuilder.Add("Full FSync", true);
}
2013-07-05 03:56:27 +00:00
return connectionBuilder.ConnectionString;
}
}
}