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.cs56
1 files changed, 53 insertions, 3 deletions
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index c224c45d5..3f50278f6 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -224,6 +224,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
_connection.AddColumn(Logger, "TypedBaseItems", "TopParentId", "Text");
_connection.AddColumn(Logger, "TypedBaseItems", "IsItemByName", "BIT");
_connection.AddColumn(Logger, "TypedBaseItems", "SourceType", "Text");
+ _connection.AddColumn(Logger, "TypedBaseItems", "TrailerTypes", "Text");
PrepareStatements();
@@ -355,7 +356,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
"LockedFields",
"Studios",
"Tags",
- "SourceType"
+ "SourceType",
+ "TrailerTypes"
};
private readonly string[] _mediaStreamSaveColumns =
@@ -456,7 +458,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
"UnratedType",
"TopParentId",
"IsItemByName",
- "SourceType"
+ "SourceType",
+ "TrailerTypes"
};
_saveItemCommand = _connection.CreateCommand();
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
@@ -751,7 +754,17 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = isByName;
_saveItemCommand.GetParameter(index++).Value = item.SourceType.ToString();
-
+
+ var trailer = item as Trailer;
+ if (trailer != null)
+ {
+ _saveItemCommand.GetParameter(index++).Value = string.Join("|", trailer.TrailerTypes.Select(i => i.ToString()).ToArray());
+ }
+ else
+ {
+ _saveItemCommand.GetParameter(index++).Value = null;
+ }
+
_saveItemCommand.Transaction = transaction;
_saveItemCommand.ExecuteNonQuery();
@@ -1119,6 +1132,15 @@ namespace MediaBrowser.Server.Implementations.Persistence
item.SourceType = (SourceType)Enum.Parse(typeof(SourceType), reader.GetString(49), true);
}
+ var trailer = item as Trailer;
+ if (trailer != null)
+ {
+ if (!reader.IsDBNull(50))
+ {
+ trailer.TrailerTypes = reader.GetString(50).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => (TrailerType)Enum.Parse(typeof(TrailerType), i, true)).ToList();
+ }
+ }
+
return item;
}
@@ -1902,6 +1924,34 @@ namespace MediaBrowser.Server.Implementations.Persistence
var inClause = string.Join(",", query.ExcludeSourceTypes.Select(i => "'" + i + "'").ToArray());
whereClauses.Add(string.Format("SourceType not in ({0})", inClause));
}
+
+ if (query.TrailerTypes.Length > 0)
+ {
+ var clauses = new List<string>();
+ var index = 0;
+ foreach (var type in query.TrailerTypes)
+ {
+ clauses.Add("TrailerTypes like @TrailerTypes" + index);
+ cmd.Parameters.Add(cmd, "@TrailerTypes" + index, DbType.String).Value = "%" + type + "%";
+ index++;
+ }
+ var clause = "(" + string.Join(" OR ", clauses.ToArray()) + ")";
+ whereClauses.Add(clause);
+ }
+
+ if (query.ExcludeTrailerTypes.Length > 0)
+ {
+ var clauses = new List<string>();
+ var index = 0;
+ foreach (var type in query.ExcludeTrailerTypes)
+ {
+ clauses.Add("TrailerTypes not like @TrailerTypes" + index);
+ cmd.Parameters.Add(cmd, "@TrailerTypes" + index, DbType.String).Value = "%" + type + "%";
+ index++;
+ }
+ var clause = "(" + string.Join(" AND ", clauses.ToArray()) + ")";
+ whereClauses.Add(clause);
+ }
if (query.IsAiring.HasValue)
{