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

58 lines
1.5 KiB
C#
Raw Normal View History

2013-03-25 03:51:32 +00:00
using System;
using System.Data.SQLite;
2013-03-25 03:51:32 +00:00
using Marr.Data;
using NLog;
using NzbDrone.Common.Instrumentation;
2013-03-25 03:51:32 +00:00
namespace NzbDrone.Core.Datastore
{
public interface IDatabase
{
IDataMapper GetDataMapper();
Version Version { get; }
void Vacuum();
2013-03-25 03:51:32 +00:00
}
public class Database : IDatabase
{
private readonly string _connectionString;
2013-03-25 03:51:32 +00:00
private Logger logger = NzbDroneLogger.GetLogger();
public Database(string connectionString)
2013-03-25 03:51:32 +00:00
{
_connectionString = connectionString;
2013-03-25 03:51:32 +00:00
}
public IDataMapper GetDataMapper()
2013-05-11 20:06:57 +00:00
{
return new DataMapper(SQLiteFactory.Instance, _connectionString)
{
SqlMode = SqlModes.Text,
};
}
public Version Version
{
get
{
var version = GetDataMapper().ExecuteScalar("SELECT sqlite_version()").ToString();
return new Version(version);
}
}
public void Vacuum()
{
try
{
logger.Info("Vacuuming database " + _connectionString);
GetDataMapper().ExecuteNonQuery("Vacuum;");
logger.Info("Database Compressed " + _connectionString);
}
catch (Exception e)
{
logger.Error("An Error occurred while vacuuming database. " + _connectionString, e);
}
2013-05-11 20:06:57 +00:00
}
2013-03-25 03:51:32 +00:00
}
}