mirror of https://github.com/ErsatzTV/ErsatzTV.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.4 KiB
41 lines
1.4 KiB
using ErsatzTV.Application.Emby; |
|
using ErsatzTV.Application.Jellyfin; |
|
using ErsatzTV.Core.Domain; |
|
|
|
namespace ErsatzTV.Application.Libraries; |
|
|
|
internal static class Mapper |
|
{ |
|
public static LibraryViewModel ProjectToViewModel(Library library) => |
|
library switch |
|
{ |
|
LocalLibrary l => ProjectToViewModel(l), |
|
PlexLibrary p => new PlexLibraryViewModel( |
|
p.Id, |
|
p.Name, |
|
p.MediaKind, |
|
p.MediaSourceId, |
|
GetServerName(p.MediaSource)), |
|
JellyfinLibrary j => new JellyfinLibraryViewModel( |
|
j.Id, |
|
j.Name, |
|
j.MediaKind, |
|
j.ShouldSyncItems, |
|
j.MediaSourceId), |
|
EmbyLibrary e => new EmbyLibraryViewModel(e.Id, e.Name, e.MediaKind, e.ShouldSyncItems, e.MediaSourceId), |
|
_ => throw new ArgumentOutOfRangeException(nameof(library)) |
|
}; |
|
|
|
public static LocalLibraryViewModel ProjectToViewModel(LocalLibrary library) => |
|
new(library.Id, library.Name, library.MediaKind, library.MediaSourceId); |
|
|
|
public static LocalLibraryPathViewModel ProjectToViewModel(LibraryPath libraryPath) => |
|
new(libraryPath.Id, libraryPath.LibraryId, libraryPath.Path); |
|
|
|
private static string GetServerName(MediaSource ms) => |
|
ms switch |
|
{ |
|
PlexMediaSource pms => pms.ServerName, |
|
_ => string.Empty |
|
}; |
|
}
|
|
|