2015-01-16 00:30:09 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2020-08-18 20:11:44 +00:00
|
|
|
|
using Dapper;
|
2015-01-16 00:30:09 +00:00
|
|
|
|
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);
|
2015-01-16 00:30:09 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class CommandRepository : BasicRepository<CommandModel>, ICommandRepository
|
|
|
|
|
{
|
2015-05-03 19:46:21 +00:00
|
|
|
|
public CommandRepository(IMainDatabase database, IEventAggregator eventAggregator)
|
2015-01-16 00:30:09 +00:00
|
|
|
|
: base(database, eventAggregator)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Trim()
|
|
|
|
|
{
|
|
|
|
|
var date = DateTime.UtcNow.AddDays(-1);
|
|
|
|
|
|
|
|
|
|
Delete(c => c.EndedAt < date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void OrphanStarted()
|
|
|
|
|
{
|
2020-08-18 20:11:44 +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
|
|
|
|
|
};
|
2015-01-16 00:30:09 +00:00
|
|
|
|
|
2020-08-18 20:11:44 +00:00
|
|
|
|
using (var conn = _database.OpenConnection())
|
|
|
|
|
{
|
|
|
|
|
conn.Execute(sql, args);
|
|
|
|
|
}
|
2015-01-16 00:30:09 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<CommandModel> Queued()
|
|
|
|
|
{
|
2020-08-18 20:11:44 +00:00
|
|
|
|
return Query(c => c.Status == CommandStatus.Queued);
|
2015-01-16 00:30:09 +00:00
|
|
|
|
}
|
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
|
|
|
|
}
|
2015-01-16 00:30:09 +00:00
|
|
|
|
}
|
|
|
|
|
}
|