|
|
|
@ -58,31 +58,37 @@ namespace Emby.Server.Implementations.Data
|
|
|
|
|
cancellationToken.ThrowIfCancellationRequested();
|
|
|
|
|
|
|
|
|
|
using (var connection = CreateConnection())
|
|
|
|
|
{
|
|
|
|
|
using (WriteLock.Write())
|
|
|
|
|
{
|
|
|
|
|
connection.RunInTransaction(db =>
|
|
|
|
|
{
|
|
|
|
|
var paramList = new List<object>();
|
|
|
|
|
var commandText = "replace into FileOrganizerResults (ResultId, OriginalPath, TargetPath, FileLength, OrganizationDate, Status, OrganizationType, StatusMessage, ExtractedName, ExtractedYear, ExtractedSeasonNumber, ExtractedEpisodeNumber, ExtractedEndingEpisodeNumber, DuplicatePaths) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
|
|
|
|
|
|
|
|
|
paramList.Add(result.Id.ToGuidParamValue());
|
|
|
|
|
paramList.Add(result.OriginalPath);
|
|
|
|
|
paramList.Add(result.TargetPath);
|
|
|
|
|
paramList.Add(result.FileSize);
|
|
|
|
|
paramList.Add(result.Date.ToDateTimeParamValue());
|
|
|
|
|
paramList.Add(result.Status.ToString());
|
|
|
|
|
paramList.Add(result.Type.ToString());
|
|
|
|
|
paramList.Add(result.StatusMessage);
|
|
|
|
|
paramList.Add(result.ExtractedName);
|
|
|
|
|
paramList.Add(result.ExtractedSeasonNumber);
|
|
|
|
|
paramList.Add(result.ExtractedEpisodeNumber);
|
|
|
|
|
paramList.Add(result.ExtractedEndingEpisodeNumber);
|
|
|
|
|
paramList.Add(string.Join("|", result.DuplicatePaths.ToArray()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
db.Execute(commandText, paramList.ToArray());
|
|
|
|
|
var commandText = "replace into FileOrganizerResults (ResultId, OriginalPath, TargetPath, FileLength, OrganizationDate, Status, OrganizationType, StatusMessage, ExtractedName, ExtractedYear, ExtractedSeasonNumber, ExtractedEpisodeNumber, ExtractedEndingEpisodeNumber, DuplicatePaths) values (@ResultId, @OriginalPath, @TargetPath, @FileLength, @OrganizationDate, @Status, @OrganizationType, @StatusMessage, @ExtractedName, @ExtractedYear, @ExtractedSeasonNumber, @ExtractedEpisodeNumber, @ExtractedEndingEpisodeNumber, @DuplicatePaths)";
|
|
|
|
|
|
|
|
|
|
using (var statement = db.PrepareStatement(commandText))
|
|
|
|
|
{
|
|
|
|
|
statement.TryBind("@ResultId", result.Id.ToGuidParamValue());
|
|
|
|
|
statement.TryBind("@OriginalPath", result.OriginalPath);
|
|
|
|
|
|
|
|
|
|
statement.TryBind("@TargetPath", result.TargetPath);
|
|
|
|
|
statement.TryBind("@FileLength", result.FileSize);
|
|
|
|
|
statement.TryBind("@OrganizationDate", result.Date.ToDateTimeParamValue());
|
|
|
|
|
statement.TryBind("@Status", result.Status.ToString());
|
|
|
|
|
statement.TryBind("@OrganizationType", result.Type.ToString());
|
|
|
|
|
statement.TryBind("@StatusMessage", result.StatusMessage);
|
|
|
|
|
statement.TryBind("@ExtractedName", result.ExtractedName);
|
|
|
|
|
statement.TryBind("@ExtractedYear", result.ExtractedYear);
|
|
|
|
|
statement.TryBind("@ExtractedSeasonNumber", result.ExtractedSeasonNumber);
|
|
|
|
|
statement.TryBind("@ExtractedEpisodeNumber", result.ExtractedEpisodeNumber);
|
|
|
|
|
statement.TryBind("@ExtractedEndingEpisodeNumber", result.ExtractedEndingEpisodeNumber);
|
|
|
|
|
statement.TryBind("@DuplicatePaths", string.Join("|", result.DuplicatePaths.ToArray()));
|
|
|
|
|
|
|
|
|
|
statement.MoveNext();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task Delete(string id)
|
|
|
|
|
{
|
|
|
|
@ -92,22 +98,26 @@ namespace Emby.Server.Implementations.Data
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using (var connection = CreateConnection())
|
|
|
|
|
{
|
|
|
|
|
using (WriteLock.Write())
|
|
|
|
|
{
|
|
|
|
|
connection.RunInTransaction(db =>
|
|
|
|
|
{
|
|
|
|
|
var paramList = new List<object>();
|
|
|
|
|
var commandText = "delete from FileOrganizerResults where ResultId = ?";
|
|
|
|
|
|
|
|
|
|
paramList.Add(id.ToGuidParamValue());
|
|
|
|
|
|
|
|
|
|
db.Execute(commandText, paramList.ToArray());
|
|
|
|
|
using (var statement = db.PrepareStatement("delete from FileOrganizerResults where ResultId = @ResultId"))
|
|
|
|
|
{
|
|
|
|
|
statement.TryBind("@ResultId", id.ToGuidParamValue());
|
|
|
|
|
statement.MoveNext();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task DeleteAll()
|
|
|
|
|
{
|
|
|
|
|
using (var connection = CreateConnection())
|
|
|
|
|
{
|
|
|
|
|
using (WriteLock.Write())
|
|
|
|
|
{
|
|
|
|
|
connection.RunInTransaction(db =>
|
|
|
|
|
{
|
|
|
|
@ -117,6 +127,7 @@ namespace Emby.Server.Implementations.Data
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public QueryResult<FileOrganizationResult> GetResults(FileOrganizationResultQuery query)
|
|
|
|
|
{
|
|
|
|
@ -126,6 +137,8 @@ namespace Emby.Server.Implementations.Data
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using (var connection = CreateConnection(true))
|
|
|
|
|
{
|
|
|
|
|
using (WriteLock.Read())
|
|
|
|
|
{
|
|
|
|
|
var commandText = "SELECT ResultId, OriginalPath, TargetPath, FileLength, OrganizationDate, Status, OrganizationType, StatusMessage, ExtractedName, ExtractedYear, ExtractedSeasonNumber, ExtractedEpisodeNumber, ExtractedEndingEpisodeNumber, DuplicatePaths from FileOrganizerResults";
|
|
|
|
|
|
|
|
|
@ -143,12 +156,20 @@ namespace Emby.Server.Implementations.Data
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var list = new List<FileOrganizationResult>();
|
|
|
|
|
var count = connection.Query("select count (ResultId) from FileOrganizerResults").SelectScalarInt().First();
|
|
|
|
|
|
|
|
|
|
foreach (var row in connection.Query(commandText))
|
|
|
|
|
using (var statement = connection.PrepareStatement(commandText))
|
|
|
|
|
{
|
|
|
|
|
foreach (var row in statement.ExecuteQuery())
|
|
|
|
|
{
|
|
|
|
|
list.Add(GetResult(row));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int count;
|
|
|
|
|
using (var statement = connection.PrepareStatement("select count (ResultId) from FileOrganizerResults"))
|
|
|
|
|
{
|
|
|
|
|
count = statement.ExecuteQuery().SelectScalarInt().First();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new QueryResult<FileOrganizationResult>()
|
|
|
|
|
{
|
|
|
|
@ -157,6 +178,7 @@ namespace Emby.Server.Implementations.Data
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public FileOrganizationResult GetResult(string id)
|
|
|
|
|
{
|
|
|
|
@ -167,18 +189,23 @@ namespace Emby.Server.Implementations.Data
|
|
|
|
|
|
|
|
|
|
using (var connection = CreateConnection(true))
|
|
|
|
|
{
|
|
|
|
|
var paramList = new List<object>();
|
|
|
|
|
|
|
|
|
|
paramList.Add(id.ToGuidParamValue());
|
|
|
|
|
using (WriteLock.Read())
|
|
|
|
|
{
|
|
|
|
|
using (var statement = connection.PrepareStatement("select ResultId, OriginalPath, TargetPath, FileLength, OrganizationDate, Status, OrganizationType, StatusMessage, ExtractedName, ExtractedYear, ExtractedSeasonNumber, ExtractedEpisodeNumber, ExtractedEndingEpisodeNumber, DuplicatePaths from FileOrganizerResults where ResultId=@ResultId"))
|
|
|
|
|
{
|
|
|
|
|
statement.TryBind("@ResultId", id.ToGuidParamValue());
|
|
|
|
|
statement.MoveNext();
|
|
|
|
|
|
|
|
|
|
foreach (var row in connection.Query("select ResultId, OriginalPath, TargetPath, FileLength, OrganizationDate, Status, OrganizationType, StatusMessage, ExtractedName, ExtractedYear, ExtractedSeasonNumber, ExtractedEpisodeNumber, ExtractedEndingEpisodeNumber, DuplicatePaths from FileOrganizerResults where ResultId=?", paramList.ToArray()))
|
|
|
|
|
foreach (var row in statement.ExecuteQuery())
|
|
|
|
|
{
|
|
|
|
|
return GetResult(row);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public FileOrganizationResult GetResult(IReadOnlyList<IResultSetValue> reader)
|
|
|
|
|
{
|
|
|
|
|