Radarr/src/NzbDrone.Core/Messaging/Commands/CommandRepository.cs

64 lines
1.7 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
2019-12-18 21:56:41 +00:00
using Dapper;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Messaging.Events;
namespace NzbDrone.Core.Messaging.Commands
{
public interface ICommandRepository : IBasicRepository<CommandModel>
{
void Trim();
void OrphanStarted();
List<CommandModel> Queued();
2015-05-02 05:03:20 +00:00
void Start(CommandModel command);
void End(CommandModel command);
}
public class CommandRepository : BasicRepository<CommandModel>, ICommandRepository
{
public CommandRepository(IMainDatabase database, IEventAggregator eventAggregator)
: base(database, eventAggregator)
{
}
public void Trim()
{
var date = DateTime.UtcNow.AddDays(-1);
Delete(c => c.EndedAt < date);
}
public void OrphanStarted()
{
2019-12-18 21:56:41 +00:00
var sql = @"UPDATE Commands SET Status = @Orphaned, EndedAt = @Ended WHERE Status = @Started";
var args = new
{
Orphaned = (int)CommandStatus.Orphaned,
Started = (int)CommandStatus.Started,
Ended = DateTime.UtcNow
};
2019-12-18 21:56:41 +00:00
using (var conn = _database.OpenConnection())
{
conn.Execute(sql, args);
}
}
public List<CommandModel> Queued()
{
2019-12-18 21:56:41 +00:00
return Query(x => x.Status == CommandStatus.Queued);
}
2015-05-02 05:03:20 +00:00
public void Start(CommandModel command)
{
SetFields(command, c => c.StartedAt, c => c.Status);
}
public void End(CommandModel command)
{
2015-06-02 07:18:34 +00:00
SetFields(command, c => c.EndedAt, c => c.Status, c => c.Duration, c => c.Exception);
2015-05-02 05:03:20 +00:00
}
}
}