resolve error saving sync jobs
This commit is contained in:
parent
a1ca5e3ecc
commit
d350dc0edb
|
@ -346,6 +346,18 @@ namespace Emby.Server.Implementations.Data
|
|||
}
|
||||
}
|
||||
|
||||
public static void TryBind(this IStatement statement, string name, double? value)
|
||||
{
|
||||
if (value.HasValue)
|
||||
{
|
||||
TryBind(statement, name, value.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
TryBindNull(statement, name);
|
||||
}
|
||||
}
|
||||
|
||||
public static void TryBind(this IStatement statement, string name, int? value)
|
||||
{
|
||||
if (value.HasValue)
|
||||
|
|
|
@ -221,48 +221,77 @@ namespace Emby.Server.Implementations.Sync
|
|||
using (var connection = CreateConnection())
|
||||
{
|
||||
string commandText;
|
||||
var paramList = new List<object>();
|
||||
|
||||
if (insert)
|
||||
{
|
||||
commandText = "insert into SyncJobs (Id, TargetId, Name, Profile, Quality, Bitrate, Status, Progress, UserId, ItemIds, Category, ParentId, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
commandText = "insert into SyncJobs (Id, TargetId, Name, Profile, Quality, Bitrate, Status, Progress, UserId, ItemIds, Category, ParentId, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount) values (@Id, @TargetId, @Name, @Profile, @Quality, @Bitrate, @Status, @Progress, @UserId, @ItemIds, @Category, @ParentId, @UnwatchedOnly, @ItemLimit, @SyncNewContent, @DateCreated, @DateLastModified, @ItemCount)";
|
||||
}
|
||||
else
|
||||
{
|
||||
commandText = "update SyncJobs set TargetId=?,Name=?,Profile=?,Quality=?,Bitrate=?,Status=?,Progress=?,UserId=?,ItemIds=?,Category=?,ParentId=?,UnwatchedOnly=?,ItemLimit=?,SyncNewContent=?,DateCreated=?,DateLastModified=?,ItemCount=? where Id=?";
|
||||
}
|
||||
|
||||
paramList.Add(job.TargetId);
|
||||
paramList.Add(job.Name);
|
||||
paramList.Add(job.Profile);
|
||||
paramList.Add(job.Quality);
|
||||
paramList.Add(job.Bitrate);
|
||||
paramList.Add(job.Status.ToString());
|
||||
paramList.Add(job.Progress);
|
||||
paramList.Add(job.UserId);
|
||||
|
||||
paramList.Add(string.Join(",", job.RequestedItemIds.ToArray()));
|
||||
paramList.Add(job.Category);
|
||||
paramList.Add(job.ParentId);
|
||||
paramList.Add(job.UnwatchedOnly);
|
||||
paramList.Add(job.ItemLimit);
|
||||
paramList.Add(job.SyncNewContent);
|
||||
paramList.Add(job.DateCreated.ToDateTimeParamValue());
|
||||
paramList.Add(job.DateLastModified.ToDateTimeParamValue());
|
||||
paramList.Add(job.ItemCount);
|
||||
|
||||
if (insert)
|
||||
{
|
||||
paramList.Insert(0, job.Id.ToGuidParamValue());
|
||||
}
|
||||
else
|
||||
{
|
||||
paramList.Add(job.Id.ToGuidParamValue());
|
||||
commandText = "update SyncJobs set TargetId=@TargetId,Name=@Name,Profile=@Profile,Quality=@Quality,Bitrate=@Bitrate,Status=@Status,Progress=@Progress,UserId=@UserId,ItemIds=@ItemIds,Category=@Category,ParentId=@ParentId,UnwatchedOnly=@UnwatchedOnly,ItemLimit=@ItemLimit,SyncNewContent=@SyncNewContent,DateCreated=@DateCreated,DateLastModified=@DateLastModified,ItemCount=@ItemCount where Id=@Id";
|
||||
}
|
||||
|
||||
connection.RunInTransaction(conn =>
|
||||
{
|
||||
conn.Execute(commandText, paramList.ToArray());
|
||||
using (var statement = PrepareStatementSafe(connection, commandText))
|
||||
{
|
||||
statement.TryBind("@TargetId", job.TargetId);
|
||||
statement.TryBind("@Name", job.Name);
|
||||
statement.TryBind("@Profile", job.Profile);
|
||||
statement.TryBind("@Quality", job.Quality);
|
||||
statement.TryBind("@Bitrate", job.Bitrate);
|
||||
statement.TryBind("@Status", job.Status.ToString());
|
||||
statement.TryBind("@Progress", job.Progress);
|
||||
statement.TryBind("@UserId", job.UserId);
|
||||
|
||||
if (job.RequestedItemIds.Count > 0)
|
||||
{
|
||||
statement.TryBind("@ItemIds", string.Join(",", job.RequestedItemIds.ToArray()));
|
||||
}
|
||||
else
|
||||
{
|
||||
statement.TryBindNull("@ItemIds");
|
||||
}
|
||||
|
||||
if (job.Category.HasValue)
|
||||
{
|
||||
statement.TryBind("@Category", job.Category.Value.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
statement.TryBindNull("@Category");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(job.ParentId))
|
||||
{
|
||||
statement.TryBind("@ParentId", job.ParentId);
|
||||
}
|
||||
else
|
||||
{
|
||||
statement.TryBindNull("@ParentId");
|
||||
}
|
||||
|
||||
statement.TryBind("@UnwatchedOnly", job.UnwatchedOnly);
|
||||
|
||||
if (job.ItemLimit.HasValue)
|
||||
{
|
||||
statement.TryBind("@ItemLimit", job.ItemLimit);
|
||||
}
|
||||
else
|
||||
{
|
||||
statement.TryBindNull("@ItemLimit");
|
||||
}
|
||||
|
||||
statement.TryBind("@SyncNewContent", job.SyncNewContent);
|
||||
|
||||
statement.TryBind("@DateCreated", job.DateCreated.ToDateTimeParamValue());
|
||||
statement.TryBind("@DateLastModified", job.DateLastModified.ToDateTimeParamValue());
|
||||
|
||||
statement.TryBind("@ItemCount", job.ItemCount);
|
||||
statement.TryBind("@Id", job.Id.ToGuidParamValue());
|
||||
|
||||
statement.MoveNext();
|
||||
}
|
||||
}, TransactionMode);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,11 +55,15 @@ namespace MediaBrowser.Providers.TV
|
|||
return result;
|
||||
}
|
||||
|
||||
if (OmdbProvider.IsValidSeries(info.SeriesProviderIds) && info.IndexNumber.HasValue && info.ParentIndexNumber.HasValue)
|
||||
string seriesImdbId;
|
||||
if (info.SeriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out seriesImdbId) && !string.IsNullOrEmpty(seriesImdbId))
|
||||
{
|
||||
var seriesImdbId = info.GetProviderId(MetadataProviders.Imdb);
|
||||
|
||||
result.HasMetadata = await new OmdbProvider(_jsonSerializer, _httpClient, _fileSystem, _configurationManager).FetchEpisodeData(result, info.IndexNumber.Value, info.ParentIndexNumber.Value, seriesImdbId, info.MetadataLanguage, info.MetadataCountryCode, cancellationToken).ConfigureAwait(false);
|
||||
if (info.IndexNumber.HasValue &&
|
||||
info.ParentIndexNumber.HasValue)
|
||||
{
|
||||
result.HasMetadata = await new OmdbProvider(_jsonSerializer, _httpClient, _fileSystem, _configurationManager)
|
||||
.FetchEpisodeData(result, info.IndexNumber.Value, info.ParentIndexNumber.Value, seriesImdbId, info.MetadataLanguage, info.MetadataCountryCode, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
Loading…
Reference in New Issue
Block a user