diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-07-04 16:11:30 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-07-04 16:11:30 -0400 |
| commit | 26036837dd0c865a6ac3742717dc3d77ec33cf8e (patch) | |
| tree | 72ddcaa78298ac96e6a48533db772b3b8bbd4074 /MediaBrowser.Server.Implementations | |
| parent | 46dc02705aff7a76a622217b4cb795a7dba0bafa (diff) | |
denormalize series fields
Diffstat (limited to 'MediaBrowser.Server.Implementations')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Dto/DtoService.cs | 36 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs | 40 |
2 files changed, 49 insertions, 27 deletions
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 8805d567a..67ae24f3e 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -1076,15 +1076,11 @@ namespace MediaBrowser.Server.Implementations.Dto dto.PreferredMetadataCountryCode = item.PreferredMetadataCountryCode; dto.PreferredMetadataLanguage = item.PreferredMetadataLanguage; - var hasCriticRating = item as IHasCriticRating; - if (hasCriticRating != null) - { - dto.CriticRating = hasCriticRating.CriticRating; + dto.CriticRating = item.CriticRating; - if (fields.Contains(ItemFields.CriticRatingSummary)) - { - dto.CriticRatingSummary = hasCriticRating.CriticRatingSummary; - } + if (fields.Contains(ItemFields.CriticRatingSummary)) + { + dto.CriticRatingSummary = item.CriticRatingSummary; } var hasTrailers = item as IHasTrailers; @@ -1127,11 +1123,7 @@ namespace MediaBrowser.Server.Implementations.Dto if (fields.Contains(ItemFields.ShortOverview)) { - var hasShortOverview = item as IHasShortOverview; - if (hasShortOverview != null) - { - dto.ShortOverview = hasShortOverview.ShortOverview; - } + dto.ShortOverview = item.ShortOverview; } // If there are no backdrops, indicate what parent has them in case the Ui wants to allow inheritance @@ -1426,14 +1418,7 @@ namespace MediaBrowser.Server.Implementations.Dto dto.SeasonId = seasonId.Value.ToString("N"); } - var episodeSeason = episode.Season; - if (episodeSeason != null) - { - if (fields.Contains(ItemFields.SeasonName)) - { - dto.SeasonName = episodeSeason.Name; - } - } + dto.SeasonName = episode.SeasonName; var episodeSeries = episode.Series; @@ -1483,14 +1468,19 @@ namespace MediaBrowser.Server.Implementations.Dto var season = item as Season; if (season != null) { + dto.SeriesName = season.SeriesName; + series = season.Series; if (series != null) { dto.SeriesId = GetDtoId(series); - dto.SeriesName = series.Name; dto.AirTime = series.AirTime; - dto.SeriesStudio = series.Studios.FirstOrDefault(); + + if (fields.Contains(ItemFields.SeriesStudio)) + { + dto.SeriesStudio = series.Studios.FirstOrDefault(); + } if (options.GetImageLimit(ImageType.Primary) > 0) { diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 5b492c240..041647439 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -95,7 +95,7 @@ namespace MediaBrowser.Server.Implementations.Persistence private IDbCommand _updateInheritedRatingCommand; private IDbCommand _updateInheritedTagsCommand; - public const int LatestSchemaVersion = 97; + public const int LatestSchemaVersion = 99; /// <summary> /// Initializes a new instance of the <see cref="SqliteItemRepository"/> class. @@ -271,6 +271,7 @@ namespace MediaBrowser.Server.Implementations.Persistence _connection.AddColumn(Logger, "TypedBaseItems", "IsVirtualItem", "BIT"); _connection.AddColumn(Logger, "TypedBaseItems", "SeriesName", "Text"); _connection.AddColumn(Logger, "TypedBaseItems", "UserDataKey", "Text"); + _connection.AddColumn(Logger, "TypedBaseItems", "SeasonName", "Text"); _connection.AddColumn(Logger, "UserDataKeys", "Priority", "INT"); _connection.AddColumn(Logger, "ItemValues", "CleanValue", "Text"); @@ -402,7 +403,9 @@ namespace MediaBrowser.Server.Implementations.Persistence "Album", "CriticRating", "CriticRatingSummary", - "IsVirtualItem" + "IsVirtualItem", + "SeriesName", + "SeasonName" }; private readonly string[] _mediaStreamSaveColumns = @@ -522,7 +525,8 @@ namespace MediaBrowser.Server.Implementations.Persistence "Album", "IsVirtualItem", "SeriesName", - "UserDataKey" + "UserDataKey", + "SeasonName" }; _saveItemCommand = _connection.CreateCommand(); _saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values ("; @@ -944,7 +948,7 @@ namespace MediaBrowser.Server.Implementations.Persistence var hasSeries = item as IHasSeries; if (hasSeries != null) { - _saveItemCommand.GetParameter(index++).Value = hasSeries.SeriesName; + _saveItemCommand.GetParameter(index++).Value = hasSeries.FindSeriesName(); } else { @@ -953,6 +957,16 @@ namespace MediaBrowser.Server.Implementations.Persistence _saveItemCommand.GetParameter(index++).Value = item.GetUserDataKeys().FirstOrDefault(); + var episode = item as Episode; + if (episode != null) + { + _saveItemCommand.GetParameter(index++).Value = episode.FindSeasonName(); + } + else + { + _saveItemCommand.GetParameter(index++).Value = null; + } + _saveItemCommand.Transaction = transaction; _saveItemCommand.ExecuteNonQuery(); @@ -1375,6 +1389,24 @@ namespace MediaBrowser.Server.Implementations.Persistence item.IsVirtualItem = reader.GetBoolean(58); } + var hasSeries = item as IHasSeries; + if (hasSeries != null) + { + if (!reader.IsDBNull(59)) + { + hasSeries.SeriesName = reader.GetString(59); + } + } + + var episode = item as Episode; + if (episode != null) + { + if (!reader.IsDBNull(60)) + { + episode.SeasonName = reader.GetString(60); + } + } + return item; } |
