diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-03-19 16:23:33 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2016-03-19 16:23:33 -0400 |
| commit | 3ab212d070384c0a0000e255307aa58d15cbd0ae (patch) | |
| tree | 6ca899cd7be8685771b56b0074c5b3022faa789a /MediaBrowser.Server.Implementations/Persistence | |
| parent | fd0d50ad978801164728f7f6bd067430aa090c5f (diff) | |
| parent | db1bf5b1b55c8012e9ca3393fd59b9469ee5aeaf (diff) | |
Merge pull request #1563 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Server.Implementations/Persistence')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs | 89 |
1 files changed, 84 insertions, 5 deletions
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 56daff78a..3f50278f6 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -223,6 +223,8 @@ namespace MediaBrowser.Server.Implementations.Persistence _connection.AddColumn(Logger, "TypedBaseItems", "UnratedType", "Text"); _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(); @@ -353,7 +355,9 @@ namespace MediaBrowser.Server.Implementations.Persistence "DateLastSaved", "LockedFields", "Studios", - "Tags" + "Tags", + "SourceType", + "TrailerTypes" }; private readonly string[] _mediaStreamSaveColumns = @@ -453,7 +457,9 @@ namespace MediaBrowser.Server.Implementations.Persistence "IsFolder", "UnratedType", "TopParentId", - "IsItemByName" + "IsItemByName", + "SourceType", + "TrailerTypes" }; _saveItemCommand = _connection.CreateCommand(); _saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values ("; @@ -747,6 +753,18 @@ 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(); @@ -1109,6 +1127,20 @@ namespace MediaBrowser.Server.Implementations.Persistence item.Tags = reader.GetString(48).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); } + if (!reader.IsDBNull(49)) + { + 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; } @@ -1871,6 +1903,56 @@ namespace MediaBrowser.Server.Implementations.Persistence cmd.Parameters.Add(cmd, "@MaxStartDate", DbType.Date).Value = query.MaxStartDate.Value; } + if (query.SourceTypes.Length == 1) + { + whereClauses.Add("SourceType=@SourceType"); + cmd.Parameters.Add(cmd, "@SourceType", DbType.String).Value = query.SourceTypes[0]; + } + else if (query.SourceTypes.Length > 1) + { + var inClause = string.Join(",", query.SourceTypes.Select(i => "'" + i + "'").ToArray()); + whereClauses.Add(string.Format("SourceType in ({0})", inClause)); + } + + if (query.ExcludeSourceTypes.Length == 1) + { + whereClauses.Add("SourceType<>@SourceType"); + cmd.Parameters.Add(cmd, "@SourceType", DbType.String).Value = query.SourceTypes[0]; + } + else if (query.ExcludeSourceTypes.Length > 1) + { + 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) { if (query.IsAiring.Value) @@ -2046,7 +2128,6 @@ namespace MediaBrowser.Server.Implementations.Persistence typeof(Trailer), typeof(BoxSet), typeof(Episode), - typeof(ChannelVideoItem), typeof(Season), typeof(Series), typeof(Book), @@ -2152,8 +2233,6 @@ namespace MediaBrowser.Server.Implementations.Persistence dict[t.Name] = new[] { t.FullName }; } - dict["ChannelItem"] = new[] { typeof(ChannelVideoItem).FullName, typeof(ChannelAudioItem).FullName, typeof(ChannelFolderItem).FullName }; - dict["LiveTvItem"] = new[] { typeof(LiveTvAudioRecording).FullName, typeof(LiveTvVideoRecording).FullName, typeof(LiveTvChannel).FullName, typeof(LiveTvProgram).FullName }; dict["Recording"] = new[] { typeof(LiveTvAudioRecording).FullName, typeof(LiveTvVideoRecording).FullName }; dict["Program"] = new[] { typeof(LiveTvProgram).FullName }; dict["TvChannel"] = new[] { typeof(LiveTvChannel).FullName }; |
