diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index ec688bd9f4..e9a29cb7a9 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -103,7 +103,8 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the name.
///
/// The name.
- public string Name
+ [IgnoreDataMember]
+ public virtual string Name
{
get
{
@@ -122,12 +123,14 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the id.
///
/// The id.
+ [IgnoreDataMember]
public Guid Id { get; set; }
///
/// Gets or sets a value indicating whether this instance is hd.
///
/// true if this instance is hd; otherwise, false.
+ [IgnoreDataMember]
public bool? IsHD { get; set; }
///
@@ -149,6 +152,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the path.
///
/// The path.
+ [IgnoreDataMember]
public virtual string Path { get; set; }
[IgnoreDataMember]
@@ -325,12 +329,14 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the date created.
///
/// The date created.
+ [IgnoreDataMember]
public DateTime DateCreated { get; set; }
///
/// Gets or sets the date modified.
///
/// The date modified.
+ [IgnoreDataMember]
public DateTime DateModified { get; set; }
public DateTime DateLastSaved { get; set; }
@@ -407,6 +413,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the name of the forced sort.
///
/// The name of the forced sort.
+ [IgnoreDataMember]
public string ForcedSortName
{
get { return _forcedSortName; }
@@ -493,6 +500,7 @@ namespace MediaBrowser.Controller.Entities
return sortable;
}
+ [IgnoreDataMember]
public Guid ParentId { get; set; }
///
@@ -559,6 +567,7 @@ namespace MediaBrowser.Controller.Entities
/// When the item first debuted. For movies this could be premiere date, episodes would be first aired
///
/// The premiere date.
+ [IgnoreDataMember]
public DateTime? PremiereDate { get; set; }
///
@@ -572,31 +581,35 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the display type of the media.
///
/// The display type of the media.
+ [IgnoreDataMember]
public string DisplayMediaType { get; set; }
///
/// Gets or sets the official rating.
///
/// The official rating.
+ [IgnoreDataMember]
public string OfficialRating { get; set; }
///
/// Gets or sets the official rating description.
///
/// The official rating description.
+ [IgnoreDataMember]
public string OfficialRatingDescription { get; set; }
///
/// Gets or sets the custom rating.
///
/// The custom rating.
- //[IgnoreDataMember]
+ [IgnoreDataMember]
public string CustomRating { get; set; }
///
/// Gets or sets the overview.
///
/// The overview.
+ [IgnoreDataMember]
public string Overview { get; set; }
///
@@ -609,37 +622,42 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the genres.
///
/// The genres.
+ [IgnoreDataMember]
public List Genres { get; set; }
///
/// Gets or sets the home page URL.
///
/// The home page URL.
+ [IgnoreDataMember]
public string HomePageUrl { get; set; }
///
/// Gets or sets the community rating.
///
/// The community rating.
- //[IgnoreDataMember]
+ [IgnoreDataMember]
public float? CommunityRating { get; set; }
///
/// Gets or sets the community rating vote count.
///
/// The community rating vote count.
+ [IgnoreDataMember]
public int? VoteCount { get; set; }
///
/// Gets or sets the run time ticks.
///
/// The run time ticks.
+ [IgnoreDataMember]
public long? RunTimeTicks { get; set; }
///
/// Gets or sets the production year.
///
/// The production year.
+ [IgnoreDataMember]
public int? ProductionYear { get; set; }
///
@@ -647,13 +665,14 @@ namespace MediaBrowser.Controller.Entities
/// This could be episode number, album track number, etc.
///
/// The index number.
- //[IgnoreDataMember]
+ [IgnoreDataMember]
public int? IndexNumber { get; set; }
///
/// For an episode this could be the season number, or for a song this could be the disc number.
///
/// The parent index number.
+ [IgnoreDataMember]
public int? ParentIndexNumber { get; set; }
[IgnoreDataMember]
@@ -1307,15 +1326,6 @@ namespace MediaBrowser.Controller.Entities
return null;
}
- ///
- /// Adds a person to the item
- ///
- /// The person.
- ///
- public void AddPerson(PersonInfo person)
- {
- }
-
///
/// Adds a studio to the item
///
diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs
index a9e314ede1..3900f08050 100644
--- a/MediaBrowser.Controller/Entities/User.cs
+++ b/MediaBrowser.Controller/Entities/User.cs
@@ -58,6 +58,26 @@ namespace MediaBrowser.Controller.Entities
}
}
+ private string _name;
+ ///
+ /// Gets or sets the name.
+ ///
+ /// The name.
+ public override string Name
+ {
+ get
+ {
+ return _name;
+ }
+ set
+ {
+ _name = value;
+
+ // lazy load this again
+ SortName = null;
+ }
+ }
+
///
/// Returns the folder containing the item.
/// If the item is a folder, it returns the folder itself
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index 64ba3f1104..a5e7817612 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -76,7 +76,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
private IDbCommand _deleteStreamsCommand;
private IDbCommand _saveStreamCommand;
- private const int LatestSchemaVersion = 13;
+ private const int LatestSchemaVersion = 16;
///
/// Initializes a new instance of the class.
@@ -198,6 +198,10 @@ namespace MediaBrowser.Server.Implementations.Persistence
_connection.AddColumn(_logger, "TypedBaseItems", "ExternalEtag", "Text");
_connection.AddColumn(_logger, "TypedBaseItems", "DateLastRefreshed", "DATETIME");
+ _connection.AddColumn(_logger, "TypedBaseItems", "DateLastSaved", "DATETIME");
+ _connection.AddColumn(_logger, "TypedBaseItems", "IsInMixedFolder", "BIT");
+ _connection.AddColumn(_logger, "TypedBaseItems", "LockedFields", "Text");
+
PrepareStatements();
new MediaStreamColumns(_connection, _logger).AddColumns();
@@ -289,7 +293,24 @@ namespace MediaBrowser.Server.Implementations.Persistence
"PreferredMetadataCountryCode",
"IsHD",
"ExternalEtag",
- "DateLastRefreshed"
+ "DateLastRefreshed",
+ "Name",
+ "Path",
+ "PremiereDate",
+ "Overview",
+ "ParentIndexNumber",
+ "ProductionYear",
+ "OfficialRating",
+ "OfficialRatingDescription",
+ "HomePageUrl",
+ "DisplayMediaType",
+ "ForcedSortName",
+ "RunTimeTicks",
+ "VoteCount",
+ "DateCreated",
+ "DateModified",
+ "guid",
+ "Genres"
};
private readonly string[] _mediaStreamSaveColumns =
@@ -377,7 +398,10 @@ namespace MediaBrowser.Server.Implementations.Persistence
"PreferredMetadataCountryCode",
"IsHD",
"ExternalEtag",
- "DateLastRefreshed"
+ "DateLastRefreshed",
+ "DateLastSaved",
+ "IsInMixedFolder",
+ "LockedFields"
};
_saveItemCommand = _connection.CreateCommand();
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
@@ -606,6 +630,10 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = item.DateLastRefreshed;
}
+ _saveItemCommand.GetParameter(index++).Value = item.DateLastSaved;
+ _saveItemCommand.GetParameter(index++).Value = item.IsInMixedFolder;
+ _saveItemCommand.GetParameter(index++).Value = string.Join("|", item.LockedFields.Select(i => i.ToString()).ToArray());
+
_saveItemCommand.Transaction = transaction;
_saveItemCommand.ExecuteNonQuery();
@@ -827,6 +855,88 @@ namespace MediaBrowser.Server.Implementations.Persistence
item.DateLastRefreshed = reader.GetDateTime(23).ToUniversalTime();
}
+ if (!reader.IsDBNull(24))
+ {
+ item.Name = reader.GetString(24);
+ }
+
+ if (!reader.IsDBNull(25))
+ {
+ item.Path = reader.GetString(25);
+ }
+
+ if (!reader.IsDBNull(26))
+ {
+ item.PremiereDate = reader.GetDateTime(26).ToUniversalTime();
+ }
+
+ if (!reader.IsDBNull(27))
+ {
+ item.Overview = reader.GetString(27);
+ }
+
+ if (!reader.IsDBNull(28))
+ {
+ item.ParentIndexNumber = reader.GetInt32(28);
+ }
+
+ if (!reader.IsDBNull(29))
+ {
+ item.ProductionYear = reader.GetInt32(29);
+ }
+
+ if (!reader.IsDBNull(30))
+ {
+ item.OfficialRating = reader.GetString(30);
+ }
+
+ if (!reader.IsDBNull(31))
+ {
+ item.OfficialRating = reader.GetString(31);
+ }
+
+ if (!reader.IsDBNull(32))
+ {
+ item.HomePageUrl = reader.GetString(32);
+ }
+
+ if (!reader.IsDBNull(33))
+ {
+ item.DisplayMediaType = reader.GetString(33);
+ }
+
+ if (!reader.IsDBNull(34))
+ {
+ item.ForcedSortName = reader.GetString(34);
+ }
+
+ if (!reader.IsDBNull(35))
+ {
+ item.RunTimeTicks = reader.GetInt64(35);
+ }
+
+ if (!reader.IsDBNull(36))
+ {
+ item.VoteCount = reader.GetInt32(36);
+ }
+
+ if (!reader.IsDBNull(37))
+ {
+ item.DateCreated = reader.GetDateTime(37).ToUniversalTime();
+ }
+
+ if (!reader.IsDBNull(38))
+ {
+ item.DateModified = reader.GetDateTime(38).ToUniversalTime();
+ }
+
+ item.Id = reader.GetGuid(39);
+
+ if (!reader.IsDBNull(40))
+ {
+ item.Genres = reader.GetString(40).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).ToList();
+ }
+
return item;
}
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs
index ad784ae5d6..9bd7e47f39 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs
@@ -144,15 +144,18 @@ namespace MediaBrowser.Server.Implementations.Persistence
{
using (var cmd = _connection.CreateCommand())
{
- cmd.CommandText = "select data from users";
+ cmd.CommandText = "select guid,data from users";
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
{
while (reader.Read())
{
- using (var stream = reader.GetMemoryStream(0))
+ var id = reader.GetGuid(0);
+
+ using (var stream = reader.GetMemoryStream(1))
{
var user = _jsonSerializer.DeserializeFromStream(stream);
+ user.Id = id;
yield return user;
}
}