|
@@ -85,7 +85,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
private IDbCommand _updateInheritedRatingCommand;
|
|
|
private IDbCommand _updateInheritedTagsCommand;
|
|
|
|
|
|
- public const int LatestSchemaVersion = 76;
|
|
|
+ public const int LatestSchemaVersion = 77;
|
|
|
|
|
|
/// <summary>
|
|
|
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.
|
|
@@ -235,6 +235,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
_connection.AddColumn(Logger, "TypedBaseItems", "SlugName", "Text");
|
|
|
_connection.AddColumn(Logger, "TypedBaseItems", "OriginalTitle", "Text");
|
|
|
_connection.AddColumn(Logger, "TypedBaseItems", "PrimaryVersionId", "Text");
|
|
|
+ _connection.AddColumn(Logger, "TypedBaseItems", "DateLastMediaAdded", "DATETIME");
|
|
|
+ _connection.AddColumn(Logger, "TypedBaseItems", "Album", "Text");
|
|
|
+
|
|
|
_connection.AddColumn(Logger, "UserDataKeys", "Priority", "INT");
|
|
|
|
|
|
string[] postQueries =
|
|
@@ -351,7 +354,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
"TrailerTypes",
|
|
|
"DateModifiedDuringLastRefresh",
|
|
|
"OriginalTitle",
|
|
|
- "PrimaryVersionId"
|
|
|
+ "PrimaryVersionId",
|
|
|
+ "DateLastMediaAdded",
|
|
|
+ "Album"
|
|
|
};
|
|
|
|
|
|
private readonly string[] _mediaStreamSaveColumns =
|
|
@@ -463,7 +468,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
"PresentationUniqueKey",
|
|
|
"SlugName",
|
|
|
"OriginalTitle",
|
|
|
- "PrimaryVersionId"
|
|
|
+ "PrimaryVersionId",
|
|
|
+ "DateLastMediaAdded",
|
|
|
+ "Album"
|
|
|
};
|
|
|
_saveItemCommand = _connection.CreateCommand();
|
|
|
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
|
|
@@ -824,6 +831,18 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
_saveItemCommand.GetParameter(index++).Value = null;
|
|
|
}
|
|
|
|
|
|
+ var folder = item as Folder;
|
|
|
+ if (folder != null && folder.DateLastMediaAdded.HasValue)
|
|
|
+ {
|
|
|
+ _saveItemCommand.GetParameter(index++).Value = folder.DateLastMediaAdded.Value;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _saveItemCommand.GetParameter(index++).Value = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ _saveItemCommand.GetParameter(index++).Value = item.Album;
|
|
|
+
|
|
|
_saveItemCommand.Transaction = transaction;
|
|
|
|
|
|
_saveItemCommand.ExecuteNonQuery();
|
|
@@ -1217,6 +1236,17 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ var folder = item as Folder;
|
|
|
+ if (folder != null && !reader.IsDBNull(54))
|
|
|
+ {
|
|
|
+ folder.DateLastMediaAdded = reader.GetDateTime(54).ToUniversalTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!reader.IsDBNull(55))
|
|
|
+ {
|
|
|
+ item.Album = reader.GetString(55);
|
|
|
+ }
|
|
|
+
|
|
|
return item;
|
|
|
}
|
|
|
|
|
@@ -1777,6 +1807,10 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
{
|
|
|
return new Tuple<string, bool>("played", false);
|
|
|
}
|
|
|
+ if (string.Equals(name, ItemSortBy.DateLastContentAdded, StringComparison.OrdinalIgnoreCase))
|
|
|
+ {
|
|
|
+ return new Tuple<string, bool>("DateLastMediaAdded", false);
|
|
|
+ }
|
|
|
|
|
|
return new Tuple<string, bool>(name, false);
|
|
|
}
|
|
@@ -2484,7 +2518,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
if (query.MediaTypes.Length == 1)
|
|
|
{
|
|
|
whereClauses.Add("MediaType=@MediaTypes");
|
|
|
- cmd.Parameters.Add(cmd, "@MediaTypes", DbType.String).Value = query.MediaTypes[0].ToString();
|
|
|
+ cmd.Parameters.Add(cmd, "@MediaTypes", DbType.String).Value = query.MediaTypes[0];
|
|
|
}
|
|
|
if (query.MediaTypes.Length > 1)
|
|
|
{
|
|
@@ -2493,6 +2527,26 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
whereClauses.Add("MediaType in (" + val + ")");
|
|
|
}
|
|
|
|
|
|
+ if (query.AlbumNames.Length > 0)
|
|
|
+ {
|
|
|
+ var clause = "(";
|
|
|
+
|
|
|
+ var index = 0;
|
|
|
+ foreach (var name in query.AlbumNames)
|
|
|
+ {
|
|
|
+ if (index > 0)
|
|
|
+ {
|
|
|
+ clause += " OR ";
|
|
|
+ }
|
|
|
+ clause += "Album=@AlbumName" + index;
|
|
|
+ index++;
|
|
|
+ cmd.Parameters.Add(cmd, "@AlbumName" + index, DbType.String).Value = name;
|
|
|
+ }
|
|
|
+
|
|
|
+ clause += ")";
|
|
|
+ whereClauses.Add(clause);
|
|
|
+ }
|
|
|
+
|
|
|
//var enableItemsByName = query.IncludeItemsByName ?? query.IncludeItemTypes.Length > 0;
|
|
|
var enableItemsByName = query.IncludeItemsByName ?? false;
|
|
|
|