fix scanning of new libraries

This commit is contained in:
Luke Pulverenti
2016-11-23 01:54:09 -05:00
parent c418f94c98
commit 8bc4d49c89
7 changed files with 75 additions and 49 deletions

View File

@@ -638,25 +638,30 @@ namespace Emby.Server.Implementations.Data
CheckDisposed();
var tuples = new List<Tuple<BaseItem, List<Guid>>>();
foreach (var item in items)
{
var ancestorIds = item.SupportsAncestors ?
item.GetAncestorIds().Distinct().ToList() :
null;
tuples.Add(new Tuple<BaseItem, List<Guid>>(item, ancestorIds));
}
using (var connection = CreateConnection())
{
using (WriteLock.Write())
{
connection.RunInTransaction(db =>
{
SaveItemsInTranscation(db, items);
SaveItemsInTranscation(db, tuples);
});
}
}
}
private void SaveItemsInTranscation(IDatabaseConnection db, List<BaseItem> items)
private void SaveItemsInTranscation(IDatabaseConnection db, List<Tuple<BaseItem, List<Guid>>> tuples)
{
if (items == null)
{
throw new ArgumentNullException("items");
}
var requiresReset = false;
using (var saveItemStatement = db.PrepareStatement(GetSaveItemCommandText()))
@@ -665,19 +670,21 @@ namespace Emby.Server.Implementations.Data
{
using (var updateAncestorsStatement = db.PrepareStatement("insert into AncestorIds (ItemId, AncestorId, AncestorIdText) values (@ItemId, @AncestorId, @AncestorIdText)"))
{
foreach (var item in items)
foreach (var tuple in tuples)
{
if (requiresReset)
{
saveItemStatement.Reset();
}
var item = tuple.Item1;
SaveItem(item, saveItemStatement);
//Logger.Debug(_saveItemCommand.CommandText);
if (item.SupportsAncestors)
{
UpdateAncestors(item.Id, item.GetAncestorIds().Distinct().ToList(), db, deleteAncestorsStatement, updateAncestorsStatement);
UpdateAncestors(item.Id, tuple.Item2, db, deleteAncestorsStatement, updateAncestorsStatement);
}
UpdateItemValues(item.Id, GetItemValuesToSave(item), db);
@@ -802,7 +809,7 @@ namespace Emby.Server.Implementations.Data
saveItemStatement.TryBind("@IsHD", item.IsHD);
saveItemStatement.TryBind("@ExternalEtag", item.ExternalEtag);
if (item.DateLastRefreshed == default(DateTime))
if (item.DateLastRefreshed != default(DateTime))
{
saveItemStatement.TryBind("@DateLastRefreshed", item.DateLastRefreshed);
}
@@ -811,9 +818,9 @@ namespace Emby.Server.Implementations.Data
saveItemStatement.TryBindNull("@DateLastRefreshed");
}
if (item.DateLastSaved == default(DateTime))
if (item.DateLastSaved != default(DateTime))
{
saveItemStatement.TryBind("@DateLastSaved", item.DateLastRefreshed);
saveItemStatement.TryBind("@DateLastSaved", item.DateLastSaved);
}
else
{
@@ -948,7 +955,7 @@ namespace Emby.Server.Implementations.Data
var hasSeries = item as IHasSeries;
if (hasSeries != null)
{
saveItemStatement.TryBind("@SeriesName", hasSeries.FindSeriesName());
saveItemStatement.TryBind("@SeriesName", hasSeries.SeriesName);
}
else
{
@@ -960,8 +967,8 @@ namespace Emby.Server.Implementations.Data
var episode = item as Episode;
if (episode != null)
{
saveItemStatement.TryBind("@SeasonName", episode.FindSeasonName());
saveItemStatement.TryBind("@SeasonId", episode.FindSeasonId());
saveItemStatement.TryBind("@SeasonName", episode.SeasonName);
saveItemStatement.TryBind("@SeasonId", episode.SeasonId);
}
else
{
@@ -971,8 +978,8 @@ namespace Emby.Server.Implementations.Data
if (hasSeries != null)
{
saveItemStatement.TryBind("@SeriesId", hasSeries.FindSeriesId());
saveItemStatement.TryBind("@SeriesSortName", hasSeries.FindSeriesSortName());
saveItemStatement.TryBind("@SeriesId", hasSeries.SeriesId);
saveItemStatement.TryBind("@SeriesSortName", hasSeries.SeriesSortName);
}
else
{