aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Persistence
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-07-28 08:33:30 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-07-28 08:33:30 -0400
commit3799ad594080f6476119e59e8d4631c4354ee598 (patch)
treec93b0f9ffce3c14ac659292820f2ee8094b66b5e /MediaBrowser.Server.Implementations/Persistence
parentba2574a03b76f98b3688755f2afaad4ee01333d0 (diff)
update task triggers
Diffstat (limited to 'MediaBrowser.Server.Implementations/Persistence')
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs70
1 files changed, 42 insertions, 28 deletions
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index 9ce239eb9..3ec45c4de 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -157,6 +157,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
_connection.AddColumn(_logger, "TypedBaseItems", "PremiereDate", "DATETIME");
_connection.AddColumn(_logger, "TypedBaseItems", "ProductionYear", "INT");
_connection.AddColumn(_logger, "TypedBaseItems", "ParentId", "GUID");
+ _connection.AddColumn(_logger, "TypedBaseItems", "Genres", "Text");
+ _connection.AddColumn(_logger, "TypedBaseItems", "ParentalRatingValue", "INT");
PrepareStatements();
@@ -197,10 +199,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
"ParentIndexNumber",
"PremiereDate",
"ProductionYear",
- "ParentId"
+ "ParentId",
+ "Genres",
+ "ParentalRatingValue"
};
_saveItemCommand = _connection.CreateCommand();
- _saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (@1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21, @22)";
+ _saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (@1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21, @22, @23, @24)";
for (var i = 1; i <= saveColumns.Count; i++)
{
_saveItemCommand.Parameters.Add(_saveItemCommand, "@" + i.ToString(CultureInfo.InvariantCulture));
@@ -343,6 +347,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = item.ParentId;
}
+ _saveItemCommand.GetParameter(index++).Value = string.Join("|", item.Genres.ToArray());
+ _saveItemCommand.GetParameter(index++).Value = item.GetParentalRatingValue();
+
_saveItemCommand.Transaction = transaction;
_saveItemCommand.ExecuteNonQuery();
@@ -937,7 +944,39 @@ namespace MediaBrowser.Server.Implementations.Persistence
whereClauses.Add("Name like @NameContains");
cmd.Parameters.Add(cmd, "@NameContains", DbType.String).Value = "%" + query.NameContains + "%";
}
-
+
+ if (query.Genres.Length > 0)
+ {
+ var genres = new List<string>();
+ var index = 0;
+ foreach (var genre in query.Genres)
+ {
+ genres.Add("Genres like @Genres" + index);
+ cmd.Parameters.Add(cmd, "@Genres" + index, DbType.String).Value = "%" + genre + "%";
+ index++;
+ }
+ var genreCaluse = "(" + string.Join(" OR ", genres.ToArray()) + ")";
+ whereClauses.Add(genreCaluse);
+ }
+
+ if (query.MaxParentalRating.HasValue)
+ {
+ whereClauses.Add("(ParentalRatingValue is NULL OR ParentalRatingValue<=@MaxParentalRating)");
+ cmd.Parameters.Add(cmd, "@MaxParentalRating", DbType.Int32).Value = query.MaxParentalRating.Value;
+ }
+
+ if (query.HasParentalRating.HasValue)
+ {
+ if (query.HasParentalRating.Value)
+ {
+ whereClauses.Add("ParentalRatingValue NOT NULL");
+ }
+ else
+ {
+ whereClauses.Add("ParentalRatingValue IS NULL");
+ }
+ }
+
if (addPaging)
{
if (query.StartIndex.HasValue && query.StartIndex.Value > 0)
@@ -1021,31 +1060,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
return new[] { value };
}
- public IEnumerable<Guid> GetItemIdsOfType(Type type)
- {
- if (type == null)
- {
- throw new ArgumentNullException("type");
- }
-
- CheckDisposed();
-
- using (var cmd = _connection.CreateCommand())
- {
- cmd.CommandText = "select guid from TypedBaseItems where type = @type";
-
- cmd.Parameters.Add(cmd, "@type", DbType.String).Value = type.FullName;
-
- using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
- {
- while (reader.Read())
- {
- yield return reader.GetGuid(0);
- }
- }
- }
- }
-
public async Task DeleteItem(Guid id, CancellationToken cancellationToken)
{
if (id == Guid.Empty)