aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs62
1 files changed, 58 insertions, 4 deletions
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index 09739f8a9..180bd3547 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -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;