diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs | 56 |
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) { |
