You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Radarr/src/NzbDrone.Core/Datastore/Database.cs

58 lines
1.5 KiB

using System;
using System.Data.SQLite;
using Marr.Data;
using NLog;
using NzbDrone.Common.Instrumentation;
namespace NzbDrone.Core.Datastore
{
public interface IDatabase
{
IDataMapper GetDataMapper();
Version Version { get; }
void Vacuum();
}
public class Database : IDatabase
{
private readonly string _connectionString;
private Logger logger = NzbDroneLogger.GetLogger();
public Database(string connectionString)
{
_connectionString = connectionString;
}
public IDataMapper GetDataMapper()
11 years ago
{
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);
}
11 years ago
}
}
}