mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-22 10:04:44 +01:00
finish removing ChannelFolderItem
This commit is contained in:
@@ -26,6 +26,7 @@ using System.Net;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using CommonIO;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
|
||||
namespace MediaBrowser.Server.Implementations.Channels
|
||||
{
|
||||
@@ -1243,7 +1244,18 @@ namespace MediaBrowser.Server.Implementations.Channels
|
||||
|
||||
if (info.Type == ChannelItemType.Folder)
|
||||
{
|
||||
item = GetItemById<ChannelFolderItem>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew);
|
||||
if (info.FolderType == ChannelFolderType.MusicAlbum)
|
||||
{
|
||||
item = GetItemById<MusicAlbum>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew);
|
||||
}
|
||||
else if (info.FolderType == ChannelFolderType.PhotoAlbum)
|
||||
{
|
||||
item = GetItemById<PhotoAlbum>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew);
|
||||
}
|
||||
else
|
||||
{
|
||||
item = GetItemById<Folder>(info.Id, channelProvider.Name, channelProvider.DataVersion, out isNew);
|
||||
}
|
||||
}
|
||||
else if (info.MediaType == ChannelMediaType.Audio)
|
||||
{
|
||||
@@ -1314,6 +1326,12 @@ namespace MediaBrowser.Server.Implementations.Channels
|
||||
item.SetImagePath(ImageType.Primary, info.ImageUrl);
|
||||
}
|
||||
|
||||
if (item.SourceType != SourceType.Channel)
|
||||
{
|
||||
item.SourceType = SourceType.Channel;
|
||||
forceUpdate = true;
|
||||
}
|
||||
|
||||
if (isNew)
|
||||
{
|
||||
await _libraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
@@ -1534,9 +1534,13 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||
|
||||
dto.ChannelId = item.ChannelId;
|
||||
|
||||
if (item.SourceType == SourceType.Channel)
|
||||
if (item.SourceType == SourceType.Channel && !string.IsNullOrWhiteSpace(item.ChannelId))
|
||||
{
|
||||
dto.ChannelName = _channelManagerFactory().GetChannel(item.ChannelId).Name;
|
||||
var channel = _libraryManager.GetItemById(item.ChannelId);
|
||||
if (channel != null)
|
||||
{
|
||||
dto.ChannelName = channel.Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
list.Add(folder);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (collectionFolder != null && UserView.IsEligibleForGrouping(folder) && user.IsFolderGrouped(folder.Id))
|
||||
{
|
||||
groupedFolders.Add(collectionFolder);
|
||||
@@ -272,7 +272,11 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
.ToArray();
|
||||
}
|
||||
|
||||
var excludeItemTypes = includeItemTypes.Length == 0 ? new[] { "ChannelItem", "LiveTvItem", typeof(Person).Name, typeof(Studio).Name, typeof(Year).Name, typeof(GameGenre).Name, typeof(MusicGenre).Name, typeof(Genre).Name } : new string[] { };
|
||||
var excludeItemTypes = includeItemTypes.Length == 0 ? new[]
|
||||
{
|
||||
typeof(Person).Name, typeof(Studio).Name, typeof(Year).Name, typeof(GameGenre).Name, typeof(MusicGenre).Name, typeof(Genre).Name
|
||||
|
||||
} : new string[] { };
|
||||
|
||||
return _libraryManager.GetItems(new InternalItemsQuery(user)
|
||||
{
|
||||
@@ -282,7 +286,8 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
IsFolder = includeItemTypes.Length == 0 ? false : (bool?)null,
|
||||
ExcludeItemTypes = excludeItemTypes,
|
||||
ExcludeLocationTypes = new[] { LocationType.Virtual },
|
||||
Limit = limit * 20
|
||||
Limit = limit * 20,
|
||||
SourceTypes = new[] { SourceType.Library }
|
||||
|
||||
}, parentIds);
|
||||
}
|
||||
|
||||
@@ -223,6 +223,7 @@ 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");
|
||||
|
||||
PrepareStatements();
|
||||
|
||||
@@ -353,7 +354,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||
"DateLastSaved",
|
||||
"LockedFields",
|
||||
"Studios",
|
||||
"Tags"
|
||||
"Tags",
|
||||
"SourceType"
|
||||
};
|
||||
|
||||
private readonly string[] _mediaStreamSaveColumns =
|
||||
@@ -453,7 +455,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||
"IsFolder",
|
||||
"UnratedType",
|
||||
"TopParentId",
|
||||
"IsItemByName"
|
||||
"IsItemByName",
|
||||
"SourceType"
|
||||
};
|
||||
_saveItemCommand = _connection.CreateCommand();
|
||||
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
|
||||
@@ -747,6 +750,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||
}
|
||||
_saveItemCommand.GetParameter(index++).Value = isByName;
|
||||
|
||||
_saveItemCommand.GetParameter(index++).Value = item.SourceType.ToString();
|
||||
|
||||
_saveItemCommand.Transaction = transaction;
|
||||
|
||||
_saveItemCommand.ExecuteNonQuery();
|
||||
@@ -1109,6 +1114,11 @@ 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);
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -1871,6 +1881,17 @@ 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.IsAiring.HasValue)
|
||||
{
|
||||
if (query.IsAiring.Value)
|
||||
@@ -2152,8 +2173,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 };
|
||||
|
||||
Reference in New Issue
Block a user