aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-07-04 16:11:30 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-07-04 16:11:30 -0400
commit26036837dd0c865a6ac3742717dc3d77ec33cf8e (patch)
tree72ddcaa78298ac96e6a48533db772b3b8bbd4074 /MediaBrowser.Server.Implementations
parent46dc02705aff7a76a622217b4cb795a7dba0bafa (diff)
denormalize series fields
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs36
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs40
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;
}