mirror of https://github.com/jellyfin/jellyfin.git
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