From d5fdbec943d63c7347d69788f4e23f2ba6acd5df Mon Sep 17 00:00:00 2001 From: Wendell Jones Date: Thu, 19 Feb 2026 15:51:56 -0500 Subject: [PATCH] Updated code to correct build errors for Jelyfin.Data and Jellyfin.Database.Implementations --- ...Emby.Naming.csproj.AssemblyReference.cache | Bin 10057 -> 12434 bytes ...Emby.Naming.csproj.CoreCompileInputs.cache | 2 +- .../Emby.Naming.csproj.FileListAbsolute.txt | 3 + ...Emby.Photos.csproj.AssemblyReference.cache | Bin 11450 -> 11845 bytes ...Emby.Photos.csproj.CoreCompileInputs.cache | 2 +- .../Emby.Photos.csproj.FileListAbsolute.txt | 3 + ...ementations.csproj.AssemblyReference.cache | Bin 31336 -> 31731 bytes ...ementations.csproj.CoreCompileInputs.cache | 2 +- ...mplementations.csproj.FileListAbsolute.txt | 3 + .../net10.0/Jellyfin.Api.AssemblyInfo.cs | 2 +- .../Jellyfin.Api.AssemblyInfoInputs.cache | 2 +- ...ellyfin.Api.csproj.AssemblyReference.cache | Bin 17591 -> 17986 bytes ...ellyfin.Api.csproj.CoreCompileInputs.cache | 2 +- .../Jellyfin.Api.csproj.FileListAbsolute.txt | 5 + .../Attributes/OpenApiIgnoreEnumAttribute.cs | 19 +- Jellyfin.Data/DayOfWeekHelper.cs | 11 +- Jellyfin.Data/Enums/ActivityLogSortBy.cs | 2 +- Jellyfin.Data/Enums/BaseItemKind.cs | 2 +- Jellyfin.Data/Enums/CollectionType.cs | 266 +- Jellyfin.Data/Enums/MediaStreamProtocol.cs | 33 +- Jellyfin.Data/Enums/MediaType.cs | 2 +- Jellyfin.Data/Enums/PersonKind.cs | 2 +- .../Enums/SyncPlayAccessRequirementType.cs | 2 +- Jellyfin.Data/Enums/UnratedItem.cs | 2 +- Jellyfin.Data/Enums/VideoRange.cs | 2 +- Jellyfin.Data/Enums/VideoRangeType.cs | 2 +- Jellyfin.Data/Events/GenericEventArgs.cs | 4 +- .../Events/System/PendingRestartEventArgs.cs | 3 + .../Events/Users/UserCreatedEventArgs.cs | 4 +- .../Events/Users/UserDeletedEventArgs.cs | 4 +- .../Events/Users/UserLockedOutEventArgs.cs | 4 +- .../Users/UserPasswordChangedEventArgs.cs | 4 +- .../Events/Users/UserUpdatedEventArgs.cs | 4 +- Jellyfin.Data/Queries/ActivityLogQuery.cs | 4 +- Jellyfin.Data/Queries/DeviceQuery.cs | 33 +- Jellyfin.Data/UserEntityExtensions.cs | 13 +- .../Debug/net10.0/Jellyfin.CodeAnalysis.dll | Bin 0 -> 8704 bytes .../Debug/net10.0/Jellyfin.CodeAnalysis.pdb | Bin 0 -> 9652 bytes .../Debug/net10.0/Jellyfin.CodeAnalysis.xml | 24 + .../bin/Debug/net10.0/Jellyfin.Data.deps.json | 461 ++ .../bin/Debug/net10.0/Jellyfin.Data.dll | Bin 0 -> 18944 bytes .../bin/Debug/net10.0/Jellyfin.Data.pdb | Bin 0 -> 17540 bytes .../bin/Debug/net10.0/Jellyfin.Data.xml | 1198 +++++ .../Jellyfin.Database.Implementations.dll | Bin 0 -> 218624 bytes .../Jellyfin.Database.Implementations.pdb | Bin 0 -> 66792 bytes .../Jellyfin.Database.Implementations.xml | 4686 +++++++++++++++++ .../Debug/net10.0/Jellyfin.B884D0AA.Up2Date | 0 ...llyfin.Data.csproj.AssemblyReference.cache | Bin 14260 -> 16637 bytes ...llyfin.Data.csproj.CoreCompileInputs.cache | 2 +- .../Jellyfin.Data.csproj.FileListAbsolute.txt | 19 + .../obj/Debug/net10.0/Jellyfin.Data.dll | Bin 0 -> 18944 bytes .../obj/Debug/net10.0/Jellyfin.Data.pdb | Bin 0 -> 17540 bytes .../obj/Debug/net10.0/Jellyfin.Data.xml | 1198 +++++ .../obj/Debug/net10.0/ref/Jellyfin.Data.dll | Bin 0 -> 14336 bytes .../Debug/net10.0/refint/Jellyfin.Data.dll | Bin 0 -> 14336 bytes ...ementations.csproj.AssemblyReference.cache | Bin 15189 -> 15584 bytes ...ementations.csproj.CoreCompileInputs.cache | 2 +- ...mplementations.csproj.FileListAbsolute.txt | 3 + ...yfin.Server.csproj.AssemblyReference.cache | Bin 46873 -> 47268 bytes ...yfin.Server.csproj.CoreCompileInputs.cache | 2 +- ...ellyfin.Server.csproj.FileListAbsolute.txt | 5 + ...wser.Common.csproj.AssemblyReference.cache | Bin 10057 -> 12434 bytes ...wser.Common.csproj.CoreCompileInputs.cache | 2 +- ...Browser.Common.csproj.FileListAbsolute.txt | 3 + ....Controller.csproj.AssemblyReference.cache | Bin 10927 -> 11322 bytes ....Controller.csproj.CoreCompileInputs.cache | 2 +- ...ser.Controller.csproj.FileListAbsolute.txt | 3 + ...calMetadata.csproj.AssemblyReference.cache | Bin 10927 -> 11322 bytes ...calMetadata.csproj.CoreCompileInputs.cache | 2 +- ....LocalMetadata.csproj.FileListAbsolute.txt | 3 + ...diaEncoding.csproj.AssemblyReference.cache | Bin 14526 -> 14921 bytes ...diaEncoding.csproj.CoreCompileInputs.cache | 2 +- ....MediaEncoding.csproj.FileListAbsolute.txt | 3 + ...owser.Model.csproj.AssemblyReference.cache | Bin 10057 -> 12434 bytes ...owser.Model.csproj.CoreCompileInputs.cache | 2 +- ...aBrowser.Model.csproj.FileListAbsolute.txt | 4 + ...r.Providers.csproj.AssemblyReference.cache | Bin 16663 -> 17058 bytes ...r.Providers.csproj.CoreCompileInputs.cache | 2 +- ...wser.Providers.csproj.FileListAbsolute.txt | 3 + ...bmcMetadata.csproj.AssemblyReference.cache | Bin 10927 -> 11322 bytes ...bmcMetadata.csproj.CoreCompileInputs.cache | 2 +- ...r.XbmcMetadata.csproj.FileListAbsolute.txt | 3 + .../netstandard2.0/Jellyfin.CodeAnalysis.dll | Bin 8704 -> 8704 bytes .../netstandard2.0/Jellyfin.CodeAnalysis.pdb | Bin 9652 -> 9652 bytes .../Jellyfin.CodeAnalysis.AssemblyInfo.cs | 2 +- ...yfin.CodeAnalysis.AssemblyInfoInputs.cache | 2 +- ...odeAnalysis.csproj.CoreCompileInputs.cache | 2 +- ...n.CodeAnalysis.csproj.FileListAbsolute.txt | 12 + .../netstandard2.0/Jellyfin.CodeAnalysis.dll | Bin 8704 -> 8704 bytes .../netstandard2.0/Jellyfin.CodeAnalysis.pdb | Bin 9652 -> 9652 bytes .../Entities/AccessSchedule.cs | 110 +- .../Entities/ActivityLog.cs | 211 +- .../Entities/BaseItemEntity.cs | 1 + .../Entities/BaseItemExtraType.cs | 5 +- .../Entities/CustomItemDisplayPreferences.cs | 145 +- .../Entities/DisplayPreferences.cs | 287 +- .../Entities/Group.cs | 102 +- .../Entities/HomeSection.cs | 72 +- .../Entities/ImageInfo.cs | 93 +- .../Entities/ImageInfoImageType.cs | 2 +- .../Entities/ItemDisplayPreferences.cs | 25 +- .../Entities/Libraries/Artwork.cs | 103 +- .../Entities/Libraries/Book.cs | 46 +- .../Entities/Libraries/BookMetadata.cs | 55 +- .../Entities/Libraries/Chapter.cs | 129 +- .../Entities/Libraries/Collection.cs | 85 +- .../Entities/Libraries/CollectionItem.cs | 103 +- .../Entities/Libraries/Company.cs | 81 +- .../Entities/Libraries/CompanyMetadata.cs | 105 +- .../Entities/Libraries/CustomItem.cs | 45 +- .../Entities/Libraries/CustomItemMetadata.cs | 21 +- .../Entities/Libraries/Episode.cs | 55 +- .../Entities/Libraries/EpisodeMetadata.cs | 85 +- .../Entities/Libraries/Genre.cs | 77 +- .../Entities/Libraries/ItemMetadata.cs | 233 +- .../Entities/Libraries/Library.cs | 109 +- .../Entities/Libraries/LibraryItem.cs | 85 +- .../Entities/Libraries/MediaFile.cs | 113 +- .../Entities/Libraries/MediaFileStream.cs | 73 +- .../Entities/Libraries/MetadataProvider.cs | 81 +- .../Entities/Libraries/MetadataProviderId.cs | 100 +- .../Entities/Libraries/Movie.cs | 46 +- .../Entities/Libraries/MovieMetadata.cs | 127 +- .../Entities/Libraries/MusicAlbum.cs | 48 +- .../Entities/Libraries/MusicAlbumMetadata.cs | 100 +- .../Entities/Libraries/Person.cs | 145 +- .../Entities/Libraries/PersonRole.cs | 147 +- .../Entities/Libraries/Photo.cs | 46 +- .../Entities/Libraries/PhotoMetadata.cs | 22 +- .../Entities/Libraries/Rating.cs | 93 +- .../Entities/Libraries/RatingSource.cs | 117 +- .../Entities/Libraries/Release.cs | 104 +- .../Entities/Libraries/Season.cs | 58 +- .../Entities/Libraries/SeasonMetadata.cs | 47 +- .../Entities/Libraries/Series.cs | 82 +- .../Entities/Libraries/SeriesMetadata.cs | 127 +- .../Entities/Libraries/Track.cs | 56 +- .../Entities/Libraries/TrackMetadata.cs | 22 +- .../Entities/MediaStreamInfo.cs | 1 + .../Entities/MediaStreamTypeEntity.cs | 2 +- .../Entities/Permission.cs | 106 +- .../Entities/Preference.cs | 123 +- .../Entities/ProgramAudioEntity.cs | 57 +- .../Entities/Security/ApiKey.cs | 95 +- .../Entities/Security/Device.cs | 195 +- .../Entities/Security/DeviceOptions.cs | 55 +- .../Entities/TrickplayInfo.cs | 127 +- .../Entities/User.cs | 583 +- .../Entities/UserData.cs | 157 +- .../Enums/HomeSectionType.cs | 2 +- .../Interfaces/IHasArtwork.cs | 21 +- .../Interfaces/IHasCompanies.cs | 21 +- .../Jellyfin.Database.Implementations.csproj | 1 + .../JellyfinDatabaseProviderKeyAttribute.cs | 7 +- .../JellyfinDbContext.cs | 79 +- .../JellyfinQueryHelperExtensions.cs | 19 +- .../Locking/NoLockBehavior.cs | 9 +- .../Locking/OptimisticLockBehavior.cs | 48 +- .../Locking/PessimisticLockBehavior.cs | 69 +- .../ActivityLogConfiguration.cs | 4 + .../AncestorIdConfiguration.cs | 2 + .../ModelConfiguration/ApiKeyConfiguration.cs | 31 +- .../AttachmentStreamInfoConfiguration.cs | 2 + .../BaseItemConfiguration.cs | 3 + .../BaseItemMetadataFieldConfiguration.cs | 2 + .../BaseItemProviderConfiguration.cs | 2 + .../BaseItemTrailerTypeConfiguration.cs | 2 + .../ChapterConfiguration.cs | 2 + ...stomItemDisplayPreferencesConfiguration.cs | 31 +- .../ModelConfiguration/DeviceConfiguration.cs | 41 +- .../DeviceOptionsConfiguration.cs | 31 +- .../DisplayPreferencesConfiguration.cs | 41 +- .../ItemValuesConfiguration.cs | 2 + .../ItemValuesMapConfiguration.cs | 2 + .../KeyframeDataConfiguration.cs | 2 + .../MediaStreamInfoConfiguration.cs | 2 + .../PeopleBaseItemMapConfiguration.cs | 2 + .../ModelConfiguration/PeopleConfiguration.cs | 2 + .../PermissionConfiguration.cs | 39 +- .../PreferenceConfiguration.cs | 33 +- .../TrickplayInfoConfiguration.cs | 27 +- .../ModelConfiguration/UserConfiguration.cs | 87 +- .../UserDataConfiguration.cs | 2 + .../ProgressablePartitionReporting.cs | 20 +- .../QueryPartitionHelpers.cs | 5 +- .../Debug/net10.0/Jellyfin.CodeAnalysis.dll | Bin 0 -> 8704 bytes .../Debug/net10.0/Jellyfin.CodeAnalysis.pdb | Bin 0 -> 9652 bytes .../Debug/net10.0/Jellyfin.CodeAnalysis.xml | 24 + ...ellyfin.Database.Implementations.deps.json | 994 ++++ .../Jellyfin.Database.Implementations.dll | Bin 0 -> 218624 bytes .../Jellyfin.Database.Implementations.pdb | Bin 0 -> 66792 bytes ...atabase.Implementations.runtimeconfig.json | 13 + .../Jellyfin.Database.Implementations.xml | 4686 +++++++++++++++++ .../Debug/net10.0/Jellyfin.A04746A0.Up2Date | 0 ...ementations.csproj.AssemblyReference.cache | Bin 14260 -> 14655 bytes ...ementations.csproj.CoreCompileInputs.cache | 2 +- ...mplementations.csproj.FileListAbsolute.txt | 18 + .../Jellyfin.Database.Implementations.dll | Bin 0 -> 218624 bytes ...ase.Implementations.genruntimeconfig.cache | 1 + .../Jellyfin.Database.Implementations.pdb | Bin 0 -> 66792 bytes .../Jellyfin.Database.Implementations.xml | 8 +- .../ref/Jellyfin.Database.Implementations.dll | Bin 0 -> 86016 bytes .../Jellyfin.Database.Implementations.dll | Bin 0 -> 86016 bytes ...ders.Sqlite.csproj.AssemblyReference.cache | Bin 13794 -> 16171 bytes ...ders.Sqlite.csproj.CoreCompileInputs.cache | 2 +- ...oviders.Sqlite.csproj.FileListAbsolute.txt | 3 + ...rawing.Skia.csproj.AssemblyReference.cache | Bin 15743 -> 16138 bytes ...rawing.Skia.csproj.CoreCompileInputs.cache | 2 +- ...n.Drawing.Skia.csproj.FileListAbsolute.txt | 3 + ...fin.Drawing.csproj.AssemblyReference.cache | Bin 11452 -> 11847 bytes ...fin.Drawing.csproj.CoreCompileInputs.cache | 2 +- ...llyfin.Drawing.csproj.FileListAbsolute.txt | 3 + ....Extensions.csproj.AssemblyReference.cache | Bin 10497 -> 10892 bytes ....Extensions.csproj.CoreCompileInputs.cache | 2 +- ...fin.Extensions.csproj.FileListAbsolute.txt | 4 + .../net10.0/Jellyfin.LiveTv.AssemblyInfo.cs | 2 +- .../Jellyfin.LiveTv.AssemblyInfoInputs.cache | 2 +- ...yfin.LiveTv.csproj.AssemblyReference.cache | Bin 11795 -> 12190 bytes ...yfin.LiveTv.csproj.CoreCompileInputs.cache | 2 +- ...ellyfin.LiveTv.csproj.FileListAbsolute.txt | 5 + ...Jellyfin.MediaEncoding.Hls.AssemblyInfo.cs | 2 +- ...MediaEncoding.Hls.AssemblyInfoInputs.cache | 2 +- ...ncoding.Hls.csproj.AssemblyReference.cache | Bin 10927 -> 11322 bytes ...ncoding.Hls.csproj.CoreCompileInputs.cache | 2 +- ...iaEncoding.Hls.csproj.FileListAbsolute.txt | 5 + ...in.MediaEncoding.Keyframes.AssemblyInfo.cs | 2 +- ...ncoding.Keyframes.AssemblyInfoInputs.cache | 2 +- ...g.Keyframes.csproj.AssemblyReference.cache | Bin 5518 -> 5913 bytes ...g.Keyframes.csproj.CoreCompileInputs.cache | 2 +- ...ding.Keyframes.csproj.FileListAbsolute.txt | 6 + ....Networking.csproj.AssemblyReference.cache | Bin 10927 -> 11322 bytes ....Networking.csproj.CoreCompileInputs.cache | 2 +- ...fin.Networking.csproj.FileListAbsolute.txt | 3 + .../Jellyfin.Api.Tests.AssemblyInfo.cs | 2 +- ...ellyfin.Api.Tests.AssemblyInfoInputs.cache | 2 +- ...n.Api.Tests.csproj.AssemblyReference.cache | Bin 36047 -> 36442 bytes ...n.Api.Tests.csproj.CoreCompileInputs.cache | 2 +- ...yfin.Api.Tests.csproj.FileListAbsolute.txt | 8 + .../Debug/net10.0/MvcTestingAppManifest.json | 28 +- .../Jellyfin.Common.Tests.AssemblyInfo.cs | 2 +- ...yfin.Common.Tests.AssemblyInfoInputs.cache | 2 +- ...ommon.Tests.csproj.AssemblyReference.cache | Bin 28028 -> 28423 bytes ...ommon.Tests.csproj.CoreCompileInputs.cache | 2 +- ...n.Common.Tests.csproj.FileListAbsolute.txt | 7 + .../Jellyfin.Controller.Tests.AssemblyInfo.cs | 2 +- ....Controller.Tests.AssemblyInfoInputs.cache | 2 +- ...oller.Tests.csproj.AssemblyReference.cache | Bin 22238 -> 22633 bytes ...oller.Tests.csproj.CoreCompileInputs.cache | 2 +- ...ntroller.Tests.csproj.FileListAbsolute.txt | 7 + .../Jellyfin.Extensions.Tests.AssemblyInfo.cs | 2 +- ....Extensions.Tests.AssemblyInfoInputs.cache | 2 +- ...sions.Tests.csproj.AssemblyReference.cache | Bin 21956 -> 22351 bytes ...sions.Tests.csproj.CoreCompileInputs.cache | 2 +- ...tensions.Tests.csproj.FileListAbsolute.txt | 7 + .../Jellyfin.LiveTv.Tests.AssemblyInfo.cs | 2 +- ...yfin.LiveTv.Tests.AssemblyInfoInputs.cache | 2 +- ...iveTv.Tests.csproj.AssemblyReference.cache | Bin 25260 -> 25655 bytes ...iveTv.Tests.csproj.CoreCompileInputs.cache | 2 +- ...n.LiveTv.Tests.csproj.FileListAbsolute.txt | 7 + ...in.MediaEncoding.Hls.Tests.AssemblyInfo.cs | 2 +- ...ncoding.Hls.Tests.AssemblyInfoInputs.cache | 2 +- ...g.Hls.Tests.csproj.AssemblyReference.cache | Bin 21269 -> 21664 bytes ...g.Hls.Tests.csproj.CoreCompileInputs.cache | 2 +- ...ding.Hls.Tests.csproj.FileListAbsolute.txt | 7 + ...iaEncoding.Keyframes.Tests.AssemblyInfo.cs | 2 +- ...g.Keyframes.Tests.AssemblyInfoInputs.cache | 2 +- ...rames.Tests.csproj.AssemblyReference.cache | Bin 15860 -> 16255 bytes ...rames.Tests.csproj.CoreCompileInputs.cache | 2 +- ...eyframes.Tests.csproj.FileListAbsolute.txt | 7 + ...llyfin.MediaEncoding.Tests.AssemblyInfo.cs | 2 +- ...diaEncoding.Tests.AssemblyInfoInputs.cache | 2 +- ...oding.Tests.csproj.AssemblyReference.cache | Bin 27986 -> 28381 bytes ...oding.Tests.csproj.CoreCompileInputs.cache | 2 +- ...Encoding.Tests.csproj.FileListAbsolute.txt | 7 + .../Jellyfin.Model.Tests.AssemblyInfo.cs | 2 +- ...lyfin.Model.Tests.AssemblyInfoInputs.cache | 2 +- ...Model.Tests.csproj.AssemblyReference.cache | Bin 22925 -> 23320 bytes ...Model.Tests.csproj.CoreCompileInputs.cache | 2 +- ...in.Model.Tests.csproj.FileListAbsolute.txt | 7 + .../Jellyfin.Naming.Tests.AssemblyInfo.cs | 2 +- ...yfin.Naming.Tests.AssemblyInfoInputs.cache | 2 +- ...aming.Tests.csproj.AssemblyReference.cache | Bin 21368 -> 21763 bytes ...aming.Tests.csproj.CoreCompileInputs.cache | 2 +- ...n.Naming.Tests.csproj.FileListAbsolute.txt | 7 + .../Jellyfin.Networking.Tests.AssemblyInfo.cs | 2 +- ....Networking.Tests.AssemblyInfoInputs.cache | 2 +- ...rking.Tests.csproj.AssemblyReference.cache | Bin 23795 -> 24190 bytes ...rking.Tests.csproj.CoreCompileInputs.cache | 2 +- ...tworking.Tests.csproj.FileListAbsolute.txt | 7 + .../Jellyfin.Providers.Tests.AssemblyInfo.cs | 2 +- ...n.Providers.Tests.AssemblyInfoInputs.cache | 2 +- ...iders.Tests.csproj.AssemblyReference.cache | Bin 29589 -> 29984 bytes ...iders.Tests.csproj.CoreCompileInputs.cache | 2 +- ...roviders.Tests.csproj.FileListAbsolute.txt | 7 + ...rver.Implementations.Tests.AssemblyInfo.cs | 2 +- ...ementations.Tests.AssemblyInfoInputs.cache | 2 +- ...tions.Tests.csproj.AssemblyReference.cache | Bin 61988 -> 62383 bytes ...tions.Tests.csproj.CoreCompileInputs.cache | 2 +- ...ntations.Tests.csproj.FileListAbsolute.txt | 8 + .../Debug/net10.0/MvcTestingAppManifest.json | 48 +- ...n.Server.Integration.Tests.AssemblyInfo.cs | 2 +- ...Integration.Tests.AssemblyInfoInputs.cache | 2 +- ...ation.Tests.csproj.AssemblyReference.cache | Bin 61415 -> 61810 bytes ...ation.Tests.csproj.CoreCompileInputs.cache | 2 +- ...egration.Tests.csproj.FileListAbsolute.txt | 8 + .../Debug/net10.0/MvcTestingAppManifest.json | 46 +- .../Jellyfin.Server.Tests.AssemblyInfo.cs | 2 +- ...yfin.Server.Tests.AssemblyInfoInputs.cache | 2 +- ...erver.Tests.csproj.AssemblyReference.cache | Bin 61058 -> 61453 bytes ...erver.Tests.csproj.CoreCompileInputs.cache | 2 +- ...n.Server.Tests.csproj.FileListAbsolute.txt | 8 + .../Debug/net10.0/MvcTestingAppManifest.json | 46 +- ...ellyfin.XbmcMetadata.Tests.AssemblyInfo.cs | 2 +- ...bmcMetadata.Tests.AssemblyInfoInputs.cache | 2 +- ...adata.Tests.csproj.AssemblyReference.cache | Bin 27440 -> 27835 bytes ...adata.Tests.csproj.CoreCompileInputs.cache | 2 +- ...Metadata.Tests.csproj.FileListAbsolute.txt | 7 + 317 files changed, 17235 insertions(+), 3473 deletions(-) create mode 100644 Jellyfin.Data/bin/Debug/net10.0/Jellyfin.CodeAnalysis.dll create mode 100644 Jellyfin.Data/bin/Debug/net10.0/Jellyfin.CodeAnalysis.pdb create mode 100644 Jellyfin.Data/bin/Debug/net10.0/Jellyfin.CodeAnalysis.xml create mode 100644 Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.deps.json create mode 100644 Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.dll create mode 100644 Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.pdb create mode 100644 Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.xml create mode 100644 Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Database.Implementations.dll create mode 100644 Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Database.Implementations.pdb create mode 100644 Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Database.Implementations.xml create mode 100644 Jellyfin.Data/obj/Debug/net10.0/Jellyfin.B884D0AA.Up2Date create mode 100644 Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.dll create mode 100644 Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.pdb create mode 100644 Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.xml create mode 100644 Jellyfin.Data/obj/Debug/net10.0/ref/Jellyfin.Data.dll create mode 100644 Jellyfin.Data/obj/Debug/net10.0/refint/Jellyfin.Data.dll create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.CodeAnalysis.dll create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.CodeAnalysis.pdb create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.CodeAnalysis.xml create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.deps.json create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.dll create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.pdb create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.runtimeconfig.json create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.xml create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.A04746A0.Up2Date create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.Database.Implementations.dll create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.Database.Implementations.genruntimeconfig.cache create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.Database.Implementations.pdb create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/ref/Jellyfin.Database.Implementations.dll create mode 100644 src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/refint/Jellyfin.Database.Implementations.dll diff --git a/Emby.Naming/obj/Debug/net10.0/Emby.Naming.csproj.AssemblyReference.cache b/Emby.Naming/obj/Debug/net10.0/Emby.Naming.csproj.AssemblyReference.cache index 71ab4821ca06bcc7d79fc6bcb7c6bf0ffa3581d6..7294dcae44ad5e7941122cd1e3d6f07c9704a6cd 100644 GIT binary patch delta 2152 zcmbtVO-vI(6z=e&wXLQ|#DmsAkOUH)wju^i2sWh$6&j%ge^R4cI+RUzXP4QjVWY|3 zy_Gc{^kh6^G|It)@!&-hJaR<2dp6;QGt+ImtYd&Mhu!wI?|a{S-+OPq=U0^WBcQw1 zzSQw@?e)j^%Q4`9j!-BB0El8lEvn$MLdu|x*<=Seo)w5U2(#DvlkS}#7dNN5MVJ{_ z&y+e(49i%cFl&@i1}mCvsTSxIZvKY{C<9J^8J%0bk{|H{pDoxHMLI*(G&E0D16%Nh zu2-p2(hxZ2NA`V|p}!k{=yYvFoNIpggq%0b78Vs^O6b>v$ngJVF9Jm#Uxq0-oElDF z1t13Vy}8*!uF{^@}`D#gsCEmQ7oyrIDtyl zN|EWAPQldPKCrB5fGhXn!L6fzjGtj9V4pwI84)}f3PhMotoEv}Z3Wamr_epjhy zl95abl1Y!`-aee9*IxIf0TTW)Ttu6__bmlqmI1-xo<9U(BT}Rzfm9Sp&~k31Ka?FZ>3)tO%zWyu-(HQpHO!w`>w* ziF6K)+%C+4;J?J+Lke;sL;*km*-E>W;(@F4ak|e0=)Y z3et50A0{&<73;*f2Rge*kWyxv9|lq&av8V^cXbWUFib@55S1bl1a7vfv{z*U_j$-H zchkVEWv1A6*I))?!&^YX7`*P{_$1=rxk64z7Nb#Q--W)r=6Te;W!`#-FK=L3HMqi~I} delta 42 ycmbP~c+!u9jZuh!fq^l7vLds_L<1L=yG6CN8!LDiCv))#OzzfE-29JgiYfr~8Vr*F diff --git a/Emby.Naming/obj/Debug/net10.0/Emby.Naming.csproj.CoreCompileInputs.cache b/Emby.Naming/obj/Debug/net10.0/Emby.Naming.csproj.CoreCompileInputs.cache index d6457121..1ab98d07 100644 --- a/Emby.Naming/obj/Debug/net10.0/Emby.Naming.csproj.CoreCompileInputs.cache +++ b/Emby.Naming/obj/Debug/net10.0/Emby.Naming.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -707b848c9239ee433c68bdbbe8bf0840dedefaf0732ff470296b59e7b39c4d3a +16af1f055d778316827440b76eceed3a1b05fabb34bc065076f833acf6b594ae diff --git a/Emby.Naming/obj/Debug/net10.0/Emby.Naming.csproj.FileListAbsolute.txt b/Emby.Naming/obj/Debug/net10.0/Emby.Naming.csproj.FileListAbsolute.txt index e3598c88..734de91e 100644 --- a/Emby.Naming/obj/Debug/net10.0/Emby.Naming.csproj.FileListAbsolute.txt +++ b/Emby.Naming/obj/Debug/net10.0/Emby.Naming.csproj.FileListAbsolute.txt @@ -1,3 +1,6 @@ C:\Projects\pgsql-jellyfin\Emby.Naming\obj\Debug\net10.0\Emby.Naming.csproj.AssemblyReference.cache C:\Projects\pgsql-jellyfin\Emby.Naming\obj\Debug\net10.0\Emby.Naming.GeneratedMSBuildEditorConfig.editorconfig C:\Projects\pgsql-jellyfin\Emby.Naming\obj\Debug\net10.0\Emby.Naming.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\Emby.Naming\obj\Debug\net10.0\Emby.Naming.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\Emby.Naming\obj\Debug\net10.0\Emby.Naming.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\Emby.Naming\obj\Debug\net10.0\Emby.Naming.csproj.CoreCompileInputs.cache diff --git a/Emby.Photos/obj/Debug/net10.0/Emby.Photos.csproj.AssemblyReference.cache b/Emby.Photos/obj/Debug/net10.0/Emby.Photos.csproj.AssemblyReference.cache index 97ed5de0120c460ade394c3f3e0b5ead5327f02e..134852e57e32b3692327f7f5014f35282ebbd36d 100644 GIT binary patch delta 440 zcmdlLc{FB13Cpal3%6{n;9;z1WMN=nU}R+E&Py#RE=kNwNi0fXWCDs|1B~@hQARM$ z$N{9zR15zX?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19G)^1< delta 24 gcmX>avnz5!3CrE0+S-j3JdBfl)C4xmGplI>0EW^C_W%F@ diff --git a/Emby.Photos/obj/Debug/net10.0/Emby.Photos.csproj.CoreCompileInputs.cache b/Emby.Photos/obj/Debug/net10.0/Emby.Photos.csproj.CoreCompileInputs.cache index 80c9a24c..110fb2df 100644 --- a/Emby.Photos/obj/Debug/net10.0/Emby.Photos.csproj.CoreCompileInputs.cache +++ b/Emby.Photos/obj/Debug/net10.0/Emby.Photos.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -fe8f4e506cd763fe456c7ccca92576c0078938cd75d2fca8a97fac0a9a6095a9 +4fc4fc0e2cc8db7e69fd41ec171c1bb9593046487006fd731d47bf622a09616a diff --git a/Emby.Photos/obj/Debug/net10.0/Emby.Photos.csproj.FileListAbsolute.txt b/Emby.Photos/obj/Debug/net10.0/Emby.Photos.csproj.FileListAbsolute.txt index fd45e236..df759bc6 100644 --- a/Emby.Photos/obj/Debug/net10.0/Emby.Photos.csproj.FileListAbsolute.txt +++ b/Emby.Photos/obj/Debug/net10.0/Emby.Photos.csproj.FileListAbsolute.txt @@ -1,3 +1,6 @@ C:\Projects\pgsql-jellyfin\Emby.Photos\obj\Debug\net10.0\Emby.Photos.csproj.AssemblyReference.cache C:\Projects\pgsql-jellyfin\Emby.Photos\obj\Debug\net10.0\Emby.Photos.GeneratedMSBuildEditorConfig.editorconfig C:\Projects\pgsql-jellyfin\Emby.Photos\obj\Debug\net10.0\Emby.Photos.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\Emby.Photos\obj\Debug\net10.0\Emby.Photos.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\Emby.Photos\obj\Debug\net10.0\Emby.Photos.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\Emby.Photos\obj\Debug\net10.0\Emby.Photos.csproj.CoreCompileInputs.cache diff --git a/Emby.Server.Implementations/obj/Debug/net10.0/Emby.Server.Implementations.csproj.AssemblyReference.cache b/Emby.Server.Implementations/obj/Debug/net10.0/Emby.Server.Implementations.csproj.AssemblyReference.cache index d4cee5575a4a35a3694bf3a8258d9e68cfdc8140..0db1ad38260ccc37577ffe33c4fa945abe9c760b 100644 GIT binary patch delta 442 zcmaFyh4J%u#t9`Xv$ihWvay1Pv7V8Ifq{XMk&!zuwWPQtF)t;tD20&;D25F%){Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rjYpBp5x^ V|3d*I17px+K_!LFTNyW3004K{PvZap delta 30 mcmezTo$TY^>m6tY>6lU|?WmWaQ3EEh#QZ%u7iuN?~LIieUqc^-xhp zFwMvTq|Q_e|39mHHxMKO76uw7=9`&ZlwX{mR-)&epOWgBmzYyooLS7s3f6{9Kn=uZ zu;G4-u(f7>rpN}%1XmW9q~-!m&B;kkF3HT#E7tSO%`GiSOv*`R*ift&okE#qMrB=irRQq5>?=hggEmd`#DaE#fLO(KFC9HZV4{WMt&g^OJWC2}Td~ U|4_ilz!)@HkxOCoRz@ag0A2P?y#N3J delta 32 ocmX@q!??YZaY6~p-J;ssjTJnMljm{@Fa}L7 -using System; - -namespace Jellyfin.Data.Attributes; - -/// -/// Attribute to specify that the enum value is to be ignored when generating the openapi spec. -/// -[AttributeUsage(AttributeTargets.Field)] -public sealed class OpenApiIgnoreEnumAttribute : Attribute +namespace Jellyfin.Data.Attributes { + using System; + + /// + /// Attribute to specify that the enum value is to be ignored when generating the openapi spec. + /// + [AttributeUsage(AttributeTargets.Field)] + public sealed class OpenApiIgnoreEnumAttribute : Attribute + { + } } diff --git a/Jellyfin.Data/DayOfWeekHelper.cs b/Jellyfin.Data/DayOfWeekHelper.cs index 430eb62b..e8dcefc8 100644 --- a/Jellyfin.Data/DayOfWeekHelper.cs +++ b/Jellyfin.Data/DayOfWeekHelper.cs @@ -3,12 +3,13 @@ // #pragma warning disable CS1591 - -using System; -using Jellyfin.Database.Implementations.Enums; +#pragma warning disable SA1600 // Elements should be documented namespace Jellyfin.Data { + using System; + using Jellyfin.Database.Implementations.Enums; + public static class DayOfWeekHelper { public static DayOfWeek[] GetDaysOfWeek(DynamicDayOfWeek day) @@ -18,7 +19,7 @@ namespace Jellyfin.Data DynamicDayOfWeek.Everyday => new[] { DayOfWeek.Sunday, DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Saturday }, DynamicDayOfWeek.Weekday => new[] { DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday }, DynamicDayOfWeek.Weekend => new[] { DayOfWeek.Sunday, DayOfWeek.Saturday }, - _ => new[] { (DayOfWeek)day } + _ => new[] { (DayOfWeek)day }, }; } @@ -29,7 +30,7 @@ namespace Jellyfin.Data DynamicDayOfWeek.Everyday => true, DynamicDayOfWeek.Weekday => dayOfWeek is >= DayOfWeek.Monday and <= DayOfWeek.Friday, DynamicDayOfWeek.Weekend => dayOfWeek is DayOfWeek.Saturday or DayOfWeek.Sunday, - _ => (DayOfWeek)dynamicDayOfWeek == dayOfWeek + _ => (DayOfWeek)dynamicDayOfWeek == dayOfWeek, }; } } diff --git a/Jellyfin.Data/Enums/ActivityLogSortBy.cs b/Jellyfin.Data/Enums/ActivityLogSortBy.cs index 623c4884..630f88f5 100644 --- a/Jellyfin.Data/Enums/ActivityLogSortBy.cs +++ b/Jellyfin.Data/Enums/ActivityLogSortBy.cs @@ -49,5 +49,5 @@ public enum ActivityLogSortBy /// /// Sort by severity. /// - LogSeverity = 7 + LogSeverity = 7, } diff --git a/Jellyfin.Data/Enums/BaseItemKind.cs b/Jellyfin.Data/Enums/BaseItemKind.cs index 4dfba8b0..b86754c8 100644 --- a/Jellyfin.Data/Enums/BaseItemKind.cs +++ b/Jellyfin.Data/Enums/BaseItemKind.cs @@ -204,6 +204,6 @@ namespace Jellyfin.Data.Enums /// /// Item is year. /// - Year + Year, } } diff --git a/Jellyfin.Data/Enums/CollectionType.cs b/Jellyfin.Data/Enums/CollectionType.cs index 3e339aeb..db689bfd 100644 --- a/Jellyfin.Data/Enums/CollectionType.cs +++ b/Jellyfin.Data/Enums/CollectionType.cs @@ -3,167 +3,169 @@ // #pragma warning disable SA1300 // The name of a C# element does not begin with an upper-case letter. - disabled due to legacy requirement. -using Jellyfin.Data.Attributes; -namespace Jellyfin.Data.Enums; - -/// -/// Collection type. -/// -public enum CollectionType +namespace Jellyfin.Data.Enums { - /// - /// Unknown collection. - /// - unknown = 0, + using Jellyfin.Data.Attributes; /// - /// Movies collection. + /// Collection type. /// - movies = 1, + public enum CollectionType + { + /// + /// Unknown collection. + /// + unknown = 0, - /// - /// Tv shows collection. - /// - tvshows = 2, + /// + /// Movies collection. + /// + movies = 1, - /// - /// Music collection. - /// - music = 3, + /// + /// Tv shows collection. + /// + tvshows = 2, - /// - /// Music videos collection. - /// - musicvideos = 4, + /// + /// Music collection. + /// + music = 3, - /// - /// Trailers collection. - /// - trailers = 5, + /// + /// Music videos collection. + /// + musicvideos = 4, - /// - /// Home videos collection. - /// - homevideos = 6, + /// + /// Trailers collection. + /// + trailers = 5, - /// - /// Box sets collection. - /// - boxsets = 7, + /// + /// Home videos collection. + /// + homevideos = 6, - /// - /// Books collection. - /// - books = 8, + /// + /// Box sets collection. + /// + boxsets = 7, - /// - /// Photos collection. - /// - photos = 9, + /// + /// Books collection. + /// + books = 8, - /// - /// Live tv collection. - /// - livetv = 10, + /// + /// Photos collection. + /// + photos = 9, - /// - /// Playlists collection. - /// - playlists = 11, + /// + /// Live tv collection. + /// + livetv = 10, - /// - /// Folders collection. - /// - folders = 12, + /// + /// Playlists collection. + /// + playlists = 11, - /// - /// Tv show series collection. - /// - [OpenApiIgnoreEnum] - tvshowseries = 101, + /// + /// Folders collection. + /// + folders = 12, - /// - /// Tv genres collection. - /// - [OpenApiIgnoreEnum] - tvgenres = 102, + /// + /// Tv show series collection. + /// + [OpenApiIgnoreEnum] + tvshowseries = 101, - /// - /// Tv genre collection. - /// - [OpenApiIgnoreEnum] - tvgenre = 103, + /// + /// Tv genres collection. + /// + [OpenApiIgnoreEnum] + tvgenres = 102, - /// - /// Tv latest collection. - /// - [OpenApiIgnoreEnum] - tvlatest = 104, + /// + /// Tv genre collection. + /// + [OpenApiIgnoreEnum] + tvgenre = 103, - /// - /// Tv next up collection. - /// - [OpenApiIgnoreEnum] - tvnextup = 105, + /// + /// Tv latest collection. + /// + [OpenApiIgnoreEnum] + tvlatest = 104, - /// - /// Tv resume collection. - /// - [OpenApiIgnoreEnum] - tvresume = 106, + /// + /// Tv next up collection. + /// + [OpenApiIgnoreEnum] + tvnextup = 105, - /// - /// Tv favorite series collection. - /// - [OpenApiIgnoreEnum] - tvfavoriteseries = 107, + /// + /// Tv resume collection. + /// + [OpenApiIgnoreEnum] + tvresume = 106, - /// - /// Tv favorite episodes collection. - /// - [OpenApiIgnoreEnum] - tvfavoriteepisodes = 108, + /// + /// Tv favorite series collection. + /// + [OpenApiIgnoreEnum] + tvfavoriteseries = 107, - /// - /// Latest movies collection. - /// - [OpenApiIgnoreEnum] - movielatest = 109, + /// + /// Tv favorite episodes collection. + /// + [OpenApiIgnoreEnum] + tvfavoriteepisodes = 108, - /// - /// Movies to resume collection. - /// - [OpenApiIgnoreEnum] - movieresume = 110, + /// + /// Latest movies collection. + /// + [OpenApiIgnoreEnum] + movielatest = 109, - /// - /// Movie movie collection. - /// - [OpenApiIgnoreEnum] - moviemovies = 111, + /// + /// Movies to resume collection. + /// + [OpenApiIgnoreEnum] + movieresume = 110, - /// - /// Movie collections collection. - /// - [OpenApiIgnoreEnum] - moviecollection = 112, + /// + /// Movie movie collection. + /// + [OpenApiIgnoreEnum] + moviemovies = 111, - /// - /// Movie favorites collection. - /// - [OpenApiIgnoreEnum] - moviefavorites = 113, + /// + /// Movie collections collection. + /// + [OpenApiIgnoreEnum] + moviecollection = 112, - /// - /// Movie genres collection. - /// - [OpenApiIgnoreEnum] - moviegenres = 114, + /// + /// Movie favorites collection. + /// + [OpenApiIgnoreEnum] + moviefavorites = 113, - /// - /// Movie genre collection. - /// - [OpenApiIgnoreEnum] - moviegenre = 115 + /// + /// Movie genres collection. + /// + [OpenApiIgnoreEnum] + moviegenres = 114, + + /// + /// Movie genre collection. + /// + [OpenApiIgnoreEnum] + moviegenre = 115, + } } diff --git a/Jellyfin.Data/Enums/MediaStreamProtocol.cs b/Jellyfin.Data/Enums/MediaStreamProtocol.cs index 151e975f..adaff8c1 100644 --- a/Jellyfin.Data/Enums/MediaStreamProtocol.cs +++ b/Jellyfin.Data/Enums/MediaStreamProtocol.cs @@ -3,24 +3,25 @@ // #pragma warning disable SA1300 // Lowercase required for backwards compat. -using System.ComponentModel; - -namespace Jellyfin.Data.Enums; - -/// -/// Media streaming protocol. -/// Lowercase for backwards compatibility. -/// -[DefaultValue(http)] -public enum MediaStreamProtocol +namespace Jellyfin.Data.Enums { - /// - /// HTTP. - /// - http = 0, + using System.ComponentModel; /// - /// HTTP Live Streaming. + /// Media streaming protocol. + /// Lowercase for backwards compatibility. /// - hls = 1 + [DefaultValue(http)] + public enum MediaStreamProtocol + { + /// + /// HTTP. + /// + http = 0, + + /// + /// HTTP Live Streaming. + /// + hls = 1, + } } diff --git a/Jellyfin.Data/Enums/MediaType.cs b/Jellyfin.Data/Enums/MediaType.cs index 51b34edc..84f85b9a 100644 --- a/Jellyfin.Data/Enums/MediaType.cs +++ b/Jellyfin.Data/Enums/MediaType.cs @@ -32,5 +32,5 @@ public enum MediaType /// /// Book media. /// - Book = 4 + Book = 4, } diff --git a/Jellyfin.Data/Enums/PersonKind.cs b/Jellyfin.Data/Enums/PersonKind.cs index 854401d8..574b3861 100644 --- a/Jellyfin.Data/Enums/PersonKind.cs +++ b/Jellyfin.Data/Enums/PersonKind.cs @@ -133,5 +133,5 @@ public enum PersonKind /// /// A person who renders a text from one language into another. /// - Translator + Translator, } diff --git a/Jellyfin.Data/Enums/SyncPlayAccessRequirementType.cs b/Jellyfin.Data/Enums/SyncPlayAccessRequirementType.cs index 25fb05e3..1681f481 100644 --- a/Jellyfin.Data/Enums/SyncPlayAccessRequirementType.cs +++ b/Jellyfin.Data/Enums/SyncPlayAccessRequirementType.cs @@ -27,6 +27,6 @@ namespace Jellyfin.Data.Enums /// /// User must be in a group. /// - IsInGroup = 3 + IsInGroup = 3, } } diff --git a/Jellyfin.Data/Enums/UnratedItem.cs b/Jellyfin.Data/Enums/UnratedItem.cs index 7a25a63a..8a995b2c 100644 --- a/Jellyfin.Data/Enums/UnratedItem.cs +++ b/Jellyfin.Data/Enums/UnratedItem.cs @@ -52,6 +52,6 @@ namespace Jellyfin.Data.Enums /// /// Another type, not covered by the other fields. /// - Other = 8 + Other = 8, } } diff --git a/Jellyfin.Data/Enums/VideoRange.cs b/Jellyfin.Data/Enums/VideoRange.cs index 260e27e4..5ba77eb4 100644 --- a/Jellyfin.Data/Enums/VideoRange.cs +++ b/Jellyfin.Data/Enums/VideoRange.cs @@ -22,5 +22,5 @@ public enum VideoRange /// /// HDR video range. /// - HDR + HDR, } diff --git a/Jellyfin.Data/Enums/VideoRangeType.cs b/Jellyfin.Data/Enums/VideoRangeType.cs index ec4a98ac..f740c901 100644 --- a/Jellyfin.Data/Enums/VideoRangeType.cs +++ b/Jellyfin.Data/Enums/VideoRangeType.cs @@ -73,5 +73,5 @@ public enum VideoRangeType /// /// HDR10+ video range type (10bit to 16bit). /// - HDR10Plus + HDR10Plus, } diff --git a/Jellyfin.Data/Events/GenericEventArgs.cs b/Jellyfin.Data/Events/GenericEventArgs.cs index bd32d121..b69b9c51 100644 --- a/Jellyfin.Data/Events/GenericEventArgs.cs +++ b/Jellyfin.Data/Events/GenericEventArgs.cs @@ -2,6 +2,8 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1200 // using directive or a using-alias directive is placed outside of a namespace element + using System; namespace Jellyfin.Data.Events @@ -18,7 +20,7 @@ namespace Jellyfin.Data.Events /// The argument. public GenericEventArgs(T arg) { - Argument = arg; + this.Argument = arg; } /// diff --git a/Jellyfin.Data/Events/System/PendingRestartEventArgs.cs b/Jellyfin.Data/Events/System/PendingRestartEventArgs.cs index dff46269..b63049c6 100644 --- a/Jellyfin.Data/Events/System/PendingRestartEventArgs.cs +++ b/Jellyfin.Data/Events/System/PendingRestartEventArgs.cs @@ -2,6 +2,9 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable CA1711 // Identifiers should not have incorrect suffix +#pragma warning disable SA1200 // using directive or a using-alias directive is placed outside of a namespace element + using System; namespace Jellyfin.Data.Events.System diff --git a/Jellyfin.Data/Events/Users/UserCreatedEventArgs.cs b/Jellyfin.Data/Events/Users/UserCreatedEventArgs.cs index c97fdcfc..0a7bb355 100644 --- a/Jellyfin.Data/Events/Users/UserCreatedEventArgs.cs +++ b/Jellyfin.Data/Events/Users/UserCreatedEventArgs.cs @@ -2,10 +2,12 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -using Jellyfin.Database.Implementations.Entities; +#pragma warning disable SA1128 // Put constructor initializers on their own line namespace Jellyfin.Data.Events.Users { + using Jellyfin.Database.Implementations.Entities; + /// /// An event that occurs when a user is created. /// diff --git a/Jellyfin.Data/Events/Users/UserDeletedEventArgs.cs b/Jellyfin.Data/Events/Users/UserDeletedEventArgs.cs index fb313ac2..2a4aebef 100644 --- a/Jellyfin.Data/Events/Users/UserDeletedEventArgs.cs +++ b/Jellyfin.Data/Events/Users/UserDeletedEventArgs.cs @@ -2,10 +2,12 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -using Jellyfin.Database.Implementations.Entities; +#pragma warning disable SA1128 // Put constructor initializers on their own line namespace Jellyfin.Data.Events.Users { + using Jellyfin.Database.Implementations.Entities; + /// /// An event that occurs when a user is deleted. /// diff --git a/Jellyfin.Data/Events/Users/UserLockedOutEventArgs.cs b/Jellyfin.Data/Events/Users/UserLockedOutEventArgs.cs index 1060220c..c0037e87 100644 --- a/Jellyfin.Data/Events/Users/UserLockedOutEventArgs.cs +++ b/Jellyfin.Data/Events/Users/UserLockedOutEventArgs.cs @@ -2,10 +2,12 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -using Jellyfin.Database.Implementations.Entities; +#pragma warning disable SA1128 // Put constructor initializers on their own line namespace Jellyfin.Data.Events.Users { + using Jellyfin.Database.Implementations.Entities; + /// /// An event that occurs when a user is locked out. /// diff --git a/Jellyfin.Data/Events/Users/UserPasswordChangedEventArgs.cs b/Jellyfin.Data/Events/Users/UserPasswordChangedEventArgs.cs index 6286e6d2..97a8e4e9 100644 --- a/Jellyfin.Data/Events/Users/UserPasswordChangedEventArgs.cs +++ b/Jellyfin.Data/Events/Users/UserPasswordChangedEventArgs.cs @@ -2,10 +2,12 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -using Jellyfin.Database.Implementations.Entities; +#pragma warning disable SA1128 // Put constructor initializers on their own line namespace Jellyfin.Data.Events.Users { + using Jellyfin.Database.Implementations.Entities; + /// /// An event that occurs when a user's password has changed. /// diff --git a/Jellyfin.Data/Events/Users/UserUpdatedEventArgs.cs b/Jellyfin.Data/Events/Users/UserUpdatedEventArgs.cs index b8c6304d..506cc600 100644 --- a/Jellyfin.Data/Events/Users/UserUpdatedEventArgs.cs +++ b/Jellyfin.Data/Events/Users/UserUpdatedEventArgs.cs @@ -2,10 +2,12 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -using Jellyfin.Database.Implementations.Entities; +#pragma warning disable SA1128 // Put constructor initializers on their own line namespace Jellyfin.Data.Events.Users { + using Jellyfin.Database.Implementations.Entities; + /// /// An event that occurs when a user is updated. /// diff --git a/Jellyfin.Data/Queries/ActivityLogQuery.cs b/Jellyfin.Data/Queries/ActivityLogQuery.cs index 335894ea..c92eee73 100644 --- a/Jellyfin.Data/Queries/ActivityLogQuery.cs +++ b/Jellyfin.Data/Queries/ActivityLogQuery.cs @@ -2,14 +2,14 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +namespace Jellyfin.Data.Queries; + using System; using System.Collections.Generic; using Jellyfin.Data.Enums; using Jellyfin.Database.Implementations.Enums; using Microsoft.Extensions.Logging; -namespace Jellyfin.Data.Queries; - /// /// A class representing a query to the activity logs. /// diff --git a/Jellyfin.Data/Queries/DeviceQuery.cs b/Jellyfin.Data/Queries/DeviceQuery.cs index 8b6cd330..dd1e9d0d 100644 --- a/Jellyfin.Data/Queries/DeviceQuery.cs +++ b/Jellyfin.Data/Queries/DeviceQuery.cs @@ -2,28 +2,27 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +namespace Jellyfin.Data.Queries; + using System; -namespace Jellyfin.Data.Queries +/// +/// A query to retrieve devices. +/// +public class DeviceQuery : PaginatedQuery { /// - /// A query to retrieve devices. + /// Gets or sets the user id of the device. /// - public class DeviceQuery : PaginatedQuery - { - /// - /// Gets or sets the user id of the device. - /// - public Guid? UserId { get; set; } + public Guid? UserId { get; set; } - /// - /// Gets or sets the device id. - /// - public string? DeviceId { get; set; } + /// + /// Gets or sets the device id. + /// + public string? DeviceId { get; set; } - /// - /// Gets or sets the access token. - /// - public string? AccessToken { get; set; } - } + /// + /// Gets or sets the access token. + /// + public string? AccessToken { get; set; } } diff --git a/Jellyfin.Data/UserEntityExtensions.cs b/Jellyfin.Data/UserEntityExtensions.cs index 84d9aad7..17b5aa61 100644 --- a/Jellyfin.Data/UserEntityExtensions.cs +++ b/Jellyfin.Data/UserEntityExtensions.cs @@ -2,6 +2,8 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +namespace Jellyfin.Data; + using System; using System.ComponentModel; using System.Linq; @@ -9,8 +11,6 @@ using Jellyfin.Database.Implementations.Entities; using Jellyfin.Database.Implementations.Enums; using Jellyfin.Database.Implementations.Interfaces; -namespace Jellyfin.Data; - /// /// Contains extension methods for manipulation of entities. /// @@ -29,6 +29,7 @@ public static class UserEntityExtensions /// True if the user has the specified permission. public static bool HasPermission(this IHasPermissions entity, PermissionKind kind) { + ArgumentNullException.ThrowIfNull(entity); return entity.Permissions.FirstOrDefault(p => p.Kind == kind)?.Value ?? false; } @@ -40,6 +41,7 @@ public static class UserEntityExtensions /// The value to set. public static void SetPermission(this IHasPermissions entity, PermissionKind kind, bool value) { + ArgumentNullException.ThrowIfNull(entity); var currentPermission = entity.Permissions.FirstOrDefault(p => p.Kind == kind); if (currentPermission is null) { @@ -59,6 +61,7 @@ public static class UserEntityExtensions /// A string array containing the user's preferences. public static string[] GetPreference(this User entity, PreferenceKind preference) { + ArgumentNullException.ThrowIfNull(entity); var val = entity.Preferences.FirstOrDefault(p => p.Kind == preference)?.Value; return string.IsNullOrEmpty(val) ? Array.Empty() : val.Split(Delimiter); @@ -73,6 +76,7 @@ public static class UserEntityExtensions /// A {T} array containing the user's preference. public static T[] GetPreferenceValues(this User entity, PreferenceKind preference) { + ArgumentNullException.ThrowIfNull(entity); var val = entity.Preferences.FirstOrDefault(p => p.Kind == preference)?.Value; if (string.IsNullOrEmpty(val)) { @@ -111,6 +115,7 @@ public static class UserEntityExtensions /// The values. public static void SetPreference(this User entity, PreferenceKind preference, string[] values) { + ArgumentNullException.ThrowIfNull(entity); var value = string.Join(Delimiter, values); var currentPreference = entity.Preferences.FirstOrDefault(p => p.Kind == preference); if (currentPreference is null) @@ -132,6 +137,7 @@ public static class UserEntityExtensions /// The type of value. public static void SetPreference(this User entity, PreferenceKind preference, T[] values) { + ArgumentNullException.ThrowIfNull(entity); var value = string.Join(Delimiter, values); var currentPreference = entity.Preferences.FirstOrDefault(p => p.Kind == preference); if (currentPreference is null) @@ -151,6 +157,7 @@ public static class UserEntityExtensions /// True if the current time is within an access schedule, or there are no access schedules. public static bool IsParentalScheduleAllowed(this User entity) { + ArgumentNullException.ThrowIfNull(entity); return entity.AccessSchedules.Count == 0 || entity.AccessSchedules.Any(i => IsParentalScheduleAllowed(i, DateTime.UtcNow)); } @@ -173,6 +180,7 @@ public static class UserEntityExtensions // TODO: make these user configurable? public static void AddDefaultPermissions(this User entity) { + ArgumentNullException.ThrowIfNull(entity); entity.Permissions.Add(new Permission(PermissionKind.IsAdministrator, false)); entity.Permissions.Add(new Permission(PermissionKind.IsDisabled, false)); entity.Permissions.Add(new Permission(PermissionKind.IsHidden, true)); @@ -207,6 +215,7 @@ public static class UserEntityExtensions { foreach (var val in Enum.GetValues()) { + ArgumentNullException.ThrowIfNull(entity); entity.Preferences.Add(new Preference(val, string.Empty)); } } diff --git a/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.CodeAnalysis.dll b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.CodeAnalysis.dll new file mode 100644 index 0000000000000000000000000000000000000000..30bfbe7b3c0b2a231d4276207bbfa1fe64d06cad GIT binary patch literal 8704 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 literal 0 HcmV?d00001 diff --git a/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.CodeAnalysis.pdb b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.CodeAnalysis.pdb new file mode 100644 index 0000000000000000000000000000000000000000..213f6c5e66c2a9afa0a549ef16300d8dbc0c8861 GIT binary patch literal 9652 zcmbtacU%)m`=1TfihA~nVBr)ZMMXqkNuviaLBMk2k}MEOGn=5XQbelQ4-rp65mcmz z*bqJS&hmn%$es1|6uq;Z9=?{>^E}btY_bzV68-0w&u6ncJJ0tiGtbOC&+M>;!E6j* zfckZZR|J>snC!uH*S!F?U^#pc!^=5B97nxtg_jzVJFf&Fk^ul0mYs!al|-IE!bh+b zzO$y@%@Ts`@Oc6C955@0qWb{L$DCl9Emg$9a!YRZmKvuEp{HhT<~0s)JFgmbVKaOU zqWkUY(xofVY2^dU_VBWUS5J7^z>89DB)lLy9Sx;Dby0QHosv)0QFrPGpQ+dISFOK+ z)xZiqQT(77Xr-Q(!bd^U`4Djt-mk;^Fbo6ZF^Ze{4+H;m#K89>F>o7RYn>s|)Q;}t+dLI)D6aWx?$~$ zyPtcn7lPB_yBQ@m&p#e+&Pxye_O^fA>JuS1?F0BLa zUfnUrEsGusPKE+bnIA(DRG#jBJv>Nz7ch8J?ITo*g@i~=_EaX2i==J~38_>YFOgf3 zDp9{+y1?Wp!~{!@OSPng9Kj;BauHWTDitIyjlk7vLM7K#E+te<5otFMv+gm}akAqW z_cNkFbpzRf*|*xThuucK#R=U3f!TbAHE+M-zo)>MC(GX2YOMaJT!nzQjI zlbhO`Rz2Jy|2y*0y$kkn<9rY7sJ#&~uR6^)S+6JX1R{k@DUlK?H}q-})ZE?8lj%9x z-Fp(#!`*AV$aA9CB#{^49zSuinDCx5(QBdy4$I=no>L}!i3o3R!o$NmZX%H4@&pZ@ zKmd+2AQc*wh;WOCyxl|!4fGQ)pwOt58ns)JL@owgtsIw0L^$lhP>DQ=5Qj?QRJckD z6iT&3CRvKBDW4NlE$*h2YDl1z;_7&XN(NYREk~&VD#%kJBMf?bK((1(ZX}^fmWZH( z{(lVUU^)@bu5yi3sv8zOx$Y(=pwAH?Qo!QyT)8~Ta2O?QvT$X@q{OlR)Zd~+; zb&m}f#0Cg>tVo`qbB)JmYdk+&M@|&mA*L;acr63jYY9?DGgV~`wQ zJM`icPz*qL>Y}mutgh_BhI9Tey43INz#5NeCP$cvtCTeM!^)O&P^<)P1$pZp++lHQ zUMueN$tC`u!RiH`m{OAo{P>{aznde2*FEvu7=7Mfw#V^s2Pj0MP~%Ki9H~~}BFYhw zu5ZsTEdr-8Fg%NMY}os^;gx5zK2=Zm*k=k2RI8Ot>W?Fpz&VokZCdI6KCg-?Cc@Nx zAo68RNag(hX;hmZuuPc<2{;`~>7l^%hrUlUh++ueg3|zqVvjxk?zayXz~h4|E1upQ)91@vB8er4LGjEk�c~Ek0bz)Nbe0J^1zS;%-)L9Sou+ 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 W7?_6H!Q(lpQwG|=JC@QQ?D2mDOKI=` literal 0 HcmV?d00001 diff --git a/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.CodeAnalysis.xml b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.CodeAnalysis.xml new file mode 100644 index 00000000..d781356f --- /dev/null +++ b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.CodeAnalysis.xml @@ -0,0 +1,24 @@ + + + + Jellyfin.CodeAnalysis + + + + + Analyzer to detect sync disposal of async-created IAsyncDisposable objects. + + + + + Diagnostic descriptor for sync disposal of async-created IAsyncDisposable objects. + + + + + + + + + + diff --git a/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.deps.json b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.deps.json new file mode 100644 index 00000000..e02ef60f --- /dev/null +++ b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.deps.json @@ -0,0 +1,461 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v10.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v10.0": { + "Jellyfin.Data/10.12.0": { + "dependencies": { + "Jellyfin.CodeAnalysis": "1.0.0", + "Jellyfin.Database.Implementations": "10.11.0", + "Jellyfin.Sdk": "2025.10.21", + "Microsoft.Extensions.Logging": "10.0.3" + }, + "runtime": { + "Jellyfin.Data.dll": {} + } + }, + "Jellyfin.Sdk/2025.10.21": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1", + "Microsoft.Kiota.Http.HttpClientLibrary": "1.20.1", + "Microsoft.Kiota.Serialization.Form": "1.20.1", + "Microsoft.Kiota.Serialization.Json": "1.20.1", + "Microsoft.Kiota.Serialization.Multipart": "1.20.1", + "Microsoft.Kiota.Serialization.Text": "1.20.1" + }, + "runtime": { + "lib/net8.0/Jellyfin.Sdk.dll": { + "assemblyVersion": "2025.10.21.0", + "fileVersion": "2025.10.21.0" + } + } + }, + "Microsoft.EntityFrameworkCore/10.0.3": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.3", + "Microsoft.Extensions.Caching.Memory": "10.0.3", + "Microsoft.Extensions.Logging": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.EntityFrameworkCore.dll": { + "assemblyVersion": "10.0.3.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/10.0.3": { + "runtime": { + "lib/net10.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "assemblyVersion": "10.0.3.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.EntityFrameworkCore.Relational/10.0.3": { + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.3", + "Microsoft.Extensions.Caching.Memory": "10.0.3", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", + "Microsoft.Extensions.Logging": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "assemblyVersion": "10.0.3.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Caching.Abstractions/10.0.3": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Caching.Memory/10.0.3": { + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.3", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.3", + "Microsoft.Extensions.Logging.Abstractions": "10.0.3", + "Microsoft.Extensions.Options": "10.0.3", + "Microsoft.Extensions.Primitives": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Caching.Memory.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Configuration.Abstractions/10.0.3": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.DependencyInjection/10.0.3": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.3": { + "runtime": { + "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Logging/10.0.3": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.3", + "Microsoft.Extensions.Logging.Abstractions": "10.0.3", + "Microsoft.Extensions.Options": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.3": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Options/10.0.3": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.3", + "Microsoft.Extensions.Primitives": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Primitives/10.0.3": { + "runtime": { + "lib/net10.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Kiota.Abstractions/1.20.1": { + "dependencies": { + "Std.UriTemplate": "2.0.5" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Abstractions.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.Kiota.Http.HttpClientLibrary/1.20.1": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Http.HttpClientLibrary.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.Kiota.Serialization.Form/1.20.1": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Serialization.Form.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.Kiota.Serialization.Json/1.20.1": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Serialization.Json.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.Kiota.Serialization.Multipart/1.20.1": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Serialization.Multipart.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.Kiota.Serialization.Text/1.20.1": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Serialization.Text.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Polly/8.6.5": { + "dependencies": { + "Polly.Core": "8.6.5" + }, + "runtime": { + "lib/net6.0/Polly.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.6.5.5194" + } + } + }, + "Polly.Core/8.6.5": { + "runtime": { + "lib/net8.0/Polly.Core.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.6.5.5194" + } + } + }, + "Std.UriTemplate/2.0.5": { + "runtime": { + "lib/net5.0/Std.UriTemplate.dll": { + "assemblyVersion": "2.0.5.0", + "fileVersion": "2.0.5.0" + } + } + }, + "Jellyfin.CodeAnalysis/1.0.0": { + "dependencies": { + "Jellyfin.Sdk": "2025.10.21" + }, + "runtime": { + "Jellyfin.CodeAnalysis.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "Jellyfin.Database.Implementations/10.11.0": { + "dependencies": { + "Jellyfin.CodeAnalysis": "1.0.0", + "Microsoft.EntityFrameworkCore.Relational": "10.0.3", + "Polly": "8.6.5" + }, + "runtime": { + "Jellyfin.Database.Implementations.dll": { + "assemblyVersion": "10.12.0.0", + "fileVersion": "10.12.0.0" + } + } + } + } + }, + "libraries": { + "Jellyfin.Data/10.12.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Jellyfin.Sdk/2025.10.21": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1pG60suEiV3v77zqLd5fO9S8m8qryxj9mZYb24Me1XgSXlaCIt0SC1V1sbFKyoG70Q3n915wT4Ko4BUanorRug==", + "path": "jellyfin.sdk/2025.10.21", + "hashPath": "jellyfin.sdk.2025.10.21.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-CDEImwD4A7BseABJMCpLZnhfFjmPY/bHwhhS70elc6gLI/bYUEOhxWt7PmaNGYGhIEzOnStlCy5QcVb+8dod5Q==", + "path": "microsoft.entityframeworkcore/10.0.3", + "hashPath": "microsoft.entityframeworkcore.10.0.3.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Abstractions/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c7Uoz381xnMHNBRB8eHRhGgzUtXbgddlbODhwZRrTSzZWDharp3RkJsFwhxyESbeXhCqmML7VdvjMQ7uu+HreA==", + "path": "microsoft.entityframeworkcore.abstractions/10.0.3", + "hashPath": "microsoft.entityframeworkcore.abstractions.10.0.3.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Relational/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Pmh60OK9neVr/M0FJwm9hlzm2bD4Kd65SID8E6SP5c90tExNgXwORrlEWl0oGU/ig9ifpNN4PSpIrnHNozlT5w==", + "path": "microsoft.entityframeworkcore.relational/10.0.3", + "hashPath": "microsoft.entityframeworkcore.relational.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.Abstractions/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5dtXBvI8t3z8pF4tB38JYgi/enCL/DwSXxpqShgFz3SHJ7IzqFIMs6Gu5ik8sNZzcO9qQs3xIDpB3vDamkYG+Q==", + "path": "microsoft.extensions.caching.abstractions/10.0.3", + "hashPath": "microsoft.extensions.caching.abstractions.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.Memory/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-No4fVh0z30SWqiWFRoA4PNdrEco6OjXvCqRFvlmRgDQqqks2bRDdeavUgWEiAX153ZAwW9loUgbxcvuP4NKQLg==", + "path": "microsoft.extensions.caching.memory/10.0.3", + "hashPath": "microsoft.extensions.caching.memory.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Abstractions/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-xVDHL0+SIgemfh95fTO9cGLe17TWv/ZP0n7m01z8X6pzt2DmQpucioWR/mYZA1sRlkWnkXzfl0JweLNWmE9WMg==", + "path": "microsoft.extensions.configuration.abstractions/10.0.3", + "hashPath": "microsoft.extensions.configuration.abstractions.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2DLOmC0EkB2smVK8lPP1PIKEgL1arE3CMp9XSIQB/Y7ev5nnnyuM/PizKJ6QfLD08QCYoopSC9SFdbYglDomYg==", + "path": "microsoft.extensions.dependencyinjection/10.0.3", + "hashPath": "microsoft.extensions.dependencyinjection.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bwGMrRcAMWx2s/RDgja97p27rxSz2pEQW0+rX5cWAUWVETVJ/eyxGfjAl8vuG5a+lckWmPIE+vcuaZNVB5YDdw==", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.3", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-8D9Er1cGXNjNDIB+VLBNHn386L5ls2FoiG9a6o12gyn+GG3w6jdfUhzT8dtBnKcevE7/fsVA8MS3FBgFfClFtQ==", + "path": "microsoft.extensions.logging/10.0.3", + "hashPath": "microsoft.extensions.logging.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lxl0WLk7ROgBFAsjcOYjQ8/DVK+VMszxGBzUhgtQmAsTNldLL5pk9NG/cWTsXHq0lUhUEAtZkEE7jOGOA8bGKQ==", + "path": "microsoft.extensions.logging.abstractions/10.0.3", + "hashPath": "microsoft.extensions.logging.abstractions.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Options/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hU6WzGTPvPoLA2ng1ILvWQb3g0qORdlHNsxI8IcPLumJb3suimYUl+bbDzdo1V4KFsvVhnMWzysHpKbZaoDQPQ==", + "path": "microsoft.extensions.options/10.0.3", + "hashPath": "microsoft.extensions.options.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GEcpTwo7sUoLGGNTqV1FZEuL+tTD9m81NX/mh099dqGNna07/UGZShKQNZRw4hv6nlliSUwYQgSYc7OR99Jufg==", + "path": "microsoft.extensions.primitives/10.0.3", + "hashPath": "microsoft.extensions.primitives.10.0.3.nupkg.sha512" + }, + "Microsoft.Kiota.Abstractions/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bv1n2gnxA/O+1a26h3YB6bgcc3ZSLCjRumMh7sVkFmksLaVonhcrJpUrEtBlnnYPrnHwzm/1BYQnYjCVG7A+fA==", + "path": "microsoft.kiota.abstractions/1.20.1", + "hashPath": "microsoft.kiota.abstractions.1.20.1.nupkg.sha512" + }, + "Microsoft.Kiota.Http.HttpClientLibrary/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pQzs+9n3QAG/FKFwgIaRE0EqOXfW3rWliOdk9XZbghyRdeAtiQjSbJbpascdZlf7uatLpPYA145q6MYpLxvsgA==", + "path": "microsoft.kiota.http.httpclientlibrary/1.20.1", + "hashPath": "microsoft.kiota.http.httpclientlibrary.1.20.1.nupkg.sha512" + }, + "Microsoft.Kiota.Serialization.Form/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-n7izb8GZSoatmFSpMaHmh78U3oW+YdYb2gDwhkG86COHuiGWV9s0BKBeUlFakAV00CDwaH9iFqxCQ0veYVkG1A==", + "path": "microsoft.kiota.serialization.form/1.20.1", + "hashPath": "microsoft.kiota.serialization.form.1.20.1.nupkg.sha512" + }, + "Microsoft.Kiota.Serialization.Json/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4MumZe45DI/o1YP+hq7wyArOHDhjkSiu14ysN4xWKe6vwlu43BUYydA/yT0CtjoPwbFW/6jfx/NVSvM3DzBzbg==", + "path": "microsoft.kiota.serialization.json/1.20.1", + "hashPath": "microsoft.kiota.serialization.json.1.20.1.nupkg.sha512" + }, + "Microsoft.Kiota.Serialization.Multipart/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tP7ZxA1zsIi3FE8CHwfA5JnzlW1NYld+LpFihFq+S7IXFDv1x37I968lPKGIdEpWW9vWacuqDQVKIyJiKZ257A==", + "path": "microsoft.kiota.serialization.multipart/1.20.1", + "hashPath": "microsoft.kiota.serialization.multipart.1.20.1.nupkg.sha512" + }, + "Microsoft.Kiota.Serialization.Text/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Cue4l9AeU0WgL2CdUW8K58BMwQOyiHgT7aCov2qGEKpmpeWQj7cmAWCgxDfPHYPkZtz1Ccbrw4/6KrDgCmrC3Q==", + "path": "microsoft.kiota.serialization.text/1.20.1", + "hashPath": "microsoft.kiota.serialization.text.1.20.1.nupkg.sha512" + }, + "Polly/8.6.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VqtW2ZE/ALvQMAH1cQY3qZ2cF2OXa3oe/HKMdOv6Q02HCoEW0rsFNfcBONXlHBe1TnjWW1vdRxBEkPeq0/2FHA==", + "path": "polly/8.6.5", + "hashPath": "polly.8.6.5.nupkg.sha512" + }, + "Polly.Core/8.6.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-t+sUVrIwvo7UmsgHGgOG9F0GDZSRIm47u2ylH17Gvcv1q5hNEwgD5GoBlFyc0kh/pebmPyrAgvGsR/65ZBaXlg==", + "path": "polly.core/8.6.5", + "hashPath": "polly.core.8.6.5.nupkg.sha512" + }, + "Std.UriTemplate/2.0.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-PtqPdWNBObRcDHjyjbgOz2XoCJQaiA+HNDPQve/O7yGCkospfHDCuH9ULVx1msImwHHG+uhpDjiZX7bpLN/cnw==", + "path": "std.uritemplate/2.0.5", + "hashPath": "std.uritemplate.2.0.5.nupkg.sha512" + }, + "Jellyfin.CodeAnalysis/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Jellyfin.Database.Implementations/10.11.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.dll b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.dll new file mode 100644 index 0000000000000000000000000000000000000000..e95bba9b2e9081a97cb41c998d991e08c9ca2ee6 GIT binary patch literal 18944 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 literal 0 HcmV?d00001 diff --git a/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.pdb b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.pdb new file mode 100644 index 0000000000000000000000000000000000000000..207eaf99e1b2d8bfd82d001dbdce0b86392c8507 GIT binary patch literal 17540 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 C`Zpi| literal 0 HcmV?d00001 diff --git a/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.xml b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.xml new file mode 100644 index 00000000..ecc10cd2 --- /dev/null +++ b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Data.xml @@ -0,0 +1,1198 @@ + + + + Jellyfin.Data + + + + + Attribute to specify that the enum value is to be ignored when generating the openapi spec. + + + + + A dto representing custom options for a device. + + + + + Gets or sets the id. + + + + + Gets or sets the device id. + + + + + Gets or sets the custom name. + + + + + Activity log sorting options. + + + + + Sort by name. + + + + + Sort by overview. + + + + + Sort by short overview. + + + + + Sort by type. + + + + + Sort by date. + + + + + Sort by username. + + + + + Sort by severity. + + + + + An enum representing formats of spatial audio. + + + + + None audio spatial format. + + + + + Dolby Atmos audio spatial format. + + + + + DTS:X audio spatial format. + + + + + The base item kind. + + + This enum is generated from all classes that inherit from BaseItem. + + + + + Item is aggregate folder. + + + + + Item is audio. + + + + + Item is audio book. + + + + + Item is base plugin folder. + + + + + Item is book. + + + + + Item is box set. + + + + + Item is channel. + + + + + Item is channel folder item. + + + + + Item is collection folder. + + + + + Item is episode. + + + + + Item is folder. + + + + + Item is genre. + + + + + Item is manual playlists folder. + + + + + Item is movie. + + + + + Item is a live tv channel. + + + + + Item is a live tv program. + + + + + Item is music album. + + + + + Item is music artist. + + + + + Item is music genre. + + + + + Item is music video. + + + + + Item is person. + + + + + Item is photo. + + + + + Item is photo album. + + + + + Item is playlist. + + + + + Item is playlist folder. + + + + + Item is program. + + + + + Item is recording. + + + Manually added. + + + + + Item is season. + + + + + Item is series. + + + + + Item is studio. + + + + + Item is trailer. + + + + + Item is live tv channel. + + + Type is overridden. + + + + + Item is live tv program. + + + Type is overridden. + + + + + Item is user root folder. + + + + + Item is user view. + + + + + Item is video. + + + + + Item is year. + + + + + Collection type. + + + + + Unknown collection. + + + + + Movies collection. + + + + + Tv shows collection. + + + + + Music collection. + + + + + Music videos collection. + + + + + Trailers collection. + + + + + Home videos collection. + + + + + Box sets collection. + + + + + Books collection. + + + + + Photos collection. + + + + + Live tv collection. + + + + + Playlists collection. + + + + + Folders collection. + + + + + Tv show series collection. + + + + + Tv genres collection. + + + + + Tv genre collection. + + + + + Tv latest collection. + + + + + Tv next up collection. + + + + + Tv resume collection. + + + + + Tv favorite series collection. + + + + + Tv favorite episodes collection. + + + + + Latest movies collection. + + + + + Movies to resume collection. + + + + + Movie movie collection. + + + + + Movie collections collection. + + + + + Movie favorites collection. + + + + + Movie genres collection. + + + + + Movie genre collection. + + + + + These represent sort orders. + + + + + Default sort order. + + + + + The aired episode order. + + + + + The album. + + + + + The album artist. + + + + + The artist. + + + + + The date created. + + + + + The official rating. + + + + + The date played. + + + + + The premiere date. + + + + + The start date. + + + + + The sort name. + + + + + The name. + + + + + The random. + + + + + The runtime. + + + + + The community rating. + + + + + The production year. + + + + + The play count. + + + + + The critic rating. + + + + + The IsFolder boolean. + + + + + The IsUnplayed boolean. + + + + + The IsPlayed boolean. + + + + + The series sort. + + + + + The video bitrate. + + + + + The air time. + + + + + The studio. + + + + + The IsFavouriteOrLiked boolean. + + + + + The last content added date. + + + + + The series last played date. + + + + + The parent index number. + + + + + The index number. + + + + + Media streaming protocol. + Lowercase for backwards compatibility. + + + + + HTTP. + + + + + HTTP Live Streaming. + + + + + Media types. + + + + + Unknown media type. + + + + + Video media. + + + + + Audio media. + + + + + Photo media. + + + + + Book media. + + + + + The person kind. + + + + + An unknown person kind. + + + + + A person whose profession is acting on the stage, in films, or on television. + + + + + A person who supervises the actors and other staff in a film, play, or similar production. + + + + + A person who writes music, especially as a professional occupation. + + + + + A writer of a book, article, or document. Can also be used as a generic term for music writer if there is a lack of specificity. + + + + + A well-known actor or other performer who appears in a work in which they do not have a regular role. + + + + + A person responsible for the financial and managerial aspects of the making of a film or broadcast or for staging a play, opera, etc. + + + + + A person who directs the performance of an orchestra or choir. + + + + + A person who writes the words to a song or musical. + + + + + A person who adapts a musical composition for performance. + + + + + An audio engineer who performed a general engineering role. + + + + + An engineer responsible for using a mixing console to mix a recorded track into a single piece of music suitable for release. + + + + + A person who remixed a recording by taking one or more other tracks, substantially altering them and mixing them together with other material. + + + + + A person who created the material. + + + + + A person who was the artist. + + + + + A person who was the album artist. + + + + + A person who was the author. + + + + + A person who was the illustrator. + + + + + A person responsible for drawing the art. + + + + + A person responsible for inking the pencil art. + + + + + A person responsible for applying color to drawings. + + + + + A person responsible for drawing text and speech bubbles. + + + + + A person responsible for drawing the cover art. + + + + + A person contributing to a resource by revising or elucidating the content, e.g., adding an introduction, notes, or other critical matter. + An editor may also prepare a resource for production, publication, or distribution. + + + + + A person who renders a text from one language into another. + + + + + Enum SyncPlayAccessRequirementType. + + + + + User must have access to SyncPlay, in some form. + + + + + User must be able to create groups. + + + + + User must be able to join groups. + + + + + User must be in a group. + + + + + An enum representing an unrated item. + + + + + A movie. + + + + + A trailer. + + + + + A series. + + + + + Music. + + + + + A book. + + + + + A live TV channel. + + + + + A live TV program. + + + + + Channel content. + + + + + Another type, not covered by the other fields. + + + + + An enum representing video ranges. + + + + + Unknown video range. + + + + + SDR video range. + + + + + HDR video range. + + + + + An enum representing types of video ranges. + + + + + Unknown video range type. + + + + + SDR video range type (8bit). + + + + + HDR10 video range type (10bit). + + + + + HLG video range type (10bit). + + + + + Dolby Vision video range type (10bit encoded / 12bit remapped). + + + + + Dolby Vision with HDR10 video range fallback (10bit). + + + + + Dolby Vision with HLG video range fallback (10bit). + + + + + Dolby Vision with SDR video range fallback (8bit / 10bit). + + + + + Dolby Vision with Enhancment Layer (Profile 7). + + + + + Dolby Vision and HDR10+ Metadata coexists. + + + + + Dolby Vision with Enhancment Layer (Profile 7) and HDR10+ Metadata coexists. + + + + + Dolby Vision with invalid configuration. e.g. Profile 8 compat id 6. + When using this range, the server would assume the video is still HDR10 after removing the Dolby Vision metadata. + + + + + HDR10+ video range type (10bit to 16bit). + + + + + Provides a generic EventArgs subclass that can hold any kind of object. + + The type of this event. + + + + Initializes a new instance of the class. + + The argument. + + + + Gets the argument. + + The argument. + + + + An event that occurs when there is a pending restart. + + + + + An event that occurs when a user is created. + + + + + Initializes a new instance of the class. + + The user. + + + + An event that occurs when a user is deleted. + + + + + Initializes a new instance of the class. + + The user. + + + + An event that occurs when a user is locked out. + + + + + Initializes a new instance of the class. + + The user. + + + + An event that occurs when a user's password has changed. + + + + + Initializes a new instance of the class. + + The user. + + + + An event that occurs when a user is updated. + + + + + Initializes a new instance of the class. + + The user. + + + + A class representing a query to the activity logs. + + + + + Gets or sets a value indicating whether to take entries with a user id. + + + + + Gets or sets the minimum date to query for. + + + + + Gets or sets the maximum date to query for. + + + + + Gets or sets the name filter. + + + + + Gets or sets the overview filter. + + + + + Gets or sets the short overview filter. + + + + + Gets or sets the type filter. + + + + + Gets or sets the item filter. + + + + + Gets or sets the username filter. + + + + + Gets or sets the log level filter. + + + + + Gets or sets the result ordering. + + + + + A query to retrieve devices. + + + + + Gets or sets the user id of the device. + + + + + Gets or sets the device id. + + + + + Gets or sets the access token. + + + + + An abstract class for paginated queries. + + + + + Gets or sets the index to start at. + + + + + Gets or sets the maximum number of items to include. + + + + + Contains extension methods for manipulation of entities. + + + + + The values being delimited here are Guids, so commas work as they do not appear in Guids. + + + + + Checks whether the user has the specified permission. + + The entity to update. + The permission kind. + True if the user has the specified permission. + + + + Sets the given permission kind to the provided value. + + The entity to update. + The permission kind. + The value to set. + + + + Gets the user's preferences for the given preference kind. + + The entity to update. + The preference kind. + A string array containing the user's preferences. + + + + Gets the user's preferences for the given preference kind. + + The entity to update. + The preference kind. + Type of preference. + A {T} array containing the user's preference. + + + + Sets the specified preference to the given value. + + The entity to update. + The preference kind. + The values. + + + + Sets the specified preference to the given value. + + The entity to update. + The preference kind. + The values. + The type of value. + + + + Checks whether this user is currently allowed to use the server. + + The entity to update. + True if the current time is within an access schedule, or there are no access schedules. + + + + Checks whether the provided folder is in this user's grouped folders. + + The entity to update. + The Guid of the folder. + True if the folder is in the user's grouped folders. + + + + Initializes the default permissions for a user. Should only be called on user creation. + + The entity to update. + + + + Initializes the default preferences. Should only be called on user creation. + + The entity to update. + + + diff --git a/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Database.Implementations.dll b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Database.Implementations.dll new file mode 100644 index 0000000000000000000000000000000000000000..cf07473787e49572b1edbb82a1b22242c71dfcdf GIT binary patch literal 218624 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 literal 0 HcmV?d00001 diff --git a/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Database.Implementations.pdb b/Jellyfin.Data/bin/Debug/net10.0/Jellyfin.Database.Implementations.pdb new file mode 100644 index 0000000000000000000000000000000000000000..2e758da734b1f53197a6079096995df6b7c550ca GIT binary patch literal 66792 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 + + + Jellyfin.Database.Implementations + + + + + The custom value option for custom database providers. + + + + + Gets or sets the key of the value. + + + + + Gets or sets the value. + + + + + Defines the options for a custom database connector. + + + + + Gets or sets the Plugin name to search for database providers. + + + + + Gets or sets the plugin assembly to search for providers. + + + + + Gets or sets the connection string for the custom database provider. + + + + + Gets or sets the list of extra options for the custom provider. + + + + + Options to configure jellyfins managed database. + + + + + Gets or Sets the type of database jellyfin should use. + + + + + Gets or sets the options required to use a custom database provider. + + + + + Gets or Sets the kind of locking behavior jellyfin should perform. Possible options are "NoLock", "Pessimistic", "Optimistic". + Defaults to "NoLock". + + + + + Defines all possible methods for locking database access for concurrent queries. + + + + + Defines that no explicit application level locking for reads and writes should be done and only provider specific locking should be relied on. + + + + + Defines a behavior that always blocks all reads while any one write is done. + + + + + Defines that all writes should be attempted and when fail should be retried. + + + + + An entity representing a user's access schedule. + + + + + Initializes a new instance of the class. + + The day of the week. + The start hour. + The end hour. + The associated user's id. + + + + Gets the id of this instance. + + + Identity, Indexed, Required. + + + + + Gets the id of the associated user. + + + + + Gets or sets the day of week. + + The day of week. + + + + Gets or sets the start hour. + + The start hour. + + + + Gets or sets the end hour. + + The end hour. + + + + An entity referencing an activity log entry. + + + + + Initializes a new instance of the class. + Public constructor with required data. + + The name. + The type. + The user id. + + + + Gets the identity of this instance. + + + + + Gets or sets the name. + + + Required, Max length = 512. + + + + + Gets or sets the overview. + + + Max length = 512. + + + + + Gets or sets the short overview. + + + Max length = 512. + + + + + Gets or sets the type. + + + Required, Max length = 256. + + + + + Gets or sets the user id. + + + Required. + + + + + Gets or sets the item id. + + + Max length = 256. + + + + + Gets or sets the date created. This should be in UTC. + + + Required. + + + + + Gets or sets the log severity. Default is . + + + Required. + + + + + Gets the concurrency token used for optimistic concurrency control. + + + + + Updates the concurrency token before saving changes. + + + + + Represents the relational information for an . + + + + + Gets or Sets the AncestorId. + + + + + Gets or Sets the related BaseItem. + + + + + Gets or Sets the ParentItem. + + + + + Gets or Sets the Child item. + + + + + Provides information about an Attachment to an . + + + + + Gets or Sets the reference. + + + + + Gets or Sets the reference. + + + + + Gets or Sets the index within the source file. + + + + + Gets or Sets the codec of the attachment. + + + + + Gets or Sets the codec tag of the attachment. + + + + + Gets or Sets the comment of the attachment. + + + + + Gets or Sets the filename of the attachment. + + + + + Gets or Sets the attachments mimetype. + + + + + Enum TrailerTypes. + + + + + Gets or Sets. + + + + + Gets or Sets the path to the original image. + + + + + Gets or Sets the time the image was last modified. + + + + + Gets or Sets the imagetype. + + + + + Gets or Sets the width of the original image. + + + + + Gets or Sets the height of the original image. + + + + + Gets or Sets the blurhash. + + + + + Gets or Sets the reference id to the BaseItem. + + + + + Gets or Sets the referenced Item. + + + + + Enum MetadataFields. + + + + + Gets or Sets Numerical ID of this enumerable. + + + + + Gets or Sets all referenced . + + + + + Gets or Sets all referenced . + + + + + Represents a Key-Value relation of an BaseItem's provider. + + + + + Gets or Sets the reference ItemId. + + + + + Gets or Sets the reference BaseItem. + + + + + Gets or Sets the ProvidersId. + + + + + Gets or Sets the Providers Value. + + + + + Enum TrailerTypes. + + + + + Gets or Sets Numerical ID of this enumerable. + + + + + Gets or Sets all referenced . + + + + + Gets or Sets all referenced . + + + + + The Chapter entity. + + + + + Gets or Sets the reference id. + + + + + Gets or Sets the reference. + + + + + Gets or Sets the chapters index in Item. + + + + + Gets or Sets the position within the source file. + + + + + Gets or Sets the common name. + + + + + Gets or Sets the image path. + + + + + Gets or Sets the time the image was last modified. + + + + + An entity that represents a user's custom display preferences for a specific item. + + + + + Initializes a new instance of the class. + + The user id. + The item id. + The client. + The preference key. + The preference value. + + + + Gets the Id. + + + Required. + + + + + Gets or sets the user Id. + + + Required. + + + + + Gets or sets the id of the associated item. + + + Required. + + + + + Gets or sets the client string. + + + Required. Max Length = 32. + + + + + Gets or sets the preference key. + + + Required. + + + + + Gets or sets the preference value. + + + Required. + + + + + An entity representing a user's display preferences. + + + + + Initializes a new instance of the class. + + The user's id. + The item id. + The client string. + + + + Gets the Id. + + + Required. + + + + + Gets or sets the user Id. + + + Required. + + + + + Gets or sets the id of the associated item. + + + Required. + + + + + Gets or sets the client string. + + + Required. Max Length = 32. + + + + + Gets or sets a value indicating whether to show the sidebar. + + + Required. + + + + + Gets or sets a value indicating whether to show the backdrop. + + + Required. + + + + + Gets or sets the scroll direction. + + + Required. + + + + + Gets or sets what the view should be indexed by. + + + + + Gets or sets the length of time to skip forwards, in milliseconds. + + + Required. + + + + + Gets or sets the length of time to skip backwards, in milliseconds. + + + Required. + + + + + Gets or sets the Chromecast Version. + + + Required. + + + + + Gets or sets a value indicating whether the next video info overlay should be shown. + + + Required. + + + + + Gets or sets the dashboard theme. + + + + + Gets or sets the tv home screen. + + + + + Gets the home sections. + + + + + An entity representing a group. + + + + + Initializes a new instance of the class. + + The name of the group. + + + + Gets the id of this group. + + + Identity, Indexed, Required. + + + + + Gets or sets the group's name. + + + Required, Max length = 255. + + + + + + + + Gets a collection containing the group's permissions. + + + + + Gets a collection containing the group's preferences. + + + + + + + + An entity representing a section on the user's home page. + + + + + Gets the id. + + + Identity. Required. + + + + + Gets or sets the Id of the associated display preferences. + + + Required. + + + + + Gets or sets the order. + + + Required. + + + + + Gets or sets the type. + + + Required. + + + + + An entity representing an image. + + + + + Initializes a new instance of the class. + + The path. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets the user id. + + + + + Gets or sets the path of the image. + + + Required. + + + + + Gets or sets the date last modified. + + + Required. + + + + + Enum ImageType. + + + + + The primary. + + + + + The art. + + + + + The backdrop. + + + + + The banner. + + + + + The logo. + + + + + The thumb. + + + + + The disc. + + + + + The box. + + + + + The screenshot. + + + This enum value is obsolete. + XmlSerializer does not serialize/deserialize objects that are marked as [Obsolete]. + + + + + The menu. + + + + + The chapter image. + + + + + The box rear. + + + + + The user profile image. + + + + + An entity that represents a user's display preferences for a specific item. + + + + + Initializes a new instance of the class. + + The user id. + The item id. + The client. + + + + Gets the id. + + + Required. + + + + + Gets or sets the user Id. + + + Required. + + + + + Gets or sets the id of the associated item. + + + Required. + + + + + Gets or sets the client string. + + + Required. Max Length = 32. + + + + + Gets or sets the view type. + + + Required. + + + + + Gets or sets a value indicating whether the indexing should be remembered. + + + Required. + + + + + Gets or sets what the view should be indexed by. + + + + + Gets or sets a value indicating whether the sorting type should be remembered. + + + Required. + + + + + Gets or sets what the view should be sorted by. + + + Required. + + + + + Gets or sets the sort order. + + + Required. + + + + + Represents an ItemValue for a BaseItem. + + + + + Gets or Sets the ItemValueId. + + + + + Gets or Sets the Type. + + + + + Gets or Sets the Value. + + + + + Gets or Sets the sanitized Value. + + + + + Gets or Sets all associated BaseItems. + + + + + Mapping table for the ItemValue BaseItem relation. + + + + + Gets or Sets the ItemId. + + + + + Gets or Sets the ItemValueId. + + + + + Gets or Sets the referenced . + + + + + Gets or Sets the referenced . + + + + + Provides the Value types for an . + + + + + Artists. + + + + + Album. + + + + + Genre. + + + + + Studios. + + + + + Tags. + + + + + InheritedTags. + + + + + Keyframe information for a specific file. + + + + + Gets or Sets the ItemId. + + + + + Gets or sets the total duration of the stream in ticks. + + + + + Gets or sets the keyframes in ticks. + + + + + Gets or sets the item reference. + + + + + An entity representing artwork. + + + + + Initializes a new instance of the class. + + The path. + The kind of art. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the path. + + + Required, Max length = 65535. + + + + + Gets or sets the kind of artwork. + + + Required. + + + + + + + + + + + An entity representing a book. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets a collection containing the metadata for this book. + + + + + + + + An entity containing metadata for a book. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets or sets the ISBN. + + + + + Gets a collection of the publishers for this book. + + + + + + + + An entity representing a chapter. + + + + + Initializes a new instance of the class. + + ISO-639-3 3-character language codes. + The start time for this chapter. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Max length = 1024. + + + + + Gets or sets the language. + + + Required, Min length = 3, Max length = 3 + ISO-639-3 3-character language codes. + + + + + Gets or sets the start time. + + + Required. + + + + + Gets or sets the end time. + + + + + + + + + + + An entity representing a collection. + + + + + Initializes a new instance of the class. + + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Max length = 1024. + + + + + + + + Gets a collection containing this collection's items. + + + + + + + + An entity representing a collection item. + + + + + Initializes a new instance of the class. + + The library item. + + + + Gets or sets the id. + + + Identity, Indexed, Required. + + + + + + + + Gets or sets the library item. + + + Required. + + + + + Gets or sets the next item in the collection. + + + TODO check if this properly updated Dependent and has the proper principal relationship. + + + + + Gets or sets the previous item in the collection. + + + TODO check if this properly updated Dependent and has the proper principal relationship. + + + + + + + + An entity representing a company. + + + + + Initializes a new instance of the class. + + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + + + + Gets a collection containing the metadata. + + + + + Gets a collection containing this company's child companies. + + + + + + + + + + + An entity holding metadata for a . + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets or sets the description. + + + Max length = 65535. + + + + + Gets or sets the headquarters. + + + Max length = 255. + + + + + Gets or sets the country code. + + + Max length = 2. + + + + + Gets or sets the homepage. + + + Max length = 1024. + + + + + An entity representing a custom item. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets a collection containing the metadata for this item. + + + + + + + + An entity containing metadata for a custom item. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + An entity representing an episode. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets or sets the episode number. + + + + + + + + Gets a collection containing the metadata for this episode. + + + + + An entity containing metadata for an . + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets or sets the outline. + + + Max length = 1024. + + + + + Gets or sets the plot. + + + Max length = 65535. + + + + + Gets or sets the tagline. + + + Max length = 1024. + + + + + An entity representing a genre. + + + + + Initializes a new instance of the class. + + The name. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Indexed, Required, Max length = 255. + + + + + + + + + + + An abstract class that holds metadata. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the title. + + + Required, Max length = 1024. + + + + + Gets or sets the original title. + + + Max length = 1024. + + + + + Gets or sets the sort title. + + + Max length = 1024. + + + + + Gets or sets the language. + + + Required, Min length = 3, Max length = 3. + ISO-639-3 3-character language codes. + + + + + Gets or sets the release date. + + + + + Gets the date added. + + + Required. + + + + + Gets or sets the date modified. + + + Required. + + + + + + + + Gets a collection containing the person roles for this item. + + + + + Gets a collection containing the genres for this item. + + + + + + + + Gets a collection containing the ratings for this item. + + + + + Gets a collection containing the metadata sources for this item. + + + + + + + + An entity representing a library. + + + + + Initializes a new instance of the class. + + The name of the library. + The path of the library. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Required, Max length = 128. + + + + + Gets or sets the root path of the library. + + + Required. + + + + + + + + + + + An entity representing a library item. + + + + + Initializes a new instance of the class. + + The library of this item. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets the date this library item was added. + + + + + + + + Gets or sets the library of this item. + + + Required. + + + + + + + + An entity representing a file on disk. + + + + + Initializes a new instance of the class. + + The path relative to the LibraryRoot. + The file kind. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the path relative to the library root. + + + Required, Max length = 65535. + + + + + Gets or sets the kind of media file. + + + Required. + + + + + + + + Gets a collection containing the streams in this file. + + + + + + + + An entity representing a stream in a media file. + + + + + Initializes a new instance of the class. + + The number of this stream. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the stream number. + + + Required. + + + + + + + + + + + An entity representing a metadata provider. + + + + + Initializes a new instance of the class. + + The name of the metadata provider. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Required, Max length = 1024. + + + + + + + + + + + An entity representing a unique identifier for a metadata provider. + + + + + Initializes a new instance of the class. + + The provider id. + The metadata provider. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the provider id. + + + Required, Max length = 255. + + + + + + + + Gets or sets the metadata provider. + + + Required. + + + + + + + + An entity representing a movie. + + + + + Initializes a new instance of the class. + + The library. + + + + + + + Gets a collection containing the metadata for this movie. + + + + + An entity holding the metadata for a movie. + + + + + Initializes a new instance of the class. + + The title or name of the movie. + ISO-639-3 3-character language codes. + + + + Gets or sets the outline. + + + Max length = 1024. + + + + + Gets or sets the tagline. + + + Max length = 1024. + + + + + Gets or sets the plot. + + + Max length = 65535. + + + + + Gets or sets the country code. + + + Max length = 2. + + + + + Gets the studios that produced this movie. + + + + + + + + An entity representing a music album. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets a collection containing the album metadata. + + + + + Gets a collection containing the tracks. + + + + + An entity holding the metadata for a music album. + + + + + Initializes a new instance of the class. + + The title or name of the album. + ISO-639-3 3-character language codes. + + + + Gets or sets the barcode. + + + Max length = 255. + + + + + Gets or sets the label number. + + + Max length = 255. + + + + + Gets or sets the country code. + + + Max length = 2. + + + + + Gets a collection containing the labels. + + + + + An entity representing a person. + + + + + Initializes a new instance of the class. + + The name of the person. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Required, Max length = 1024. + + + + + Gets or sets the source id. + + + Max length = 255. + + + + + Gets the date added. + + + Required. + + + + + Gets or sets the date modified. + + + Required. + + + + + + + + Gets a list of metadata sources for this person. + + + + + + + + An entity representing a person's role in media. + + + + + Initializes a new instance of the class. + + The role type. + The person. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name of the person's role. + + + Max length = 1024. + + + + + Gets or sets the person's role type. + + + Required. + + + + + + + + Gets or sets the person. + + + Required. + + + + + + + + Gets a collection containing the metadata sources for this person role. + + + + + + + + An entity representing a photo. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets a collection containing the photo metadata. + + + + + + + + An entity that holds metadata for a photo. + + + + + Initializes a new instance of the class. + + The title or name of the photo. + ISO-639-3 3-character language codes. + + + + An entity representing a rating for an entity. + + + + + Initializes a new instance of the class. + + The value. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the value. + + + Required. + + + + + Gets or sets the number of votes. + + + + + + + + Gets or sets the rating type. + If this is null it's the internal user rating. + + + + + + + + This is the entity to store review ratings, not age ratings. + + + + + Initializes a new instance of the class. + + The minimum value. + The maximum value. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Max length = 1024. + + + + + Gets or sets the minimum value. + + + Required. + + + + + Gets or sets the maximum value. + + + Required. + + + + + + + + Gets or sets the metadata source. + + + + + + + + An entity representing a release for a library item, eg. Director's cut vs. standard. + + + + + Initializes a new instance of the class. + + The name of this release. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Required, Max length = 1024. + + + + + + + + Gets a collection containing the media files for this release. + + + + + Gets a collection containing the chapters for this release. + + + + + + + + An entity representing a season. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets or sets the season number. + + + + + Gets the season metadata. + + + + + Gets a collection containing the number of episodes. + + + + + An entity that holds metadata for seasons. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets or sets the outline. + + + Max length = 1024. + + + + + An entity representing a series. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets or sets the days of week. + + + + + Gets or sets the time the show airs, ignore the date portion. + + + + + Gets or sets the date the series first aired. + + + + + Gets a collection containing the series metadata. + + + + + Gets a collection containing the seasons. + + + + + An entity representing series metadata. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets or sets the outline. + + + Max length = 1024. + + + + + Gets or sets the plot. + + + Max length = 65535. + + + + + Gets or sets the tagline. + + + Max length = 1024. + + + + + Gets or sets the country code. + + + Max length = 2. + + + + + Gets a collection containing the networks. + + + + + + + + An entity representing a track. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets or sets the track number. + + + + + + + + Gets a collection containing the track metadata. + + + + + An entity holding metadata for a track. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + An entity representing the metadata for a group of trickplay tiles. + + + + + Gets or sets the id of the media segment. + + + + + Gets or sets the id of the associated item. + + + + + Gets or sets the Type of content this segment defines. + + + + + Gets or sets the end of the segment. + + + + + Gets or sets the start of the segment. + + + + + Gets or sets Id of the media segment provider this entry originates from. + + + + + Enum MediaStreamType. + + + + + The audio. + + + + + The video. + + + + + The subtitle. + + + + + The embedded image. + + + + + The data. + + + + + The lyric. + + + + + People entity. + + + + + Gets or Sets the PeopleId. + + + + + Gets or Sets the Persons Name. + + + + + Gets or Sets the Type. + + + + + Gets or Sets the mapping of People to BaseItems. + + + + + Mapping table for People to BaseItems. + + + + + Gets or Sets the SortOrder. + + + + + Gets or Sets the ListOrder. + + + + + Gets or Sets the Role name the associated actor played in the . + + + + + Gets or Sets The ItemId. + + + + + Gets or Sets Reference Item. + + + + + Gets or Sets The PeopleId. + + + + + Gets or Sets Reference People. + + + + + An entity representing whether the associated user has a specific permission. + + + + + Initializes a new instance of the class. + Public constructor with required data. + + The permission kind. + The value of this permission. + + + + Gets the id of this permission. + + + Identity, Indexed, Required. + + + + + Gets or sets the id of the associated user. + + + + + Gets the type of this permission. + + + Required. + + + + + Gets or sets a value indicating whether the associated user has this permission. + + + Required. + + + + + + + + + + + An entity representing a preference attached to a user or group. + + + + + Initializes a new instance of the class. + Public constructor with required data. + + The preference kind. + The value. + + + + Gets the id of this preference. + + + Identity, Indexed, Required. + + + + + Gets or sets the id of the associated user. + + + + + Gets the type of this preference. + + + Required. + + + + + Gets or sets the value of this preference. + + + Required, Max length = 65535. + + + + + + + + + + + Lists types of Audio. + + + + + Mono. + + + + + Stereo. + + + + + Dolby. + + + + + DolbyDigital. + + + + + Thx. + + + + + Atmos. + + + + + An entity representing an API key. + + + + + Initializes a new instance of the class. + + The name. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the date created. + + + + + Gets or sets the date of last activity. + + + + + Gets or sets the name. + + + + + Gets or sets the access token. + + + + + An entity representing a device. + + + + + Initializes a new instance of the class. + + The user id. + The app name. + The app version. + The device name. + The device id. + + + + Gets the id. + + + + + Gets the user id. + + + + + Gets or sets the access token. + + + + + Gets or sets the app name. + + + + + Gets or sets the app version. + + + + + Gets or sets the device name. + + + + + Gets or sets the device id. + + + + + Gets or sets a value indicating whether this device is active. + + + + + Gets or sets the date created. + + + + + Gets or sets the date modified. + + + + + Gets or sets the date of last activity. + + + + + Gets the user. + + + + + An entity representing custom options for a device. + + + + + Initializes a new instance of the class. + + The device id. + + + + Gets the id. + + + + + Gets the device id. + + + + + Gets or sets the custom name. + + + + + An entity representing the metadata for a group of trickplay tiles. + + + + + Gets or sets the id of the associated item. + + + Required. + + + + + Gets or sets width of an individual thumbnail. + + + Required. + + + + + Gets or sets height of an individual thumbnail. + + + Required. + + + + + Gets or sets amount of thumbnails per row. + + + Required. + + + + + Gets or sets amount of thumbnails per column. + + + Required. + + + + + Gets or sets total amount of non-black thumbnails. + + + Required. + + + + + Gets or sets interval in milliseconds between each trickplay thumbnail. + + + Required. + + + + + Gets or sets peak bandwidth usage in bits per second. + + + Required. + + + + + An entity representing a user. + + + + + Initializes a new instance of the class. + Public constructor with required data. + + The username for the new user. + The Id of the user's authentication provider. + The Id of the user's password reset provider. + + + + Gets or sets the Id of the user. + + + Identity, Indexed, Required. + + + + + Gets or sets the user's name. + + + Required, Max length = 255. + + + + + Gets or sets the user's password, or null if none is set. + + + Max length = 65535. + + + + + Gets or sets a value indicating whether the user must update their password. + + + Required. + + + + + Gets or sets the audio language preference. + + + Max length = 255. + + + + + Gets or sets the authentication provider id. + + + Required, Max length = 255. + + + + + Gets or sets the password reset provider id. + + + Required, Max length = 255. + + + + + Gets or sets the invalid login attempt count. + + + Required. + + + + + Gets or sets the last activity date. + + + + + Gets or sets the last login date. + + + + + Gets or sets the number of login attempts the user can make before they are locked out. + + + + + Gets or sets the maximum number of active sessions the user can have at once. + + + + + Gets or sets the subtitle mode. + + + Required. + + + + + Gets or sets a value indicating whether the default audio track should be played. + + + Required. + + + + + Gets or sets the subtitle language preference. + + + Max length = 255. + + + + + Gets or sets a value indicating whether missing episodes should be displayed. + + + Required. + + + + + Gets or sets a value indicating whether to display the collections view. + + + Required. + + + + + Gets or sets a value indicating whether the user has a local password. + + + Required. + + + + + Gets or sets a value indicating whether the server should hide played content in "Latest". + + + Required. + + + + + Gets or sets a value indicating whether to remember audio selections on played content. + + + Required. + + + + + Gets or sets a value indicating whether to remember subtitle selections on played content. + + + Required. + + + + + Gets or sets a value indicating whether to enable auto-play for the next episode. + + + Required. + + + + + Gets or sets a value indicating whether the user should auto-login. + + + Required. + + + + + Gets or sets a value indicating whether the user can change their preferences. + + + Required. + + + + + Gets or sets the maximum parental rating score. + + + + + Gets or sets the maximum parental rating sub score. + + + + + Gets or sets the remote client bitrate limit. + + + + + Gets or sets the internal id. + This is a temporary stopgap for until the library db is migrated. + This corresponds to the value of the index of this user in the library db. + + + + + Gets or sets the user's profile image. Can be null. + + + + + Gets the user's display preferences. + + + + + Gets or sets the level of sync play permissions this user has. + + + + + Gets or sets the cast receiver id. + + + + + + + + Gets the list of access schedules this user has. + + + + + Gets the list of item display preferences. + + + + + Gets the list of permissions this user has. + + + + + Gets the list of preferences this user has. + + + + + + + + Provides and related data. + + + + + Gets or sets the custom data key. + + The rating. + + + + Gets or sets the users 0-10 rating. + + The rating. + + + + Gets or sets the playback position ticks. + + The playback position ticks. + + + + Gets or sets the play count. + + The play count. + + + + Gets or sets a value indicating whether this instance is favorite. + + true if this instance is favorite; otherwise, false. + + + + Gets or sets the last played date. + + The last played date. + + + + Gets or sets a value indicating whether this is played. + + true if played; otherwise, false. + + + + Gets or sets the index of the audio stream. + + The index of the audio stream. + + + + Gets or sets the index of the subtitle stream. + + The index of the subtitle stream. + + + + Gets or sets a value indicating whether the item is liked or not. + This should never be serialized. + + null if [likes] contains no value, true if [likes]; otherwise, false. + + + + Gets or Sets the date the referenced has been deleted. + + + + + Gets or sets the key. + + The key. + + + + Gets or Sets the BaseItem. + + + + + Gets or Sets the UserId. + + + + + Gets or Sets the User. + + + + + An enum representing types of art. + + + + + Another type of art, not covered by the other members. + + + + + A poster. + + + + + A banner. + + + + + A thumbnail. + + + + + A logo. + + + + + An enum representing the version of Chromecast to be used by clients. + + + + + Stable Chromecast version. + + + + + Unstable Chromecast version. + + + + + An enum that represents a day of the week, weekdays, weekends, or all days. + + + + + Sunday. + + + + + Monday. + + + + + Tuesday. + + + + + Wednesday. + + + + + Thursday. + + + + + Friday. + + + + + Saturday. + + + + + All days of the week. + + + + + A week day, or Monday-Friday. + + + + + Saturday and Sunday. + + + + + An enum representing the different options for the home screen sections. + + + + + None. + + + + + My Media. + + + + + My Media Small. + + + + + Active Recordings. + + + + + Continue Watching. + + + + + Continue Listening. + + + + + Latest Media. + + + + + Next Up. + + + + + Live TV. + + + + + Continue Reading. + + + + + An enum representing a type of indexing in a user's display preferences. + + + + + Index by the premiere date. + + + + + Index by the production year. + + + + + Index by the community rating. + + + + + An enum representing the type of media file. + + + + + The main file. + + + + + A sidecar file. + + + + + An additional part to the main file. + + + + + An alternative format to the main file. + + + + + An additional stream for the main file. + + + + + Defines the types of content an individual represents. + + + + + Default media type or custom one. + + + + + Commercial. + + + + + Preview. + + + + + Recap. + + + + + Outro. + + + + + Intro. + + + + + The types of user permissions. + + + + + Whether the user is an administrator. + + + + + Whether the user is hidden. + + + + + Whether the user is disabled. + + + + + Whether the user can control shared devices. + + + + + Whether the user can access the server remotely. + + + + + Whether the user can manage live tv. + + + + + Whether the user can access live tv. + + + + + Whether the user can play media. + + + + + Whether the server should transcode audio for the user if requested. + + + + + Whether the server should transcode video for the user if requested. + + + + + Whether the user can delete content. + + + + + Whether the user can download content. + + + + + Whether to enable sync transcoding for the user. + + + + + Whether the user can do media conversion. + + + + + Whether the user has access to all devices. + + + + + Whether the user has access to all channels. + + + + + Whether the user has access to all folders. + + + + + Whether to enable public sharing for the user. + + + + + Whether the user can remotely control other users. + + + + + Whether the user is permitted to do playback remuxing. + + + + + Whether the server should force transcoding on remote connections for the user. + + + + + Whether the user can create, modify and delete collections. + + + + + Whether the user can edit subtitles. + + + + + Whether the user can edit lyrics. + + + + + An enum representing a person's role in a specific media item. + + + + + Another role, not covered by the other types. + + + + + The director of the media. + + + + + An artist. + + + + + The original artist. + + + + + An actor. + + + + + A voice actor. + + + + + A producer. + + + + + A remixer. + + + + + A conductor. + + + + + A composer. + + + + + An author. + + + + + An editor. + + + + + The types of user preferences. + + + + + A list of blocked tags. + + + + + A list of blocked channels. + + + + + A list of blocked media folders. + + + + + A list of enabled devices. + + + + + A list of enabled channels. + + + + + A list of enabled folders. + + + + + A list of folders to allow content deletion from. + + + + + A list of latest items to exclude. + + + + + A list of media to exclude. + + + + + A list of grouped folders. + + + + + A list of unrated items to block. + + + + + A list of ordered views. + + + + + A list of allowed tags. + + + + + An enum representing the axis that should be scrolled. + + + + + Horizontal scrolling direction. + + + + + Vertical scrolling direction. + + + + + An enum representing the sorting order. + + + + + Sort in increasing order. + + + + + Sort in decreasing order. + + + + + An enum representing a subtitle playback mode. + + + + + The default subtitle playback mode. + + + + + Always show subtitles. + + + + + Only show forced subtitles. + + + + + Don't show subtitles. + + + + + Only show subtitles when the current audio stream is in a different language. + + + + + Enum SyncPlayUserAccessType. + + + + + User can create groups and join them. + + + + + User can only join already existing groups. + + + + + SyncPlay is disabled for the user. + + + + + An enum representing the type of view for a library or collection. + + + + + Shows albums. + + + + + Shows album artists. + + + + + Shows artists. + + + + + Shows channels. + + + + + Shows collections. + + + + + Shows episodes. + + + + + Shows favorites. + + + + + Shows genres. + + + + + Shows guide. + + + + + Shows movies. + + + + + Shows networks. + + + + + Shows playlists. + + + + + Shows programs. + + + + + Shows recordings. + + + + + Shows schedule. + + + + + Shows series. + + + + + Shows shows. + + + + + Shows songs. + + + + + Shows songs. + + + + + Shows trailers. + + + + + Shows upcoming. + + + + + Defines the type and extension points for multi database support. + + + + + Gets or Sets the Database Factory when initialisaition is done. + + + + + Initialises jellyfins EFCore database access. + + The EFCore database options. + The Jellyfin database options. + + + + Will be invoked when EFCore wants to build its model. + + The ModelBuilder from EFCore. + + + + Will be invoked when EFCore wants to configure its model. + + The ModelConfigurationBuilder from EFCore. + + + + If supported this should run any periodic maintaince tasks. + + The token to abort the operation. + A representing the asynchronous operation. + + + + If supported this should perform any actions that are required on stopping the jellyfin server. + + The token that will be used to abort the operation. + A representing the asynchronous operation. + + + + Runs a full Database backup that can later be restored to. + + A cancellation token. + A key to identify the backup. + May throw an NotImplementException if this operation is not supported for this database. + + + + Restores a backup that has been previously created by . + + The key to the backup from which the current database should be restored from. + A cancellation token. + A representing the result of the asynchronous operation. + + + + Deletes a backup that has been previously created by . + + The key to the backup which should be cleaned up. + A representing the result of the asynchronous operation. + + + + Removes all contents from the database. + + The Database context. + The names of the tables to purge or null for all tables to be purged. + A Task. + + + + An interface abstracting an entity that has artwork. + + + + + Gets a collection containing this entity's artwork. + + + + + An abstraction representing an entity that has companies. + + + + + Gets a collection containing this entity's companies. + + + + + An interface abstracting an entity that has a concurrency token. + + + + + Gets the version of this row. Acts as a concurrency token. + + + + + Called when saving changes to this entity. + + + + + An abstraction representing an entity that has permissions. + + + + + Gets a collection containing this entity's permissions. + + + + + An abstraction representing an entity that has releases. + + + + + Gets a collection containing this entity's releases. + + + + + Defines the key of the database provider. + + + + + Initializes a new instance of the class. + + The key on which to identify the annotated provider. + + + + Gets the key on which to identify the annotated provider. + + + + + + Initializes a new instance of the class. + + The database context options. + Logger. + The provider for the database engine specific operations. + The locking behavior. + + + + + Initializes a new instance of the class. + + The database context options. + Logger. + The provider for the database engine specific operations. + The locking behavior. + + + + Gets the containing the access schedules. + + + + + Gets the containing the activity logs. + + + + + Gets the containing the API keys. + + + + + Gets the containing the devices. + + + + + Gets the containing the device options. + + + + + Gets the containing the display preferences. + + + + + Gets the containing the image infos. + + + + + Gets the containing the item display preferences. + + + + + Gets the containing the custom item display preferences. + + + + + Gets the containing the permissions. + + + + + Gets the containing the preferences. + + + + + Gets the containing the users. + + + + + Gets the containing the trickplay metadata. + + + + + Gets the containing the media segments. + + + + + Gets the containing the user data. + + + + + Gets the containing the user data. + + + + + Gets the containing the user data. + + + + + Gets the containing the user data. + + + + + Gets the containing the user data. + + + + + Gets the . + + + + + Gets the . + + + + + Gets the . + + + + + Gets the . + + + + + Gets the . + + + + + Gets the containing the referenced Providers with ids. + + + + + Gets the . + + + + + Gets the . + + + + + Gets the . + + + + + Gets the . + + + + + + + + + + + + + + + + + Contains a number of query related extensions. + + + + + Builds an optimised query checking one property against a list of values while maintaining an optimal query. + + The entity. + The property type to compare. + The source query. + The list of items to check. + Property expression. + A Query. + + + + Builds a query that checks referenced ItemValues for a cross BaseItem lookup. + + The source query. + The database context. + The type of item value to reference. + The list of BaseItem ids to check matches. + If set an exclusion check is performed instead. + A Query. + + + + Builds a query that checks referenced ItemValues for a cross BaseItem lookup. + + The source query. + The database context. + The type of item value to reference. + The list of BaseItem ids to check matches. + If set an exclusion check is performed instead. + A Query. + + + + Builds a query expression that checks referenced ItemValues for a cross BaseItem lookup. + + The database context. + The type of item value to reference. + The list of BaseItem ids to check matches. + If set an exclusion check is performed instead. + A Query. + + + + Builds an optimised query expression checking one property against a list of values while maintaining an optimal query. + + The entity. + The property type to compare. + The list of items to check. + Property expression. + A Query. + + + + Defines a jellyfin locking behavior that can be configured. + + + + + Provides access to the builder to setup any connection related locking behavior. + + The options builder. + + + + Will be invoked when changes should be saved in the current locking behavior. + + The database context invoking the action. + Callback for performing the actual save changes. + + + + Will be invoked when changes should be saved in the current locking behavior. + + The database context invoking the action. + Callback for performing the actual save changes. + A representing the asynchronous operation. + + + + Default lock behavior. Defines no explicit application locking behavior. + + + + + Initializes a new instance of the class. + + The Application logger. + + + + + + + + + + + + + Defines a locking mechanism that will retry any write operation for a few times. + + + + + Initializes a new instance of the class. + + The application logger. + + + + + + + + + + + + + A locking behavior that will always block any operation while a write is requested. Mimicks the old SqliteRepository behavior. + + + + + Initializes a new instance of the class. + + The application logger. + The logger factory. + + + + + + + + + + + + + Adds strict read/write locking. + + + + + FluentAPI configuration for the ActivityLog entity. + + + + + + + + AncestorId configuration. + + + + + + + + FluentAPI configuration for the ApiKey entity. + + + + + + + + FluentAPI configuration for the AttachmentStreamInfo entity. + + + + + + + + Configuration for BaseItem. + + + + + + + + Provides configuration for the BaseItemMetadataField entity. + + + + + + + + BaseItemProvider configuration. + + + + + + + + Provides configuration for the BaseItemMetadataField entity. + + + + + + + + Chapter configuration. + + + + + + + + FluentAPI configuration for the CustomItemDisplayPreferences entity. + + + + + + + + FluentAPI configuration for the Device entity. + + + + + + + + FluentAPI configuration for the DeviceOptions entity. + + + + + + + + FluentAPI configuration for the DisplayPreferencesConfiguration entity. + + + + + + + + itemvalues Configuration. + + + + + + + + itemvalues Configuration. + + + + + + + + KeyframeData Configuration. + + + + + + + + People configuration. + + + + + + + + People configuration. + + + + + + + + People configuration. + + + + + + + + FluentAPI configuration for the Permission entity. + + + + + + + + FluentAPI configuration for the Permission entity. + + + + + + + + FluentAPI configuration for the TrickplayInfo entity. + + + + + + + + FluentAPI configuration for the User entity. + + + + + + + + FluentAPI configuration for the UserData entity. + + + + + + + + Wrapper for progress reporting on Partition helpers. + + The entity to load. + + + + Contains helpers to partition EFCore queries. + + + + + Adds a callback to any directly following calls of Partition for every partition thats been invoked. + + The entity to load. + The source query. + The callback invoked for partition before enumerating items. + The callback invoked for partition after enumerating items. + A queryable that can be used to partition. + + + + Adds a callback to any directly following calls of Partition for every item thats been invoked. + + The entity to load. + The source query. + The callback invoked for each item before processing. + The callback invoked for each item after processing. + A queryable that can be used to partition. + + + + Adds a callback to any directly following calls of Partition for every partition thats been invoked. + + The entity to load. + The source query. + The callback invoked for partition before enumerating items. + The callback invoked for partition after enumerating items. + A queryable that can be used to partition. + + + + Adds a callback to any directly following calls of Partition for every item thats been invoked. + + The entity to load. + The source query. + The callback invoked for each item before processing. + The callback invoked for each item after processing. + A queryable that can be used to partition. + + + + Enumerates the source query by loading the entities in partitions in a lazy manner reading each item from the database as its requested. + + The entity to load. + The source query. + The number of elements to load per partition. + The cancellation token. + A enumerable representing the whole of the query. + + + + Enumerates the source query by loading the entities in partitions directly into memory. + + The entity to load. + The source query. + The number of elements to load per partition. + The cancellation token. + A enumerable representing the whole of the query. + + + + Enumerates the source query by loading the entities in partitions in a lazy manner reading each item from the database as its requested. + + The entity to load. + The source query. + The number of elements to load per partition. + Reporting helper. + The cancellation token. + A enumerable representing the whole of the query. + + + + Enumerates the source query by loading the entities in partitions directly into memory. + + The entity to load. + The source query. + The number of elements to load per partition. + Reporting helper. + The cancellation token. + A enumerable representing the whole of the query. + + + + Adds an Index to the enumeration of the async enumerable. + + The entity to load. + The source query. + The source list with an index added. + + + diff --git a/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.B884D0AA.Up2Date b/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.B884D0AA.Up2Date new file mode 100644 index 00000000..e69de29b diff --git a/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.csproj.AssemblyReference.cache b/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.csproj.AssemblyReference.cache index 274bd2facd90c21fa3c1ff1b1b28cc483e96696e..63c72a6807252565a97425414bf8f8b4425255ac 100644 GIT binary patch delta 2078 zcmbtVK~EDw6z)*KTB;Tm&|nit)Bw?G3u4fO7*aSW(g;N~rbZV!z$Ux1%k0*$(WK$( z$vTM#Z^knU5n?+ww=P%4?Gt{? zz*@)T8KN25tO+w(0S#eEu?*P&4Lr>M;{b|)(;EX*%U84ge&BOC%P^73P!$Eun6icq zcvDr2rZlY}aMX|N`xc?E+;~)K{vIt|_roW|ykRCcFA-fpe>aH;e?NPkDEj0IOu@cX zU-}vVF_`Tbnal-UuR05az;jTJbd`oBrcW|Z{uWXcYgWe4Jz?T?1*r&|5;r41E#v$! znl8@e*?p!{Fm-SYEGP=FZ|>E@(IdaK?FhTTPJgC$o;;WeL|I6TF14O6zdu&@5|lru zJfcZ|xG*}&h$cDFq(k)J7@Me5Vh@A~+Wl5s>X<^rU==dRY)JRgFDEY2XCQJH#2IfU z@wih;6Gd#wD&lhND+(^rzJw@bR|>e&PxO~mL% zd$ZeFp~FTe1g((K@Jx{qRt`1GInSD5PY?5_&B4Dd;{`afs1sxu^k=-~pG5Z=!+;v@ zux7RRtZ*Ij?;^e5-d4Zv>|EINyVd3NCjHphMqfmt^hcz2(@r{~?EYaxL{&9hvr|5! zm={c7+yR}OCrB#DckW=eEB-a6<)9v0EHl#gUuiMQ2UAWgnX3o3Nk2-`v=uq8LO`$X`%9WNqc@wdUA zR-$!SnLTu+v8UwG3kR@7FruD!AFv!^jVhZK%n(aAwK*c`^OlDm0Qba?@6L`8Z>Ig~ h?J)4y3)2L%Ba<18pdnrN(0%Vqj;Xp2rvduHjq)+{EzFuDF7qt B4XywH diff --git a/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.csproj.CoreCompileInputs.cache b/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.csproj.CoreCompileInputs.cache index 317ab484..aca15aca 100644 --- a/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.csproj.CoreCompileInputs.cache +++ b/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -ceaa91a5c5ec9124d1529284418af5db64b490937ad54f85e57513b5d03afc95 +3830fdc1e1abfc1a4e9eae455e6fd43e54500311710ea424492686e858f0a20f diff --git a/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.csproj.FileListAbsolute.txt b/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.csproj.FileListAbsolute.txt index 615a4444..93b63d4e 100644 --- a/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.csproj.FileListAbsolute.txt +++ b/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.csproj.FileListAbsolute.txt @@ -1,3 +1,22 @@ C:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\Jellyfin.Data.csproj.AssemblyReference.cache C:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\Jellyfin.Data.GeneratedMSBuildEditorConfig.editorconfig C:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\Jellyfin.Data.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\Jellyfin.Data.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\Jellyfin.Data.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\Jellyfin.Data.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\Jellyfin.Data.xml +E:\Projects\pgsql-jellyfin\Jellyfin.Data\bin\Debug\net10.0\Jellyfin.Data.deps.json +E:\Projects\pgsql-jellyfin\Jellyfin.Data\bin\Debug\net10.0\Jellyfin.Data.dll +E:\Projects\pgsql-jellyfin\Jellyfin.Data\bin\Debug\net10.0\Jellyfin.Data.pdb +E:\Projects\pgsql-jellyfin\Jellyfin.Data\bin\Debug\net10.0\Jellyfin.Data.xml +E:\Projects\pgsql-jellyfin\Jellyfin.Data\bin\Debug\net10.0\Jellyfin.CodeAnalysis.dll +E:\Projects\pgsql-jellyfin\Jellyfin.Data\bin\Debug\net10.0\Jellyfin.Database.Implementations.dll +E:\Projects\pgsql-jellyfin\Jellyfin.Data\bin\Debug\net10.0\Jellyfin.CodeAnalysis.pdb +E:\Projects\pgsql-jellyfin\Jellyfin.Data\bin\Debug\net10.0\Jellyfin.CodeAnalysis.xml +E:\Projects\pgsql-jellyfin\Jellyfin.Data\bin\Debug\net10.0\Jellyfin.Database.Implementations.pdb +E:\Projects\pgsql-jellyfin\Jellyfin.Data\bin\Debug\net10.0\Jellyfin.Database.Implementations.xml +E:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\Jellyfin.B884D0AA.Up2Date +E:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\Jellyfin.Data.dll +E:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\refint\Jellyfin.Data.dll +E:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\Jellyfin.Data.pdb +E:\Projects\pgsql-jellyfin\Jellyfin.Data\obj\Debug\net10.0\ref\Jellyfin.Data.dll diff --git a/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.dll b/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.dll new file mode 100644 index 0000000000000000000000000000000000000000..e95bba9b2e9081a97cb41c998d991e08c9ca2ee6 GIT binary patch literal 18944 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 literal 0 HcmV?d00001 diff --git a/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.pdb b/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.pdb new file mode 100644 index 0000000000000000000000000000000000000000..207eaf99e1b2d8bfd82d001dbdce0b86392c8507 GIT binary patch literal 17540 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 C`Zpi| literal 0 HcmV?d00001 diff --git a/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.xml b/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.xml new file mode 100644 index 00000000..ecc10cd2 --- /dev/null +++ b/Jellyfin.Data/obj/Debug/net10.0/Jellyfin.Data.xml @@ -0,0 +1,1198 @@ + + + + Jellyfin.Data + + + + + Attribute to specify that the enum value is to be ignored when generating the openapi spec. + + + + + A dto representing custom options for a device. + + + + + Gets or sets the id. + + + + + Gets or sets the device id. + + + + + Gets or sets the custom name. + + + + + Activity log sorting options. + + + + + Sort by name. + + + + + Sort by overview. + + + + + Sort by short overview. + + + + + Sort by type. + + + + + Sort by date. + + + + + Sort by username. + + + + + Sort by severity. + + + + + An enum representing formats of spatial audio. + + + + + None audio spatial format. + + + + + Dolby Atmos audio spatial format. + + + + + DTS:X audio spatial format. + + + + + The base item kind. + + + This enum is generated from all classes that inherit from BaseItem. + + + + + Item is aggregate folder. + + + + + Item is audio. + + + + + Item is audio book. + + + + + Item is base plugin folder. + + + + + Item is book. + + + + + Item is box set. + + + + + Item is channel. + + + + + Item is channel folder item. + + + + + Item is collection folder. + + + + + Item is episode. + + + + + Item is folder. + + + + + Item is genre. + + + + + Item is manual playlists folder. + + + + + Item is movie. + + + + + Item is a live tv channel. + + + + + Item is a live tv program. + + + + + Item is music album. + + + + + Item is music artist. + + + + + Item is music genre. + + + + + Item is music video. + + + + + Item is person. + + + + + Item is photo. + + + + + Item is photo album. + + + + + Item is playlist. + + + + + Item is playlist folder. + + + + + Item is program. + + + + + Item is recording. + + + Manually added. + + + + + Item is season. + + + + + Item is series. + + + + + Item is studio. + + + + + Item is trailer. + + + + + Item is live tv channel. + + + Type is overridden. + + + + + Item is live tv program. + + + Type is overridden. + + + + + Item is user root folder. + + + + + Item is user view. + + + + + Item is video. + + + + + Item is year. + + + + + Collection type. + + + + + Unknown collection. + + + + + Movies collection. + + + + + Tv shows collection. + + + + + Music collection. + + + + + Music videos collection. + + + + + Trailers collection. + + + + + Home videos collection. + + + + + Box sets collection. + + + + + Books collection. + + + + + Photos collection. + + + + + Live tv collection. + + + + + Playlists collection. + + + + + Folders collection. + + + + + Tv show series collection. + + + + + Tv genres collection. + + + + + Tv genre collection. + + + + + Tv latest collection. + + + + + Tv next up collection. + + + + + Tv resume collection. + + + + + Tv favorite series collection. + + + + + Tv favorite episodes collection. + + + + + Latest movies collection. + + + + + Movies to resume collection. + + + + + Movie movie collection. + + + + + Movie collections collection. + + + + + Movie favorites collection. + + + + + Movie genres collection. + + + + + Movie genre collection. + + + + + These represent sort orders. + + + + + Default sort order. + + + + + The aired episode order. + + + + + The album. + + + + + The album artist. + + + + + The artist. + + + + + The date created. + + + + + The official rating. + + + + + The date played. + + + + + The premiere date. + + + + + The start date. + + + + + The sort name. + + + + + The name. + + + + + The random. + + + + + The runtime. + + + + + The community rating. + + + + + The production year. + + + + + The play count. + + + + + The critic rating. + + + + + The IsFolder boolean. + + + + + The IsUnplayed boolean. + + + + + The IsPlayed boolean. + + + + + The series sort. + + + + + The video bitrate. + + + + + The air time. + + + + + The studio. + + + + + The IsFavouriteOrLiked boolean. + + + + + The last content added date. + + + + + The series last played date. + + + + + The parent index number. + + + + + The index number. + + + + + Media streaming protocol. + Lowercase for backwards compatibility. + + + + + HTTP. + + + + + HTTP Live Streaming. + + + + + Media types. + + + + + Unknown media type. + + + + + Video media. + + + + + Audio media. + + + + + Photo media. + + + + + Book media. + + + + + The person kind. + + + + + An unknown person kind. + + + + + A person whose profession is acting on the stage, in films, or on television. + + + + + A person who supervises the actors and other staff in a film, play, or similar production. + + + + + A person who writes music, especially as a professional occupation. + + + + + A writer of a book, article, or document. Can also be used as a generic term for music writer if there is a lack of specificity. + + + + + A well-known actor or other performer who appears in a work in which they do not have a regular role. + + + + + A person responsible for the financial and managerial aspects of the making of a film or broadcast or for staging a play, opera, etc. + + + + + A person who directs the performance of an orchestra or choir. + + + + + A person who writes the words to a song or musical. + + + + + A person who adapts a musical composition for performance. + + + + + An audio engineer who performed a general engineering role. + + + + + An engineer responsible for using a mixing console to mix a recorded track into a single piece of music suitable for release. + + + + + A person who remixed a recording by taking one or more other tracks, substantially altering them and mixing them together with other material. + + + + + A person who created the material. + + + + + A person who was the artist. + + + + + A person who was the album artist. + + + + + A person who was the author. + + + + + A person who was the illustrator. + + + + + A person responsible for drawing the art. + + + + + A person responsible for inking the pencil art. + + + + + A person responsible for applying color to drawings. + + + + + A person responsible for drawing text and speech bubbles. + + + + + A person responsible for drawing the cover art. + + + + + A person contributing to a resource by revising or elucidating the content, e.g., adding an introduction, notes, or other critical matter. + An editor may also prepare a resource for production, publication, or distribution. + + + + + A person who renders a text from one language into another. + + + + + Enum SyncPlayAccessRequirementType. + + + + + User must have access to SyncPlay, in some form. + + + + + User must be able to create groups. + + + + + User must be able to join groups. + + + + + User must be in a group. + + + + + An enum representing an unrated item. + + + + + A movie. + + + + + A trailer. + + + + + A series. + + + + + Music. + + + + + A book. + + + + + A live TV channel. + + + + + A live TV program. + + + + + Channel content. + + + + + Another type, not covered by the other fields. + + + + + An enum representing video ranges. + + + + + Unknown video range. + + + + + SDR video range. + + + + + HDR video range. + + + + + An enum representing types of video ranges. + + + + + Unknown video range type. + + + + + SDR video range type (8bit). + + + + + HDR10 video range type (10bit). + + + + + HLG video range type (10bit). + + + + + Dolby Vision video range type (10bit encoded / 12bit remapped). + + + + + Dolby Vision with HDR10 video range fallback (10bit). + + + + + Dolby Vision with HLG video range fallback (10bit). + + + + + Dolby Vision with SDR video range fallback (8bit / 10bit). + + + + + Dolby Vision with Enhancment Layer (Profile 7). + + + + + Dolby Vision and HDR10+ Metadata coexists. + + + + + Dolby Vision with Enhancment Layer (Profile 7) and HDR10+ Metadata coexists. + + + + + Dolby Vision with invalid configuration. e.g. Profile 8 compat id 6. + When using this range, the server would assume the video is still HDR10 after removing the Dolby Vision metadata. + + + + + HDR10+ video range type (10bit to 16bit). + + + + + Provides a generic EventArgs subclass that can hold any kind of object. + + The type of this event. + + + + Initializes a new instance of the class. + + The argument. + + + + Gets the argument. + + The argument. + + + + An event that occurs when there is a pending restart. + + + + + An event that occurs when a user is created. + + + + + Initializes a new instance of the class. + + The user. + + + + An event that occurs when a user is deleted. + + + + + Initializes a new instance of the class. + + The user. + + + + An event that occurs when a user is locked out. + + + + + Initializes a new instance of the class. + + The user. + + + + An event that occurs when a user's password has changed. + + + + + Initializes a new instance of the class. + + The user. + + + + An event that occurs when a user is updated. + + + + + Initializes a new instance of the class. + + The user. + + + + A class representing a query to the activity logs. + + + + + Gets or sets a value indicating whether to take entries with a user id. + + + + + Gets or sets the minimum date to query for. + + + + + Gets or sets the maximum date to query for. + + + + + Gets or sets the name filter. + + + + + Gets or sets the overview filter. + + + + + Gets or sets the short overview filter. + + + + + Gets or sets the type filter. + + + + + Gets or sets the item filter. + + + + + Gets or sets the username filter. + + + + + Gets or sets the log level filter. + + + + + Gets or sets the result ordering. + + + + + A query to retrieve devices. + + + + + Gets or sets the user id of the device. + + + + + Gets or sets the device id. + + + + + Gets or sets the access token. + + + + + An abstract class for paginated queries. + + + + + Gets or sets the index to start at. + + + + + Gets or sets the maximum number of items to include. + + + + + Contains extension methods for manipulation of entities. + + + + + The values being delimited here are Guids, so commas work as they do not appear in Guids. + + + + + Checks whether the user has the specified permission. + + The entity to update. + The permission kind. + True if the user has the specified permission. + + + + Sets the given permission kind to the provided value. + + The entity to update. + The permission kind. + The value to set. + + + + Gets the user's preferences for the given preference kind. + + The entity to update. + The preference kind. + A string array containing the user's preferences. + + + + Gets the user's preferences for the given preference kind. + + The entity to update. + The preference kind. + Type of preference. + A {T} array containing the user's preference. + + + + Sets the specified preference to the given value. + + The entity to update. + The preference kind. + The values. + + + + Sets the specified preference to the given value. + + The entity to update. + The preference kind. + The values. + The type of value. + + + + Checks whether this user is currently allowed to use the server. + + The entity to update. + True if the current time is within an access schedule, or there are no access schedules. + + + + Checks whether the provided folder is in this user's grouped folders. + + The entity to update. + The Guid of the folder. + True if the folder is in the user's grouped folders. + + + + Initializes the default permissions for a user. Should only be called on user creation. + + The entity to update. + + + + Initializes the default preferences. Should only be called on user creation. + + The entity to update. + + + diff --git a/Jellyfin.Data/obj/Debug/net10.0/ref/Jellyfin.Data.dll b/Jellyfin.Data/obj/Debug/net10.0/ref/Jellyfin.Data.dll new file mode 100644 index 0000000000000000000000000000000000000000..f03c34aacac2ae552b90060353d26712b93d6262 GIT binary patch literal 14336 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 Ld&9^7w;uQp5#n*! literal 0 HcmV?d00001 diff --git a/Jellyfin.Data/obj/Debug/net10.0/refint/Jellyfin.Data.dll b/Jellyfin.Data/obj/Debug/net10.0/refint/Jellyfin.Data.dll new file mode 100644 index 0000000000000000000000000000000000000000..f03c34aacac2ae552b90060353d26712b93d6262 GIT binary patch literal 14336 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 Ld&9^7w;uQp5#n*! literal 0 HcmV?d00001 diff --git a/Jellyfin.Server.Implementations/obj/Debug/net10.0/Jellyfin.Server.Implementations.csproj.AssemblyReference.cache b/Jellyfin.Server.Implementations/obj/Debug/net10.0/Jellyfin.Server.Implementations.csproj.AssemblyReference.cache index 628342c7fd8c777955e48d5d592339a85399e998..ba1799b0c43ac86819f381a25b430c9da84d46a5 100644 GIT binary patch delta 440 zcmcaw_Mmb?3Cpal3%6{n;9;z1WMN=nU}R+E&Py#RE=kNwNi0fXWCDs|1B~@hQARM$ z$N{9zR15zX?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19{Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rilRBp5x^ S|3d-ea@Wh(&78w;iY diff --git a/Jellyfin.Server/obj/Debug/net10.0/Jellyfin.Server.csproj.CoreCompileInputs.cache b/Jellyfin.Server/obj/Debug/net10.0/Jellyfin.Server.csproj.CoreCompileInputs.cache index ba736db2..7e8efc8d 100644 --- a/Jellyfin.Server/obj/Debug/net10.0/Jellyfin.Server.csproj.CoreCompileInputs.cache +++ b/Jellyfin.Server/obj/Debug/net10.0/Jellyfin.Server.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -d2f95863a9600605fdb2b2708cf2bfc69e48f7e43d84ceabb7bcaf57a21d180d +b3779413f844448ca41905720eba7a362836e9a726cb68cf84c9fc51daefb0e9 diff --git a/Jellyfin.Server/obj/Debug/net10.0/Jellyfin.Server.csproj.FileListAbsolute.txt b/Jellyfin.Server/obj/Debug/net10.0/Jellyfin.Server.csproj.FileListAbsolute.txt index 597440bf..316c59d1 100644 --- a/Jellyfin.Server/obj/Debug/net10.0/Jellyfin.Server.csproj.FileListAbsolute.txt +++ b/Jellyfin.Server/obj/Debug/net10.0/Jellyfin.Server.csproj.FileListAbsolute.txt @@ -3,3 +3,8 @@ C:\Projects\pgsql-jellyfin\Jellyfin.Server\obj\Debug\net10.0\rpswa.dswa.cache.js C:\Projects\pgsql-jellyfin\Jellyfin.Server\obj\Debug\net10.0\Jellyfin.Server.GeneratedMSBuildEditorConfig.editorconfig C:\Projects\pgsql-jellyfin\Jellyfin.Server\obj\Debug\net10.0\Jellyfin.Server.csproj.CoreCompileInputs.cache C:\Projects\pgsql-jellyfin\Jellyfin.Server\obj\Debug\net10.0\jellyfin.MvcApplicationPartsAssemblyInfo.cache +E:\Projects\pgsql-jellyfin\Jellyfin.Server\obj\Debug\net10.0\Jellyfin.Server.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\Jellyfin.Server\obj\Debug\net10.0\rpswa.dswa.cache.json +E:\Projects\pgsql-jellyfin\Jellyfin.Server\obj\Debug\net10.0\Jellyfin.Server.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\Jellyfin.Server\obj\Debug\net10.0\Jellyfin.Server.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\Jellyfin.Server\obj\Debug\net10.0\jellyfin.MvcApplicationPartsAssemblyInfo.cache diff --git a/MediaBrowser.Common/obj/Debug/net10.0/MediaBrowser.Common.csproj.AssemblyReference.cache b/MediaBrowser.Common/obj/Debug/net10.0/MediaBrowser.Common.csproj.AssemblyReference.cache index 71ab4821ca06bcc7d79fc6bcb7c6bf0ffa3581d6..7294dcae44ad5e7941122cd1e3d6f07c9704a6cd 100644 GIT binary patch delta 2152 zcmbtVO-vI(6z=e&wXLQ|#DmsAkOUH)wju^i2sWh$6&j%ge^R4cI+RUzXP4QjVWY|3 zy_Gc{^kh6^G|It)@!&-hJaR<2dp6;QGt+ImtYd&Mhu!wI?|a{S-+OPq=U0^WBcQw1 zzSQw@?e)j^%Q4`9j!-BB0El8lEvn$MLdu|x*<=Seo)w5U2(#DvlkS}#7dNN5MVJ{_ z&y+e(49i%cFl&@i1}mCvsTSxIZvKY{C<9J^8J%0bk{|H{pDoxHMLI*(G&E0D16%Nh zu2-p2(hxZ2NA`V|p}!k{=yYvFoNIpggq%0b78Vs^O6b>v$ngJVF9Jm#Uxq0-oElDF z1t13Vy}8*!uF{^@}`D#gsCEmQ7oyrIDtyl zN|EWAPQldPKCrB5fGhXn!L6fzjGtj9V4pwI84)}f3PhMotoEv}Z3Wamr_epjhy zl95abl1Y!`-aee9*IxIf0TTW)Ttu6__bmlqmI1-xo<9U(BT}Rzfm9Sp&~k31Ka?FZ>3)tO%zWyu-(HQpHO!w`>w* ziF6K)+%C+4;J?J+Lke;sL;*km*-E>W;(@F4ak|e0=)Y z3et50A0{&<73;*f2Rge*kWyxv9|lq&av8V^cXbWUFib@55S1bl1a7vfv{z*U_j$-H zchkVEWv1A6*I))?!&^YX7`*P{_$1=rxk64z7Nb#Q--W)r=6Te;W!`#-FK=L3HMqi~I} delta 42 ycmbP~c+!u9jZuh!fq^l7vLds_L<1L=yG6CN8!LDiCv))#OzzfE-29JgiYfr~8Vr*F diff --git a/MediaBrowser.Common/obj/Debug/net10.0/MediaBrowser.Common.csproj.CoreCompileInputs.cache b/MediaBrowser.Common/obj/Debug/net10.0/MediaBrowser.Common.csproj.CoreCompileInputs.cache index 5fbcd89f..f19f31e6 100644 --- a/MediaBrowser.Common/obj/Debug/net10.0/MediaBrowser.Common.csproj.CoreCompileInputs.cache +++ b/MediaBrowser.Common/obj/Debug/net10.0/MediaBrowser.Common.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -1fed7ecba8d3922a9226dab0994e07db89438757b28efdcde87a20342f43b43f +ea1900ada7e71b699cc8b32fc18ed9c2c4c85d035c2a9f53d43b9e309a7daf47 diff --git a/MediaBrowser.Common/obj/Debug/net10.0/MediaBrowser.Common.csproj.FileListAbsolute.txt b/MediaBrowser.Common/obj/Debug/net10.0/MediaBrowser.Common.csproj.FileListAbsolute.txt index ba2be1bb..66584987 100644 --- a/MediaBrowser.Common/obj/Debug/net10.0/MediaBrowser.Common.csproj.FileListAbsolute.txt +++ b/MediaBrowser.Common/obj/Debug/net10.0/MediaBrowser.Common.csproj.FileListAbsolute.txt @@ -1,3 +1,6 @@ C:\Projects\pgsql-jellyfin\MediaBrowser.Common\obj\Debug\net10.0\MediaBrowser.Common.csproj.AssemblyReference.cache C:\Projects\pgsql-jellyfin\MediaBrowser.Common\obj\Debug\net10.0\MediaBrowser.Common.GeneratedMSBuildEditorConfig.editorconfig C:\Projects\pgsql-jellyfin\MediaBrowser.Common\obj\Debug\net10.0\MediaBrowser.Common.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\MediaBrowser.Common\obj\Debug\net10.0\MediaBrowser.Common.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\MediaBrowser.Common\obj\Debug\net10.0\MediaBrowser.Common.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\MediaBrowser.Common\obj\Debug\net10.0\MediaBrowser.Common.csproj.CoreCompileInputs.cache diff --git a/MediaBrowser.Controller/obj/Debug/net10.0/MediaBrowser.Controller.csproj.AssemblyReference.cache b/MediaBrowser.Controller/obj/Debug/net10.0/MediaBrowser.Controller.csproj.AssemblyReference.cache index 0461ea49a0652b17bfe44c77f1b036d1a982f4ad..d6f262c93ebdc7ae2c7a246189751a03039b5828 100644 GIT binary patch delta 440 zcmZ1X?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19X?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19X?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19v$ngJVF9Jm#Uxq0-oElDF z1t13Vy}8*!uF{^@}`D#gsCEmQ7oyrIDtyl zN|EWAPQldPKCrB5fGhXn!L6fzjGtj9V4pwI84)}f3PhMotoEv}Z3Wamr_epjhy zl95abl1Y!`-aee9*IxIf0TTW)Ttu6__bmlqmI1-xo<9U(BT}Rzfm9Sp&~k31Ka?FZ>3)tO%zWyu-(HQpHO!w`>w* ziF6K)+%C+4;J?J+Lke;sL;*km*-E>W;(@F4ak|e0=)Y z3et50A0{&<73;*f2Rge*kWyxv9|lq&av8V^cXbWUFib@55S1bl1a7vfv{z*U_j$-H zchkVEWv1A6*I))?!&^YX7`*P{_$1=rxk64z7Nb#Q--W)r=6Te;W!`#-FK=L3HMqi~I} delta 42 ycmbP~c+!u9jZuh!fq^l7vLds_L<1L=yG6CN8!LDiCv))#OzzfE-29JgiYfr~8Vr*F diff --git a/MediaBrowser.Model/obj/Debug/net10.0/MediaBrowser.Model.csproj.CoreCompileInputs.cache b/MediaBrowser.Model/obj/Debug/net10.0/MediaBrowser.Model.csproj.CoreCompileInputs.cache index 759aa92c..80024339 100644 --- a/MediaBrowser.Model/obj/Debug/net10.0/MediaBrowser.Model.csproj.CoreCompileInputs.cache +++ b/MediaBrowser.Model/obj/Debug/net10.0/MediaBrowser.Model.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -a6e0d72e09b51608ade5b97739fc7d0b94bd4119cb73bf3e176894e14fded06b +4d6ced8a676ca84ec08b198262bcbd68d1eff6ed316612d11ebde55f3a905528 diff --git a/MediaBrowser.Model/obj/Debug/net10.0/MediaBrowser.Model.csproj.FileListAbsolute.txt b/MediaBrowser.Model/obj/Debug/net10.0/MediaBrowser.Model.csproj.FileListAbsolute.txt index 3eb9d8a7..5e688aa7 100644 --- a/MediaBrowser.Model/obj/Debug/net10.0/MediaBrowser.Model.csproj.FileListAbsolute.txt +++ b/MediaBrowser.Model/obj/Debug/net10.0/MediaBrowser.Model.csproj.FileListAbsolute.txt @@ -2,3 +2,7 @@ C:\Projects\pgsql-jellyfin\MediaBrowser.Model\obj\Debug\net10.0\NuGet\55D74E64AE C:\Projects\pgsql-jellyfin\MediaBrowser.Model\obj\Debug\net10.0\MediaBrowser.Model.csproj.AssemblyReference.cache C:\Projects\pgsql-jellyfin\MediaBrowser.Model\obj\Debug\net10.0\MediaBrowser.Model.GeneratedMSBuildEditorConfig.editorconfig C:\Projects\pgsql-jellyfin\MediaBrowser.Model\obj\Debug\net10.0\MediaBrowser.Model.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\MediaBrowser.Model\obj\Debug\net10.0\NuGet\56CB1F26329E58CE\MimeTypes\2.5.2\MimeTypes.Nullable.cs +E:\Projects\pgsql-jellyfin\MediaBrowser.Model\obj\Debug\net10.0\MediaBrowser.Model.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\MediaBrowser.Model\obj\Debug\net10.0\MediaBrowser.Model.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\MediaBrowser.Model\obj\Debug\net10.0\MediaBrowser.Model.csproj.CoreCompileInputs.cache diff --git a/MediaBrowser.Providers/obj/Debug/net10.0/MediaBrowser.Providers.csproj.AssemblyReference.cache b/MediaBrowser.Providers/obj/Debug/net10.0/MediaBrowser.Providers.csproj.AssemblyReference.cache index c0a487da205f36cc7e39f60be5bf14193c89ba6e..2c0a98554edd3515a6152b85e103a02261d25a19 100644 GIT binary patch delta 442 zcmbQ<#JH%HaY6~ptgQ>TY^>m6tY>6lU|?WmWaQ3EEh#QZ%u7iuN?~LIieUqc^-xhp zFwMvTq|Q_e|39mHHxMKO76uw7=9`&ZlwX{mR-)&epOWgBmzYyooLS7s3f6{9Kn=uZ zu;G4-u(f7>rpN}%1XmW9q~-!m&B;kkF3HT#E7tSO%`GiSOv*`R*ift&okE#qMrB=irRQq5>?=hggEmd`#DaE#fLO(KFC9HZV4{WMt&g^OJWC2}Td~ U|4_ilz!)_7AgjXWt&BX?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19gg)!J=?VANW=6b1{EdFT>CJg2b zreK)HV8oCJgeDBB3~4}U&XB^841}g&3=%VCNCLtXpc-SKtO-!Wh`|zw(-;gG%z$DR Ko0rQ+G64XnQcd{) delta 240 zcmZp0X>gg)!P5AxcK61f7*PS1jAsSA@1^^;E}HYeLGqXA<{zSam^2KN&CHDrQjHQ* z(o8KMLwkj!Al zV9sF7V8D>dV8oEfkiwA0V9H${8QQZ*1Z*LVHYCgd diff --git a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfo.cs b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfo.cs index 0f6522c8..32e61139 100644 --- a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfo.cs +++ b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.CodeAnalysis")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.CodeAnalysis")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.CodeAnalysis")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfoInputs.cache b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfoInputs.cache index 735790b1..c944bd78 100644 --- a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfoInputs.cache +++ b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfoInputs.cache @@ -1 +1 @@ -14abb783c55dca9d506ea58b2fb4e83cf46869fbb125fd5d419b7cd5ec04579a +cfe4822f334685403d8dd28c9794902cf41ac16cf3fdae734ed53b2348acf886 diff --git a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.CoreCompileInputs.cache b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.CoreCompileInputs.cache index 182cc160..7713d2d5 100644 --- a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.CoreCompileInputs.cache +++ b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -925762113528dbfe64b2ae859ceacd4178e352a947de363b76e06cbd504b0ecf +e7c17426fec14bd402397d7c8b6303a56fe39a7ababbc3fc41dcceedc7dc82f3 diff --git a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.FileListAbsolute.txt b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.FileListAbsolute.txt index be37d619..a5152489 100644 --- a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.FileListAbsolute.txt +++ b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.FileListAbsolute.txt @@ -10,3 +10,15 @@ C:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\bin\Debug\netstandard2.0\Je C:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\bin\Debug\netstandard2.0\Jellyfin.CodeAnalysis.xml C:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\obj\Debug\netstandard2.0\Jellyfin.CodeAnalysis.dll C:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\obj\Debug\netstandard2.0\Jellyfin.CodeAnalysis.pdb +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\bin\Debug\netstandard2.0\Jellyfin.CodeAnalysis.deps.json +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\bin\Debug\netstandard2.0\Jellyfin.CodeAnalysis.dll +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\bin\Debug\netstandard2.0\Jellyfin.CodeAnalysis.pdb +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\bin\Debug\netstandard2.0\Jellyfin.CodeAnalysis.xml +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\obj\Debug\netstandard2.0\Jellyfin.CodeAnalysis.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\obj\Debug\netstandard2.0\Jellyfin.CodeAnalysis.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\obj\Debug\netstandard2.0\Jellyfin.CodeAnalysis.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\obj\Debug\netstandard2.0\Jellyfin.CodeAnalysis.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\obj\Debug\netstandard2.0\Jellyfin.CodeAnalysis.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\obj\Debug\netstandard2.0\Jellyfin.CodeAnalysis.dll +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\obj\Debug\netstandard2.0\Jellyfin.CodeAnalysis.xml +E:\Projects\pgsql-jellyfin\src\Jellyfin.CodeAnalysis\obj\Debug\netstandard2.0\Jellyfin.CodeAnalysis.pdb diff --git a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.dll b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.dll index e68302d5bfcba21aadd13c502b832049ea3eeb01..30bfbe7b3c0b2a231d4276207bbfa1fe64d06cad 100644 GIT binary patch delta 240 zcmZp0X>gg)!J=?VANW=6b1{EdFT>CJg2b zreK)HV8oCJgeDBB3~4}U&XB^841}g&3=%VCNCLtXpc-SKtO-!Wh`|zw(-;gG%z$DR Ko0rQ+G64XnQcd{) delta 240 zcmZp0X>gg)!P5AxcK61f7*PS1jAsSA@1^^;E}HYeLGqXA<{zSam^2KN&CHDrQjHQ* z(o8KMLwkj!Al zV9sF7V8D>dV8oEfkiwA0V9H${8QQZ*1Z*LVHYCgd diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AccessSchedule.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AccessSchedule.cs index 5aeb265e..360ce101 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AccessSchedule.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AccessSchedule.cs @@ -3,64 +3,64 @@ // namespace Jellyfin.Database.Implementations.Entities - -using System; -using System.ComponentModel.DataAnnotations.Schema; -using System.Xml.Serialization; -using Jellyfin.Database.Implementations.Enums; - -// -// An entity representing a user's access schedule. -// -public class AccessSchedule { + using System; + using System.ComponentModel.DataAnnotations.Schema; + using System.Xml.Serialization; + using Jellyfin.Database.Implementations.Enums; + /// - /// Initializes a new instance of the class. + /// An entity representing a user's access schedule. /// - /// The day of the week. - /// The start hour. - /// The end hour. - /// The associated user's id. - public AccessSchedule(DynamicDayOfWeek dayOfWeek, double startHour, double endHour, Guid userId) + public class AccessSchedule { - UserId = userId; - DayOfWeek = dayOfWeek; - StartHour = startHour; - EndHour = endHour; + /// + /// Initializes a new instance of the class. + /// + /// The day of the week. + /// The start hour. + /// The end hour. + /// The associated user's id. + public AccessSchedule(DynamicDayOfWeek dayOfWeek, double startHour, double endHour, Guid userId) + { + this.UserId = userId; + this.DayOfWeek = dayOfWeek; + this.StartHour = startHour; + this.EndHour = endHour; + } + + /// + /// Gets the id of this instance. + /// + /// + /// Identity, Indexed, Required. + /// + [XmlIgnore] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } + + /// + /// Gets the id of the associated user. + /// + [XmlIgnore] + public Guid UserId { get; private set; } + + /// + /// Gets or sets the day of week. + /// + /// The day of week. + public DynamicDayOfWeek DayOfWeek { get; set; } + + /// + /// Gets or sets the start hour. + /// + /// The start hour. + public double StartHour { get; set; } + + /// + /// Gets or sets the end hour. + /// + /// The end hour. + public double EndHour { get; set; } } - - /// - /// Gets the id of this instance. - /// - /// - /// Identity, Indexed, Required. - /// - [XmlIgnore] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } - - /// - /// Gets the id of the associated user. - /// - [XmlIgnore] - public Guid UserId { get; private set; } - - /// - /// Gets or sets the day of week. - /// - /// The day of week. - public DynamicDayOfWeek DayOfWeek { get; set; } - - /// - /// Gets or sets the start hour. - /// - /// The start hour. - public double StartHour { get; set; } - - /// - /// Gets or sets the end hour. - /// - /// The end hour. - public double EndHour { get; set; } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ActivityLog.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ActivityLog.cs index 8e24c01b..3c4a4db5 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ActivityLog.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ActivityLog.cs @@ -2,125 +2,132 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -namespace Jellyfin.Database.Implementations.Entities +#pragma warning disable CA1724 //The type name conflicts in whole or in part with the namespace name (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1724) -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; -using Microsoft.Extensions.Logging; +namespace Jellyfin.Database.Implementations.Entities +{ + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + using Microsoft.Extensions.Logging; /// /// An entity referencing an activity log entry. /// -public class ActivityLog : IHasConcurrencyToken -{ - /// - /// Initializes a new instance of the class. - /// Public constructor with required data. - /// - /// The name. - /// The type. - /// The user id. - public ActivityLog(string name, string type, Guid userId) + public class ActivityLog : IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(name); - ArgumentException.ThrowIfNullOrEmpty(type); + /// + /// Initializes a new instance of the class. + /// Public constructor with required data. + /// + /// The name. + /// The type. + /// The user id. + public ActivityLog(string name, string type, Guid userId) + { + ArgumentException.ThrowIfNullOrEmpty(name); + ArgumentException.ThrowIfNullOrEmpty(type); - Name = name; - Type = type; - UserId = userId; - DateCreated = DateTime.UtcNow; - LogSeverity = LogLevel.Information; - } + this.Name = name; + this.Type = type; + this.UserId = userId; + this.DateCreated = DateTime.UtcNow; + this.LogSeverity = LogLevel.Information; + } - /// - /// Gets the identity of this instance. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the identity of this instance. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the name. - /// - /// - /// Required, Max length = 512. - /// - [MaxLength(512)] - [StringLength(512)] - public string Name { get; set; } + /// + /// Gets or sets the name. + /// + /// + /// Required, Max length = 512. + /// + [MaxLength(512)] + [StringLength(512)] + public string Name { get; set; } - /// - /// Gets or sets the overview. - /// - /// - /// Max length = 512. - /// - [MaxLength(512)] - [StringLength(512)] - public string? Overview { get; set; } + /// + /// Gets or sets the overview. + /// + /// + /// Max length = 512. + /// + [MaxLength(512)] + [StringLength(512)] + public string? Overview { get; set; } - /// - /// Gets or sets the short overview. - /// - /// - /// Max length = 512. - /// - [MaxLength(512)] - [StringLength(512)] - public string? ShortOverview { get; set; } + /// + /// Gets or sets the short overview. + /// + /// + /// Max length = 512. + /// + [MaxLength(512)] + [StringLength(512)] + public string? ShortOverview { get; set; } - /// - /// Gets or sets the type. - /// - /// - /// Required, Max length = 256. - /// - [MaxLength(256)] - [StringLength(256)] - public string Type { get; set; } + /// + /// Gets or sets the type. + /// + /// + /// Required, Max length = 256. + /// + [MaxLength(256)] + [StringLength(256)] + public string Type { get; set; } - /// - /// Gets or sets the user id. - /// - /// - /// Required. - /// - public Guid UserId { get; set; } + /// + /// Gets or sets the user id. + /// + /// + /// Required. + /// + public Guid UserId { get; set; } - /// - /// Gets or sets the item id. - /// - /// - /// Max length = 256. - /// - [MaxLength(256)] - [StringLength(256)] - public string? ItemId { get; set; } + /// + /// Gets or sets the item id. + /// + /// + /// Max length = 256. + /// + [MaxLength(256)] + [StringLength(256)] + public string? ItemId { get; set; } - /// - /// Gets or sets the date created. This should be in UTC. - /// - /// - /// Required. - /// - public DateTime DateCreated { get; set; } + /// + /// Gets or sets the date created. This should be in UTC. + /// + /// + /// Required. + /// + public DateTime DateCreated { get; set; } - /// - /// Gets or sets the log severity. Default is . - /// - /// - /// Required. - /// - public LogLevel LogSeverity { get; set; } + /// + /// Gets or sets the log severity. Default is . + /// + /// + /// Required. + /// + public LogLevel LogSeverity { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + /// Gets the concurrency token used for optimistic concurrency control. + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + /// Updates the concurrency token before saving changes. + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemEntity.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemEntity.cs index 760f3934..e41a7cdd 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemEntity.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemEntity.cs @@ -6,6 +6,7 @@ namespace Jellyfin.Database.Implementations.Entities; #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member #pragma warning disable CA2227 // Collection properties should be read only +#pragma warning disable SA1600 // Missing XML comment for publicly visible type or member using System; using System.Collections.Generic; diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemExtraType.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemExtraType.cs index ad3a3299..2c05aa57 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemExtraType.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemExtraType.cs @@ -5,6 +5,9 @@ namespace Jellyfin.Database.Implementations.Entities; #pragma warning disable CS1591 +#pragma warning disable SA1600 +#pragma warning disable SA1602 +#pragma warning disable CA1720 public enum BaseItemExtraType { Unknown = 0, @@ -18,5 +21,5 @@ public enum BaseItemExtraType ThemeSong = 8, ThemeVideo = 9, Featurette = 10, - Short = 11 + Short = 11, } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/CustomItemDisplayPreferences.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/CustomItemDisplayPreferences.cs index c05900ea..49c58fc2 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/CustomItemDisplayPreferences.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/CustomItemDisplayPreferences.cs @@ -3,81 +3,82 @@ // namespace Jellyfin.Database.Implementations.Entities - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -/// -/// An entity that represents a user's custom display preferences for a specific item. -/// -public class CustomItemDisplayPreferences { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + /// - /// Initializes a new instance of the class. + /// An entity that represents a user's custom display preferences for a specific item. /// - /// The user id. - /// The item id. - /// The client. - /// The preference key. - /// The preference value. - public CustomItemDisplayPreferences(Guid userId, Guid itemId, string client, string key, string? value) + public class CustomItemDisplayPreferences { - UserId = userId; - ItemId = itemId; - Client = client; - Key = key; - Value = value; + /// + /// Initializes a new instance of the class. + /// + /// The user id. + /// The item id. + /// The client. + /// The preference key. + /// The preference value. + public CustomItemDisplayPreferences(Guid userId, Guid itemId, string client, string key, string? value) + { + this.UserId = userId; + this.ItemId = itemId; + this.Client = client; + this.Key = key; + this.Value = value; + } + + /// + /// Gets the Id. + /// + /// + /// Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } + + /// + /// Gets or sets the user Id. + /// + /// + /// Required. + /// + public Guid UserId { get; set; } + + /// + /// Gets or sets the id of the associated item. + /// + /// + /// Required. + /// + public Guid ItemId { get; set; } + + /// + /// Gets or sets the client string. + /// + /// + /// Required. Max Length = 32. + /// + [MaxLength(32)] + [StringLength(32)] + public string Client { get; set; } + + /// + /// Gets or sets the preference key. + /// + /// + /// Required. + /// + public string Key { get; set; } + + /// + /// Gets or sets the preference value. + /// + /// + /// Required. + /// + public string? Value { get; set; } } - - /// - /// Gets the Id. - /// - /// - /// Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } - - /// - /// Gets or sets the user Id. - /// - /// - /// Required. - /// - public Guid UserId { get; set; } - - /// - /// Gets or sets the id of the associated item. - /// - /// - /// Required. - /// - public Guid ItemId { get; set; } - - /// - /// Gets or sets the client string. - /// - /// - /// Required. Max Length = 32. - /// - [MaxLength(32)] - [StringLength(32)] - public string Client { get; set; } - - /// - /// Gets or sets the preference key. - /// - /// - /// Required. - /// - public string Key { get; set; } - - /// - /// Gets or sets the preference value. - /// - /// - /// Required. - /// - public string? Value { get; set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/DisplayPreferences.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/DisplayPreferences.cs index c3a94563..43f6a877 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/DisplayPreferences.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/DisplayPreferences.cs @@ -2,154 +2,155 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable CA1724 //The type name conflicts in whole or in part with the namespace name (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1724) + namespace Jellyfin.Database.Implementations.Entities - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Enums; - - -/// -/// An entity representing a user's display preferences. -/// -public class DisplayPreferences { + using System; + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Enums; + /// - /// Initializes a new instance of the class. + /// An entity representing a user's display preferences. /// - /// The user's id. - /// The item id. - /// The client string. - public DisplayPreferences(Guid userId, Guid itemId, string client) + public class DisplayPreferences { - UserId = userId; - ItemId = itemId; - Client = client; - ShowSidebar = false; - ShowBackdrop = true; - SkipForwardLength = 30000; - SkipBackwardLength = 10000; - ScrollDirection = ScrollDirection.Horizontal; - ChromecastVersion = ChromecastVersion.Stable; + /// + /// Initializes a new instance of the class. + /// + /// The user's id. + /// The item id. + /// The client string. + public DisplayPreferences(Guid userId, Guid itemId, string client) + { + this.UserId = userId; + this.ItemId = itemId; + this.Client = client; + this.ShowSidebar = false; + this.ShowBackdrop = true; + this.SkipForwardLength = 30000; + this.SkipBackwardLength = 10000; + this.ScrollDirection = ScrollDirection.Horizontal; + this.ChromecastVersion = ChromecastVersion.Stable; - HomeSections = new HashSet(); + this.HomeSections = new HashSet(); + } + + /// + /// Gets the Id. + /// + /// + /// Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } + + /// + /// Gets or sets the user Id. + /// + /// + /// Required. + /// + public Guid UserId { get; set; } + + /// + /// Gets or sets the id of the associated item. + /// + /// + /// Required. + /// + public Guid ItemId { get; set; } + + /// + /// Gets or sets the client string. + /// + /// + /// Required. Max Length = 32. + /// + [MaxLength(32)] + [StringLength(32)] + public string Client { get; set; } + + /// + /// Gets or sets a value indicating whether to show the sidebar. + /// + /// + /// Required. + /// + public bool ShowSidebar { get; set; } + + /// + /// Gets or sets a value indicating whether to show the backdrop. + /// + /// + /// Required. + /// + public bool ShowBackdrop { get; set; } + + /// + /// Gets or sets the scroll direction. + /// + /// + /// Required. + /// + public ScrollDirection ScrollDirection { get; set; } + + /// + /// Gets or sets what the view should be indexed by. + /// + public IndexingKind? IndexBy { get; set; } + + /// + /// Gets or sets the length of time to skip forwards, in milliseconds. + /// + /// + /// Required. + /// + public int SkipForwardLength { get; set; } + + /// + /// Gets or sets the length of time to skip backwards, in milliseconds. + /// + /// + /// Required. + /// + public int SkipBackwardLength { get; set; } + + /// + /// Gets or sets the Chromecast Version. + /// + /// + /// Required. + /// + public ChromecastVersion ChromecastVersion { get; set; } + + /// + /// Gets or sets a value indicating whether the next video info overlay should be shown. + /// + /// + /// Required. + /// + public bool EnableNextVideoInfoOverlay { get; set; } + + /// + /// Gets or sets the dashboard theme. + /// + [MaxLength(32)] + [StringLength(32)] + public string? DashboardTheme { get; set; } + + /// + /// Gets or sets the tv home screen. + /// + [MaxLength(32)] + [StringLength(32)] + public string? TvHome { get; set; } + + /// + /// Gets the home sections. + /// + public virtual ICollection HomeSections { get; private set; } } - - /// - /// Gets the Id. - /// - /// - /// Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } - - /// - /// Gets or sets the user Id. - /// - /// - /// Required. - /// - public Guid UserId { get; set; } - - /// - /// Gets or sets the id of the associated item. - /// - /// - /// Required. - /// - public Guid ItemId { get; set; } - - /// - /// Gets or sets the client string. - /// - /// - /// Required. Max Length = 32. - /// - [MaxLength(32)] - [StringLength(32)] - public string Client { get; set; } - - /// - /// Gets or sets a value indicating whether to show the sidebar. - /// - /// - /// Required. - /// - public bool ShowSidebar { get; set; } - - /// - /// Gets or sets a value indicating whether to show the backdrop. - /// - /// - /// Required. - /// - public bool ShowBackdrop { get; set; } - - /// - /// Gets or sets the scroll direction. - /// - /// - /// Required. - /// - public ScrollDirection ScrollDirection { get; set; } - - /// - /// Gets or sets what the view should be indexed by. - /// - public IndexingKind? IndexBy { get; set; } - - /// - /// Gets or sets the length of time to skip forwards, in milliseconds. - /// - /// - /// Required. - /// - public int SkipForwardLength { get; set; } - - /// - /// Gets or sets the length of time to skip backwards, in milliseconds. - /// - /// - /// Required. - /// - public int SkipBackwardLength { get; set; } - - /// - /// Gets or sets the Chromecast Version. - /// - /// - /// Required. - /// - public ChromecastVersion ChromecastVersion { get; set; } - - /// - /// Gets or sets a value indicating whether the next video info overlay should be shown. - /// - /// - /// Required. - /// - public bool EnableNextVideoInfoOverlay { get; set; } - - /// - /// Gets or sets the dashboard theme. - /// - [MaxLength(32)] - [StringLength(32)] - public string? DashboardTheme { get; set; } - - /// - /// Gets or sets the tv home screen. - /// - [MaxLength(32)] - [StringLength(32)] - public string? TvHome { get; set; } - - /// - /// Gets the home sections. - /// - public virtual ICollection HomeSections { get; private set; } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Group.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Group.cs index 8db31da3..8a8dfab8 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Group.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Group.cs @@ -3,68 +3,68 @@ // namespace Jellyfin.Database.Implementations.Entities - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a group. -/// -public class Group : IHasPermissions, IHasConcurrencyToken { + using System; + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a group. /// - /// The name of the group. - public Group(string name) + public class Group : IHasPermissions, IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(name); + /// + /// Initializes a new instance of the class. + /// + /// The name of the group. + public Group(string name) + { + ArgumentException.ThrowIfNullOrEmpty(name); - Name = name; - Id = Guid.NewGuid(); + this.Name = name; + this.Id = Guid.NewGuid(); - Permissions = new HashSet(); - Preferences = new HashSet(); - } + this.Permissions = new HashSet(); + this.Preferences = new HashSet(); + } - /// - /// Gets the id of this group. - /// - /// - /// Identity, Indexed, Required. - /// - public Guid Id { get; private set; } + /// + /// Gets the id of this group. + /// + /// + /// Identity, Indexed, Required. + /// + public Guid Id { get; private set; } - /// - /// Gets or sets the group's name. - /// - /// - /// Required, Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string Name { get; set; } + /// + /// Gets or sets the group's name. + /// + /// + /// Required, Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string Name { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets a collection containing the group's permissions. - /// - public virtual ICollection Permissions { get; private set; } + /// + /// Gets a collection containing the group's permissions. + /// + public virtual ICollection Permissions { get; private set; } - /// - /// Gets a collection containing the group's preferences. - /// - public virtual ICollection Preferences { get; private set; } + /// + /// Gets a collection containing the group's preferences. + /// + public virtual ICollection Preferences { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/HomeSection.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/HomeSection.cs index 4e18bd33..db2adf24 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/HomeSection.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/HomeSection.cs @@ -3,46 +3,46 @@ // namespace Jellyfin.Database.Implementations.Entities - -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Enums; - -/// -/// An entity representing a section on the user's home page. -/// -public class HomeSection { - /// - /// Gets the id. - /// - /// - /// Identity. Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Enums; /// - /// Gets or sets the Id of the associated display preferences. + /// An entity representing a section on the user's home page. /// - /// - /// Required. - /// - public int DisplayPreferencesId { get; set; } + public class HomeSection + { + /// + /// Gets the id. + /// + /// + /// Identity. Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the order. - /// - /// - /// Required. - /// - public int Order { get; set; } + /// + /// Gets or sets the Id of the associated display preferences. + /// + /// + /// Required. + /// + public int DisplayPreferencesId { get; set; } - /// - /// Gets or sets the type. - /// - /// - /// Required. - /// - public HomeSectionType Type { get; set; } + /// + /// Gets or sets the order. + /// + /// + /// Required. + /// + public int Order { get; set; } + + /// + /// Gets or sets the type. + /// + /// + /// Required. + /// + public HomeSectionType Type { get; set; } + } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfo.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfo.cs index 0cb3506b..3f382c28 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfo.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfo.cs @@ -3,55 +3,56 @@ // namespace Jellyfin.Database.Implementations.Entities - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -/// -/// An entity representing an image. -/// -public class ImageInfo { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + /// - /// Initializes a new instance of the class. + /// An entity representing an image. /// - /// The path. - public ImageInfo(string path) + public class ImageInfo { - Path = path; - LastModified = DateTime.UtcNow; + /// + /// Initializes a new instance of the class. + /// + /// The path. + public ImageInfo(string path) + { + this.Path = path; + this.LastModified = DateTime.UtcNow; + } + + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } + + /// + /// Gets the user id. + /// + public Guid? UserId { get; private set; } + + /// + /// Gets or sets the path of the image. + /// + /// + /// Required. + /// + [MaxLength(512)] + [StringLength(512)] + public string Path { get; set; } + + /// + /// Gets or sets the date last modified. + /// + /// + /// Required. + /// + public DateTime LastModified { get; set; } } - - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } - - /// - /// Gets the user id. - /// - public Guid? UserId { get; private set; } - - /// - /// Gets or sets the path of the image. - /// - /// - /// Required. - /// - [MaxLength(512)] - [StringLength(512)] - public string Path { get; set; } - - /// - /// Gets or sets the date last modified. - /// - /// - /// Required. - /// - public DateTime LastModified { get; set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfoImageType.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfoImageType.cs index 60e8e944..fd8b63e6 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfoImageType.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfoImageType.cs @@ -76,5 +76,5 @@ public enum ImageInfoImageType /// /// The user profile image. /// - Profile = 12 + Profile = 12, } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemDisplayPreferences.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemDisplayPreferences.cs index b6fb8f5d..c0d35dc1 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemDisplayPreferences.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemDisplayPreferences.cs @@ -3,13 +3,12 @@ // namespace Jellyfin.Database.Implementations.Entities - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Enums; - { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Enums; + /// /// An entity that represents a user's display preferences for a specific item. /// @@ -23,14 +22,14 @@ using Jellyfin.Database.Implementations.Enums; /// The client. public ItemDisplayPreferences(Guid userId, Guid itemId, string client) { - UserId = userId; - ItemId = itemId; - Client = client; + this.UserId = userId; + this.ItemId = itemId; + this.Client = client; - SortBy = "SortName"; - SortOrder = SortOrder.Ascending; - RememberSorting = false; - RememberIndexing = false; + this.SortBy = "SortName"; + this.SortOrder = SortOrder.Ascending; + this.RememberSorting = false; + this.RememberIndexing = false; } /// diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Artwork.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Artwork.cs index 36ec9132..eb0e878d 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Artwork.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Artwork.cs @@ -3,67 +3,66 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Enums; -using Jellyfin.Database.Implementations.Interfaces; - - -/// -/// An entity representing artwork. -/// -public class Artwork : IHasConcurrencyToken { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Enums; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing artwork. /// - /// The path. - /// The kind of art. - public Artwork(string path, ArtKind kind) + public class Artwork : IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(path); + /// + /// Initializes a new instance of the class. + /// + /// The path. + /// The kind of art. + public Artwork(string path, ArtKind kind) + { + ArgumentException.ThrowIfNullOrEmpty(path); - Path = path; - Kind = kind; - } + this.Path = path; + this.Kind = kind; + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the path. - /// - /// - /// Required, Max length = 65535. - /// - [MaxLength(65535)] - [StringLength(65535)] - public string Path { get; set; } + /// + /// Gets or sets the path. + /// + /// + /// Required, Max length = 65535. + /// + [MaxLength(65535)] + [StringLength(65535)] + public string Path { get; set; } - /// - /// Gets or sets the kind of artwork. - /// - /// - /// Required. - /// - public ArtKind Kind { get; set; } + /// + /// Gets or sets the kind of artwork. + /// + /// + /// Required. + /// + public ArtKind Kind { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Book.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Book.cs index 8b83eb78..201ef8d3 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Book.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Book.cs @@ -2,31 +2,35 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line +#pragma warning disable CA1724 + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a book. -/// -public class Book : LibraryItem, IHasReleases { + using System.Collections.Generic; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a book. /// - /// The library. - public Book(Library library) : base(library) + public class Book : LibraryItem, IHasReleases { - BookMetadata = new HashSet(); - Releases = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The library. + public Book(Library library) : base(library) + { + this.BookMetadata = new HashSet(); + this.Releases = new HashSet(); + } + + /// + /// Gets a collection containing the metadata for this book. + /// + public virtual ICollection BookMetadata { get; private set; } + + /// + public virtual ICollection Releases { get; private set; } } - - /// - /// Gets a collection containing the metadata for this book. - /// - public virtual ICollection BookMetadata { get; private set; } - - /// - public virtual ICollection Releases { get; private set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/BookMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/BookMetadata.cs index e639e1ae..5a7a4829 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/BookMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/BookMetadata.cs @@ -2,36 +2,39 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity containing metadata for a book. -/// -public class BookMetadata : ItemMetadata, IHasCompanies { + using System.Collections.Generic; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity containing metadata for a book. /// - /// The title or name of the object. - /// ISO-639-3 3-character language codes. - public BookMetadata(string title, string language) : base(title, language) + public class BookMetadata : ItemMetadata, IHasCompanies { - Publishers = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the object. + /// ISO-639-3 3-character language codes. + public BookMetadata(string title, string language) : base(title, language) + { + this.Publishers = new HashSet(); + } + + /// + /// Gets or sets the ISBN. + /// + public long? Isbn { get; set; } + + /// + /// Gets a collection of the publishers for this book. + /// + public virtual ICollection Publishers { get; private set; } + + /// + public ICollection Companies => this.Publishers; } - - /// - /// Gets or sets the ISBN. - /// - public long? Isbn { get; set; } - - /// - /// Gets a collection of the publishers for this book. - /// - public virtual ICollection Publishers { get; private set; } - - /// - public ICollection Companies => Publishers; } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Chapter.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Chapter.cs index 3f2a6a8b..b23ac8de 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Chapter.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Chapter.cs @@ -3,81 +3,82 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a chapter. -/// -public class Chapter : IHasConcurrencyToken { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a chapter. /// - /// ISO-639-3 3-character language codes. - /// The start time for this chapter. - public Chapter(string language, long startTime) + public class Chapter : IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(language); + /// + /// Initializes a new instance of the class. + /// + /// ISO-639-3 3-character language codes. + /// The start time for this chapter. + public Chapter(string language, long startTime) + { + ArgumentException.ThrowIfNullOrEmpty(language); - Language = language; - StartTime = startTime; - } + this.Language = language; + this.StartTime = startTime; + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the name. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Name { get; set; } + /// + /// Gets or sets the name. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Name { get; set; } - /// - /// Gets or sets the language. - /// - /// - /// Required, Min length = 3, Max length = 3 - /// ISO-639-3 3-character language codes. - /// - [MinLength(3)] - [MaxLength(3)] - [StringLength(3)] - public string Language { get; set; } + /// + /// Gets or sets the language. + /// + /// + /// Required, Min length = 3, Max length = 3 + /// ISO-639-3 3-character language codes. + /// + [MinLength(3)] + [MaxLength(3)] + [StringLength(3)] + public string Language { get; set; } - /// - /// Gets or sets the start time. - /// - /// - /// Required. - /// - public long StartTime { get; set; } + /// + /// Gets or sets the start time. + /// + /// + /// Required. + /// + public long StartTime { get; set; } - /// - /// Gets or sets the end time. - /// - public long? EndTime { get; set; } + /// + /// Gets or sets the end time. + /// + public long? EndTime { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Collection.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Collection.cs index 4db4e2ba..b3b42bc6 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Collection.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Collection.cs @@ -5,56 +5,57 @@ #pragma warning disable CA1711 // Identifiers should not have incorrect suffix namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a collection. -/// -public class Collection : IHasConcurrencyToken { + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a collection. /// - public Collection() + public class Collection : IHasConcurrencyToken { - Items = new HashSet(); - } + /// + /// Initializes a new instance of the class. + /// + public Collection() + { + this.Items = new HashSet(); + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the name. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Name { get; set; } + /// + /// Gets or sets the name. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Name { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets a collection containing this collection's items. - /// - public virtual ICollection Items { get; private set; } + /// + /// Gets a collection containing this collection's items. + /// + public virtual ICollection Items { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CollectionItem.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CollectionItem.cs index 54d14dae..0f8b9325 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CollectionItem.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CollectionItem.cs @@ -2,66 +2,69 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable CA1716 // Ignore keyword + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a collection item. -/// -public class CollectionItem : IHasConcurrencyToken { + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a collection item. /// - /// The library item. - public CollectionItem(LibraryItem libraryItem) + public class CollectionItem : IHasConcurrencyToken { - LibraryItem = libraryItem; - } + /// + /// Initializes a new instance of the class. + /// + /// The library item. + public CollectionItem(LibraryItem libraryItem) + { + this.LibraryItem = libraryItem; + } - /// - /// Gets or sets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } + /// + /// Gets or sets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets or sets the library item. - /// - /// - /// Required. - /// - public virtual LibraryItem LibraryItem { get; set; } + /// + /// Gets or sets the library item. + /// + /// + /// Required. + /// + public virtual LibraryItem LibraryItem { get; set; } - /// - /// Gets or sets the next item in the collection. - /// - /// - /// TODO check if this properly updated Dependent and has the proper principal relationship. - /// - public virtual CollectionItem? Next { get; set; } + /// + /// Gets or sets the next item in the collection. + /// + /// + /// TODO check if this properly updated Dependent and has the proper principal relationship. + /// + public virtual CollectionItem? Next { get; set; } - /// - /// Gets or sets the previous item in the collection. - /// - /// - /// TODO check if this properly updated Dependent and has the proper principal relationship. - /// - public virtual CollectionItem? Previous { get; set; } + /// + /// Gets or sets the previous item in the collection. + /// + /// + /// TODO check if this properly updated Dependent and has the proper principal relationship. + /// + public virtual CollectionItem? Previous { get; set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Company.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Company.cs index 472e6a27..964caaf5 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Company.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Company.cs @@ -3,55 +3,56 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a company. -/// -public class Company : IHasCompanies, IHasConcurrencyToken { + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a company. /// - public Company() + public class Company : IHasCompanies, IHasConcurrencyToken { - CompanyMetadata = new HashSet(); - ChildCompanies = new HashSet(); - } + /// + /// Initializes a new instance of the class. + /// + public Company() + { + this.CompanyMetadata = new HashSet(); + this.ChildCompanies = new HashSet(); + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets a collection containing the metadata. - /// - public virtual ICollection CompanyMetadata { get; private set; } + /// + /// Gets a collection containing the metadata. + /// + public virtual ICollection CompanyMetadata { get; private set; } - /// - /// Gets a collection containing this company's child companies. - /// - public virtual ICollection ChildCompanies { get; private set; } + /// + /// Gets a collection containing this company's child companies. + /// + public virtual ICollection ChildCompanies { get; private set; } - /// - public ICollection Companies => ChildCompanies; + /// + public ICollection Companies => this.ChildCompanies; - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CompanyMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CompanyMetadata.cs index d5bb07dc..bc19cfc5 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CompanyMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CompanyMetadata.cs @@ -2,61 +2,64 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.ComponentModel.DataAnnotations; - -/// -/// An entity holding metadata for a . -/// -public class CompanyMetadata : ItemMetadata { + using System.ComponentModel.DataAnnotations; + /// - /// Initializes a new instance of the class. + /// An entity holding metadata for a . /// - /// The title or name of the object. - /// ISO-639-3 3-character language codes. - public CompanyMetadata(string title, string language) : base(title, language) + public class CompanyMetadata : ItemMetadata { + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the object. + /// ISO-639-3 3-character language codes. + public CompanyMetadata(string title, string language) : base(title, language) + { + } + + /// + /// Gets or sets the description. + /// + /// + /// Max length = 65535. + /// + [MaxLength(65535)] + [StringLength(65535)] + public string? Description { get; set; } + + /// + /// Gets or sets the headquarters. + /// + /// + /// Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string? Headquarters { get; set; } + + /// + /// Gets or sets the country code. + /// + /// + /// Max length = 2. + /// + [MaxLength(2)] + [StringLength(2)] + public string? Country { get; set; } + + /// + /// Gets or sets the homepage. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Homepage { get; set; } } - - /// - /// Gets or sets the description. - /// - /// - /// Max length = 65535. - /// - [MaxLength(65535)] - [StringLength(65535)] - public string? Description { get; set; } - - /// - /// Gets or sets the headquarters. - /// - /// - /// Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string? Headquarters { get; set; } - - /// - /// Gets or sets the country code. - /// - /// - /// Max length = 2. - /// - [MaxLength(2)] - [StringLength(2)] - public string? Country { get; set; } - - /// - /// Gets or sets the homepage. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Homepage { get; set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItem.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItem.cs index b7939d7c..41b7c372 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItem.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItem.cs @@ -2,31 +2,34 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a custom item. -/// -public class CustomItem : LibraryItem, IHasReleases { + using System.Collections.Generic; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a custom item. /// - /// The library. - public CustomItem(Library library) : base(library) + public class CustomItem : LibraryItem, IHasReleases { - CustomItemMetadata = new HashSet(); - Releases = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The library. + public CustomItem(Library library) : base(library) + { + this.CustomItemMetadata = new HashSet(); + this.Releases = new HashSet(); + } + + /// + /// Gets a collection containing the metadata for this item. + /// + public virtual ICollection CustomItemMetadata { get; private set; } + + /// + public virtual ICollection Releases { get; private set; } } - - /// - /// Gets a collection containing the metadata for this item. - /// - public virtual ICollection CustomItemMetadata { get; private set; } - - /// - public virtual ICollection Releases { get; private set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItemMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItemMetadata.cs index 7df9b9f3..401d0b8c 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItemMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItemMetadata.cs @@ -2,19 +2,22 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -namespace Jellyfin.Database.Implementations.Entities.Libraries +#pragma warning disable SA1128 // Put constructor initializers on their own line -/// -/// An entity containing metadata for a custom item. -/// -public class CustomItemMetadata : ItemMetadata +namespace Jellyfin.Database.Implementations.Entities.Libraries { /// - /// Initializes a new instance of the class. + /// An entity containing metadata for a custom item. /// - /// The title or name of the object. - /// ISO-639-3 3-character language codes. - public CustomItemMetadata(string title, string language) : base(title, language) + public class CustomItemMetadata : ItemMetadata { + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the object. + /// ISO-639-3 3-character language codes. + public CustomItemMetadata(string title, string language) : base(title, language) + { + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Episode.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Episode.cs index 88194f2a..b0daea0a 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Episode.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Episode.cs @@ -2,36 +2,39 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing an episode. -/// -public class Episode : LibraryItem, IHasReleases { + using System.Collections.Generic; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing an episode. /// - /// The library. - public Episode(Library library) : base(library) + public class Episode : LibraryItem, IHasReleases { - Releases = new HashSet(); - EpisodeMetadata = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The library. + public Episode(Library library) : base(library) + { + this.Releases = new HashSet(); + this.EpisodeMetadata = new HashSet(); + } + + /// + /// Gets or sets the episode number. + /// + public int? EpisodeNumber { get; set; } + + /// + public virtual ICollection Releases { get; private set; } + + /// + /// Gets a collection containing the metadata for this episode. + /// + public virtual ICollection EpisodeMetadata { get; private set; } } - - /// - /// Gets or sets the episode number. - /// - public int? EpisodeNumber { get; set; } - - /// - public virtual ICollection Releases { get; private set; } - - /// - /// Gets a collection containing the metadata for this episode. - /// - public virtual ICollection EpisodeMetadata { get; private set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/EpisodeMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/EpisodeMetadata.cs index 7fa679c9..484a5434 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/EpisodeMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/EpisodeMetadata.cs @@ -2,51 +2,54 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.ComponentModel.DataAnnotations; - -/// -/// An entity containing metadata for an . -/// -public class EpisodeMetadata : ItemMetadata { + using System.ComponentModel.DataAnnotations; + /// - /// Initializes a new instance of the class. + /// An entity containing metadata for an . /// - /// The title or name of the object. - /// ISO-639-3 3-character language codes. - public EpisodeMetadata(string title, string language) : base(title, language) + public class EpisodeMetadata : ItemMetadata { + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the object. + /// ISO-639-3 3-character language codes. + public EpisodeMetadata(string title, string language) : base(title, language) + { + } + + /// + /// Gets or sets the outline. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Outline { get; set; } + + /// + /// Gets or sets the plot. + /// + /// + /// Max length = 65535. + /// + [MaxLength(65535)] + [StringLength(65535)] + public string? Plot { get; set; } + + /// + /// Gets or sets the tagline. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Tagline { get; set; } } - - /// - /// Gets or sets the outline. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Outline { get; set; } - - /// - /// Gets or sets the plot. - /// - /// - /// Max length = 65535. - /// - [MaxLength(65535)] - [StringLength(65535)] - public string? Plot { get; set; } - - /// - /// Gets or sets the tagline. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Tagline { get; set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Genre.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Genre.cs index b2413408..b6b78225 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Genre.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Genre.cs @@ -3,51 +3,52 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a genre. -/// -public class Genre : IHasConcurrencyToken { + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a genre. /// - /// The name. - public Genre(string name) + public class Genre : IHasConcurrencyToken { - Name = name; - } + /// + /// Initializes a new instance of the class. + /// + /// The name. + public Genre(string name) + { + this.Name = name; + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the name. - /// - /// - /// Indexed, Required, Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string Name { get; set; } + /// + /// Gets or sets the name. + /// + /// + /// Indexed, Required, Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string Name { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/ItemMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/ItemMetadata.cs index 0a97c6dd..bb30c8f9 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/ItemMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/ItemMetadata.cs @@ -3,142 +3,143 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An abstract class that holds metadata. -/// -public abstract class ItemMetadata : IHasArtwork, IHasConcurrencyToken { + using System; + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An abstract class that holds metadata. /// - /// The title or name of the object. - /// ISO-639-3 3-character language codes. - protected ItemMetadata(string title, string language) + public abstract class ItemMetadata : IHasArtwork, IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(title); - ArgumentException.ThrowIfNullOrEmpty(language); + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the object. + /// ISO-639-3 3-character language codes. + protected ItemMetadata(string title, string language) + { + ArgumentException.ThrowIfNullOrEmpty(title); + ArgumentException.ThrowIfNullOrEmpty(language); - Title = title; - Language = language; - DateAdded = DateTime.UtcNow; - DateModified = DateAdded; + this.Title = title; + this.Language = language; + this.DateAdded = DateTime.UtcNow; + this.DateModified = this.DateAdded; - PersonRoles = new HashSet(); - Genres = new HashSet(); - Artwork = new HashSet(); - Ratings = new HashSet(); - Sources = new HashSet(); - } + this.PersonRoles = new HashSet(); + this.Genres = new HashSet(); + this.Artwork = new HashSet(); + this.Ratings = new HashSet(); + this.Sources = new HashSet(); + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the title. - /// - /// - /// Required, Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string Title { get; set; } + /// + /// Gets or sets the title. + /// + /// + /// Required, Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string Title { get; set; } - /// - /// Gets or sets the original title. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? OriginalTitle { get; set; } + /// + /// Gets or sets the original title. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? OriginalTitle { get; set; } - /// - /// Gets or sets the sort title. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? SortTitle { get; set; } + /// + /// Gets or sets the sort title. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? SortTitle { get; set; } - /// - /// Gets or sets the language. - /// - /// - /// Required, Min length = 3, Max length = 3. - /// ISO-639-3 3-character language codes. - /// - [MinLength(3)] - [MaxLength(3)] - [StringLength(3)] - public string Language { get; set; } + /// + /// Gets or sets the language. + /// + /// + /// Required, Min length = 3, Max length = 3. + /// ISO-639-3 3-character language codes. + /// + [MinLength(3)] + [MaxLength(3)] + [StringLength(3)] + public string Language { get; set; } - /// - /// Gets or sets the release date. - /// - public DateTimeOffset? ReleaseDate { get; set; } + /// + /// Gets or sets the release date. + /// + public DateTimeOffset? ReleaseDate { get; set; } - /// - /// Gets the date added. - /// - /// - /// Required. - /// - public DateTime DateAdded { get; private set; } + /// + /// Gets the date added. + /// + /// + /// Required. + /// + public DateTime DateAdded { get; private set; } - /// - /// Gets or sets the date modified. - /// - /// - /// Required. - /// - public DateTime DateModified { get; set; } + /// + /// Gets or sets the date modified. + /// + /// + /// Required. + /// + public DateTime DateModified { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets a collection containing the person roles for this item. - /// - public virtual ICollection PersonRoles { get; private set; } + /// + /// Gets a collection containing the person roles for this item. + /// + public virtual ICollection PersonRoles { get; private set; } - /// - /// Gets a collection containing the genres for this item. - /// - public virtual ICollection Genres { get; private set; } + /// + /// Gets a collection containing the genres for this item. + /// + public virtual ICollection Genres { get; private set; } - /// - public virtual ICollection Artwork { get; private set; } + /// + public virtual ICollection Artwork { get; private set; } - /// - /// Gets a collection containing the ratings for this item. - /// - public virtual ICollection Ratings { get; private set; } + /// + /// Gets a collection containing the ratings for this item. + /// + public virtual ICollection Ratings { get; private set; } - /// - /// Gets a collection containing the metadata sources for this item. - /// - public virtual ICollection Sources { get; private set; } + /// + /// Gets a collection containing the metadata sources for this item. + /// + public virtual ICollection Sources { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Library.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Library.cs index b32d0b6e..b8811cf8 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Library.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Library.cs @@ -2,62 +2,65 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable CA1724 + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a library. -/// -public class Library : IHasConcurrencyToken { + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a library. /// - /// The name of the library. - /// The path of the library. - public Library(string name, string path) + public class Library : IHasConcurrencyToken { - Name = name; - Path = path; + /// + /// Initializes a new instance of the class. + /// + /// The name of the library. + /// The path of the library. + public Library(string name, string path) + { + this.Name = name; + this.Path = path; + } + + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } + + /// + /// Gets or sets the name. + /// + /// + /// Required, Max length = 128. + /// + [MaxLength(128)] + [StringLength(128)] + public string Name { get; set; } + + /// + /// Gets or sets the root path of the library. + /// + /// + /// Required. + /// + public string Path { get; set; } + + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } + + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } - - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } - - /// - /// Gets or sets the name. - /// - /// - /// Required, Max length = 128. - /// - [MaxLength(128)] - [StringLength(128)] - public string Name { get; set; } - - /// - /// Gets or sets the root path of the library. - /// - /// - /// Required. - /// - public string Path { get; set; } - - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } - - /// - public void OnSavingChanges() - { - RowVersion++; - } -} \ No newline at end of file +} diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/LibraryItem.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/LibraryItem.cs index e1f2f2bd..cd61b9c0 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/LibraryItem.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/LibraryItem.cs @@ -3,56 +3,57 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a library item. -/// -public abstract class LibraryItem : IHasConcurrencyToken { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a library item. /// - /// The library of this item. - protected LibraryItem(Library library) + public abstract class LibraryItem : IHasConcurrencyToken { - DateAdded = DateTime.UtcNow; - Library = library; - } + /// + /// Initializes a new instance of the class. + /// + /// The library of this item. + protected LibraryItem(Library library) + { + this.DateAdded = DateTime.UtcNow; + this.Library = library; + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets the date this library item was added. - /// - public DateTime DateAdded { get; private set; } + /// + /// Gets the date this library item was added. + /// + public DateTime DateAdded { get; private set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets or sets the library of this item. - /// - /// - /// Required. - /// - public virtual Library Library { get; set; } + /// + /// Gets or sets the library of this item. + /// + /// + /// Required. + /// + public virtual Library Library { get; set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFile.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFile.cs index 80e063d2..23556c56 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFile.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFile.cs @@ -3,73 +3,74 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Enums; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a file on disk. -/// -public class MediaFile : IHasConcurrencyToken { + using System; + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Enums; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a file on disk. /// - /// The path relative to the LibraryRoot. - /// The file kind. - public MediaFile(string path, MediaFileKind kind) + public class MediaFile : IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(path); + /// + /// Initializes a new instance of the class. + /// + /// The path relative to the LibraryRoot. + /// The file kind. + public MediaFile(string path, MediaFileKind kind) + { + ArgumentException.ThrowIfNullOrEmpty(path); - Path = path; - Kind = kind; + this.Path = path; + this.Kind = kind; - MediaFileStreams = new HashSet(); - } + this.MediaFileStreams = new HashSet(); + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the path relative to the library root. - /// - /// - /// Required, Max length = 65535. - /// - [MaxLength(65535)] - [StringLength(65535)] - public string Path { get; set; } + /// + /// Gets or sets the path relative to the library root. + /// + /// + /// Required, Max length = 65535. + /// + [MaxLength(65535)] + [StringLength(65535)] + public string Path { get; set; } - /// - /// Gets or sets the kind of media file. - /// - /// - /// Required. - /// - public MediaFileKind Kind { get; set; } + /// + /// Gets or sets the kind of media file. + /// + /// + /// Required. + /// + public MediaFileKind Kind { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets a collection containing the streams in this file. - /// - public virtual ICollection MediaFileStreams { get; private set; } + /// + /// Gets a collection containing the streams in this file. + /// + public virtual ICollection MediaFileStreams { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFileStream.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFileStream.cs index ac56931d..d1dce7b1 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFileStream.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFileStream.cs @@ -3,51 +3,52 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - +{ #pragma warning disable CA1711 // Identifiers should not have incorrect suffix -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; -/// -/// An entity representing a stream in a media file. -/// -public class MediaFileStream : IHasConcurrencyToken -{ /// - /// Initializes a new instance of the class. + /// An entity representing a stream in a media file. /// - /// The number of this stream. - public MediaFileStream(int streamNumber) + public class MediaFileStream : IHasConcurrencyToken { - StreamNumber = streamNumber; - } + /// + /// Initializes a new instance of the class. + /// + /// The number of this stream. + public MediaFileStream(int streamNumber) + { + this.StreamNumber = streamNumber; + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the stream number. - /// - /// - /// Required. - /// - public int StreamNumber { get; set; } + /// + /// Gets or sets the stream number. + /// + /// + /// Required. + /// + public int StreamNumber { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProvider.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProvider.cs index 8e87bb0a..1afc3f01 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProvider.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProvider.cs @@ -3,54 +3,55 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a metadata provider. -/// -public class MetadataProvider : IHasConcurrencyToken { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a metadata provider. /// - /// The name of the metadata provider. - public MetadataProvider(string name) + public class MetadataProvider : IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(name); + /// + /// Initializes a new instance of the class. + /// + /// The name of the metadata provider. + public MetadataProvider(string name) + { + ArgumentException.ThrowIfNullOrEmpty(name); - Name = name; - } + this.Name = name; + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the name. - /// - /// - /// Required, Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string Name { get; set; } + /// + /// Gets or sets the name. + /// + /// + /// Required, Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string Name { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProviderId.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProviderId.cs index e46b6c9e..c109253a 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProviderId.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProviderId.cs @@ -3,65 +3,65 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a unique identifier for a metadata provider. -/// -public class MetadataProviderId : IHasConcurrencyToken { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a unique identifier for a metadata provider. /// - /// The provider id. - /// The metadata provider. - public MetadataProviderId(string providerId, MetadataProvider metadataProvider) + public class MetadataProviderId : IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(providerId); + /// + /// Initializes a new instance of the class. + /// + /// The provider id. + /// The metadata provider. + public MetadataProviderId(string providerId, MetadataProvider metadataProvider) + { + ArgumentException.ThrowIfNullOrEmpty(providerId); - ProviderId = providerId; - MetadataProvider = metadataProvider; - } + this.ProviderId = providerId; + this.MetadataProvider = metadataProvider; + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the provider id. - /// - /// - /// Required, Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string ProviderId { get; set; } + /// + /// Gets or sets the provider id. + /// + /// + /// Required, Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string ProviderId { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets or sets the metadata provider. - /// - /// - /// Required. - /// - public virtual MetadataProvider MetadataProvider { get; set; } + /// + /// Gets or sets the metadata provider. + /// + /// + /// Required. + /// + public virtual MetadataProvider MetadataProvider { get; set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Movie.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Movie.cs index 67e4943f..61fee13a 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Movie.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Movie.cs @@ -2,31 +2,35 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line +#pragma warning disable CA1724 + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a movie. -/// -public class Movie : LibraryItem, IHasReleases { + using System.Collections.Generic; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a movie. /// - /// The library. - public Movie(Library library) : base(library) + public class Movie : LibraryItem, IHasReleases { - Releases = new HashSet(); - MovieMetadata = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The library. + public Movie(Library library) : base(library) + { + this.Releases = new HashSet(); + this.MovieMetadata = new HashSet(); + } + + /// + public virtual ICollection Releases { get; private set; } + + /// + /// Gets a collection containing the metadata for this movie. + /// + public virtual ICollection MovieMetadata { get; private set; } } - - /// - public virtual ICollection Releases { get; private set; } - - /// - /// Gets a collection containing the metadata for this movie. - /// - public virtual ICollection MovieMetadata { get; private set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MovieMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MovieMetadata.cs index d7db3986..fd1ce91b 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MovieMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MovieMetadata.cs @@ -2,72 +2,75 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity holding the metadata for a movie. -/// -public class MovieMetadata : ItemMetadata, IHasCompanies { + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity holding the metadata for a movie. /// - /// The title or name of the movie. - /// ISO-639-3 3-character language codes. - public MovieMetadata(string title, string language) : base(title, language) + public class MovieMetadata : ItemMetadata, IHasCompanies { - Studios = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the movie. + /// ISO-639-3 3-character language codes. + public MovieMetadata(string title, string language) : base(title, language) + { + this.Studios = new HashSet(); + } + + /// + /// Gets or sets the outline. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Outline { get; set; } + + /// + /// Gets or sets the tagline. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Tagline { get; set; } + + /// + /// Gets or sets the plot. + /// + /// + /// Max length = 65535. + /// + [MaxLength(65535)] + [StringLength(65535)] + public string? Plot { get; set; } + + /// + /// Gets or sets the country code. + /// + /// + /// Max length = 2. + /// + [MaxLength(2)] + [StringLength(2)] + public string? Country { get; set; } + + /// + /// Gets the studios that produced this movie. + /// + public virtual ICollection Studios { get; private set; } + + /// + public ICollection Companies => this.Studios; } - - /// - /// Gets or sets the outline. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Outline { get; set; } - - /// - /// Gets or sets the tagline. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Tagline { get; set; } - - /// - /// Gets or sets the plot. - /// - /// - /// Max length = 65535. - /// - [MaxLength(65535)] - [StringLength(65535)] - public string? Plot { get; set; } - - /// - /// Gets or sets the country code. - /// - /// - /// Max length = 2. - /// - [MaxLength(2)] - [StringLength(2)] - public string? Country { get; set; } - - /// - /// Gets the studios that produced this movie. - /// - public virtual ICollection Studios { get; private set; } - - /// - public ICollection Companies => Studios; } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbum.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbum.cs index 472befb0..e2d8cc96 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbum.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbum.cs @@ -2,32 +2,36 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line +#pragma warning disable CA1724 + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; - -/// -/// An entity representing a music album. -/// -public class MusicAlbum : LibraryItem { + using System.Collections.Generic; + /// - /// Initializes a new instance of the class. + /// An entity representing a music album. /// - /// The library. - public MusicAlbum(Library library) : base(library) + public class MusicAlbum : LibraryItem { - MusicAlbumMetadata = new HashSet(); - Tracks = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The library. + public MusicAlbum(Library library) : base(library) + { + this.MusicAlbumMetadata = new HashSet(); + this.Tracks = new HashSet(); + } + + /// + /// Gets a collection containing the album metadata. + /// + public virtual ICollection MusicAlbumMetadata { get; private set; } + + /// + /// Gets a collection containing the tracks. + /// + public virtual ICollection Tracks { get; private set; } } - - /// - /// Gets a collection containing the album metadata. - /// - public virtual ICollection MusicAlbumMetadata { get; private set; } - - /// - /// Gets a collection containing the tracks. - /// - public virtual ICollection Tracks { get; private set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbumMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbumMetadata.cs index 0d8c12cb..0ad58bc9 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbumMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbumMetadata.cs @@ -2,58 +2,62 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable CA1724 +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; - -/// -/// An entity holding the metadata for a music album. -/// -public class MusicAlbumMetadata : ItemMetadata { + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + /// - /// Initializes a new instance of the class. + /// An entity holding the metadata for a music album. /// - /// The title or name of the album. - /// ISO-639-3 3-character language codes. - public MusicAlbumMetadata(string title, string language) : base(title, language) + public class MusicAlbumMetadata : ItemMetadata { - Labels = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the album. + /// ISO-639-3 3-character language codes. + public MusicAlbumMetadata(string title, string language) : base(title, language) + { + this.Labels = new HashSet(); + } + + /// + /// Gets or sets the barcode. + /// + /// + /// Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string? Barcode { get; set; } + + /// + /// Gets or sets the label number. + /// + /// + /// Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string? LabelNumber { get; set; } + + /// + /// Gets or sets the country code. + /// + /// + /// Max length = 2. + /// + [MaxLength(2)] + [StringLength(2)] + public string? Country { get; set; } + + /// + /// Gets a collection containing the labels. + /// + public virtual ICollection Labels { get; private set; } } - - /// - /// Gets or sets the barcode. - /// - /// - /// Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string? Barcode { get; set; } - - /// - /// Gets or sets the label number. - /// - /// - /// Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string? LabelNumber { get; set; } - - /// - /// Gets or sets the country code. - /// - /// - /// Max length = 2. - /// - [MaxLength(2)] - [StringLength(2)] - public string? Country { get; set; } - - /// - /// Gets a collection containing the labels. - /// - public virtual ICollection Labels { get; private set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Person.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Person.cs index f2dd2e3c..e0f8fc87 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Person.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Person.cs @@ -2,91 +2,94 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable CA1724 + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a person. -/// -public class Person : IHasConcurrencyToken { + using System; + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a person. /// - /// The name of the person. - public Person(string name) + public class Person : IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(name); + /// + /// Initializes a new instance of the class. + /// + /// The name of the person. + public Person(string name) + { + ArgumentException.ThrowIfNullOrEmpty(name); - Name = name; - DateAdded = DateTime.UtcNow; - DateModified = DateAdded; + this.Name = name; + this.DateAdded = DateTime.UtcNow; + this.DateModified = this.DateAdded; - Sources = new HashSet(); - } + this.Sources = new HashSet(); + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the name. - /// - /// - /// Required, Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string Name { get; set; } + /// + /// Gets or sets the name. + /// + /// + /// Required, Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string Name { get; set; } - /// - /// Gets or sets the source id. - /// - /// - /// Max length = 255. - /// - [MaxLength(256)] - [StringLength(256)] - public string? SourceId { get; set; } + /// + /// Gets or sets the source id. + /// + /// + /// Max length = 255. + /// + [MaxLength(256)] + [StringLength(256)] + public string? SourceId { get; set; } - /// - /// Gets the date added. - /// - /// - /// Required. - /// - public DateTime DateAdded { get; private set; } + /// + /// Gets the date added. + /// + /// + /// Required. + /// + public DateTime DateAdded { get; private set; } - /// - /// Gets or sets the date modified. - /// - /// - /// Required. - /// - public DateTime DateModified { get; set; } + /// + /// Gets or sets the date modified. + /// + /// + /// Required. + /// + public DateTime DateModified { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets a list of metadata sources for this person. - /// - public virtual ICollection Sources { get; private set; } + /// + /// Gets a list of metadata sources for this person. + /// + public virtual ICollection Sources { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PersonRole.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PersonRole.cs index 2de37222..5c6adc52 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PersonRole.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PersonRole.cs @@ -3,81 +3,82 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Enums; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a person's role in media. -/// -public class PersonRole : IHasArtwork, IHasConcurrencyToken { + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Enums; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a person's role in media. /// - /// The role type. - /// The person. - public PersonRole(PersonRoleType type, Person person) + public class PersonRole : IHasArtwork, IHasConcurrencyToken { - Type = type; - Person = person; - Artwork = new HashSet(); - Sources = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The role type. + /// The person. + public PersonRole(PersonRoleType type, Person person) + { + this.Type = type; + this.Person = person; + this.Artwork = new HashSet(); + this.Sources = new HashSet(); + } + + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } + + /// + /// Gets or sets the name of the person's role. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Role { get; set; } + + /// + /// Gets or sets the person's role type. + /// + /// + /// Required. + /// + public PersonRoleType Type { get; set; } + + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } + + /// + /// Gets or sets the person. + /// + /// + /// Required. + /// + public virtual Person Person { get; set; } + + /// + public virtual ICollection Artwork { get; private set; } + + /// + /// Gets a collection containing the metadata sources for this person role. + /// + public virtual ICollection Sources { get; private set; } + + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } - - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } - - /// - /// Gets or sets the name of the person's role. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Role { get; set; } - - /// - /// Gets or sets the person's role type. - /// - /// - /// Required. - /// - public PersonRoleType Type { get; set; } - - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } - - /// - /// Gets or sets the person. - /// - /// - /// Required. - /// - public virtual Person Person { get; set; } - - /// - public virtual ICollection Artwork { get; private set; } - - /// - /// Gets a collection containing the metadata sources for this person role. - /// - public virtual ICollection Sources { get; private set; } - - /// - public void OnSavingChanges() - { - RowVersion++; - } -} \ No newline at end of file +} diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Photo.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Photo.cs index 3d1b1c2f..b4c17593 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Photo.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Photo.cs @@ -2,32 +2,34 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a photo. -/// -public class Photo : LibraryItem, IHasReleases { + using System.Collections.Generic; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a photo. /// - /// The library. - public Photo(Library library) : base(library) + public class Photo : LibraryItem, IHasReleases { - PhotoMetadata = new HashSet(); - Releases = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The library. + public Photo(Library library) : base(library) + { + this.PhotoMetadata = new HashSet(); + this.Releases = new HashSet(); + } + + /// + /// Gets a collection containing the photo metadata. + /// + public virtual ICollection PhotoMetadata { get; private set; } + + /// + public virtual ICollection Releases { get; private set; } } - - /// - /// Gets a collection containing the photo metadata. - /// - public virtual ICollection PhotoMetadata { get; private set; } - - /// - public virtual ICollection Releases { get; private set; } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PhotoMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PhotoMetadata.cs index ed37f4e0..100cebd1 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PhotoMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PhotoMetadata.cs @@ -2,20 +2,22 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -namespace Jellyfin.Database.Implementations.Entities.Libraries +#pragma warning disable SA1128 // Put constructor initializers on their own line -/// -/// An entity that holds metadata for a photo. -/// -public class PhotoMetadata : ItemMetadata +namespace Jellyfin.Database.Implementations.Entities.Libraries { /// - /// Initializes a new instance of the class. + /// An entity that holds metadata for a photo. /// - /// The title or name of the photo. - /// ISO-639-3 3-character language codes. - public PhotoMetadata(string title, string language) : base(title, language) + public class PhotoMetadata : ItemMetadata { + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the photo. + /// ISO-639-3 3-character language codes. + public PhotoMetadata(string title, string language) : base(title, language) + { + } } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Rating.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Rating.cs index 65008bc8..b771f2df 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Rating.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Rating.cs @@ -2,61 +2,64 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable CA1724 + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a rating for an entity. -/// -public class Rating : IHasConcurrencyToken { + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a rating for an entity. /// - /// The value. - public Rating(double value) + public class Rating : IHasConcurrencyToken { - Value = value; - } + /// + /// Initializes a new instance of the class. + /// + /// The value. + public Rating(double value) + { + this.Value = value; + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the value. - /// - /// - /// Required. - /// - public double Value { get; set; } + /// + /// Gets or sets the value. + /// + /// + /// Required. + /// + public double Value { get; set; } - /// - /// Gets or sets the number of votes. - /// - public int? Votes { get; set; } + /// + /// Gets or sets the number of votes. + /// + public int? Votes { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets or sets the rating type. - /// If this is null it's the internal user rating. - /// - public virtual RatingSource? RatingType { get; set; } + /// + /// Gets or sets the rating type. + /// If this is null it's the internal user rating. + /// + public virtual RatingSource? RatingType { get; set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/RatingSource.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/RatingSource.cs index f7994b9e..c82270f7 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/RatingSource.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/RatingSource.cs @@ -3,74 +3,75 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// This is the entity to store review ratings, not age ratings. -/// -public class RatingSource : IHasConcurrencyToken { + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// This is the entity to store review ratings, not age ratings. /// - /// The minimum value. - /// The maximum value. - public RatingSource(double minimumValue, double maximumValue) + public class RatingSource : IHasConcurrencyToken { - MinimumValue = minimumValue; - MaximumValue = maximumValue; - } + /// + /// Initializes a new instance of the class. + /// + /// The minimum value. + /// The maximum value. + public RatingSource(double minimumValue, double maximumValue) + { + this.MinimumValue = minimumValue; + this.MaximumValue = maximumValue; + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the name. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Name { get; set; } + /// + /// Gets or sets the name. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Name { get; set; } - /// - /// Gets or sets the minimum value. - /// - /// - /// Required. - /// - public double MinimumValue { get; set; } + /// + /// Gets or sets the minimum value. + /// + /// + /// Required. + /// + public double MinimumValue { get; set; } - /// - /// Gets or sets the maximum value. - /// - /// - /// Required. - /// - public double MaximumValue { get; set; } + /// + /// Gets or sets the maximum value. + /// + /// + /// Required. + /// + public double MaximumValue { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets or sets the metadata source. - /// - public virtual MetadataProviderId? Source { get; set; } + /// + /// Gets or sets the metadata source. + /// + public virtual MetadataProviderId? Source { get; set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Release.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Release.cs index 44840fca..0ada81ed 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Release.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Release.cs @@ -3,69 +3,69 @@ // namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a release for a library item, eg. Director's cut vs. standard. -/// -public class Release : IHasConcurrencyToken { + using System; + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a release for a library item, eg. Director's cut vs. standard. /// - /// The name of this release. - public Release(string name) + public class Release : IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(name); + /// + /// Initializes a new instance of the class. + /// + /// The name of this release. + public Release(string name) + { + ArgumentException.ThrowIfNullOrEmpty(name); - Name = name; + this.Name = name; - MediaFiles = new HashSet(); - Chapters = new HashSet(); - } + this.MediaFiles = new HashSet(); + this.Chapters = new HashSet(); + } - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the name. - /// - /// - /// Required, Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string Name { get; set; } + /// + /// Gets or sets the name. + /// + /// + /// Required, Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string Name { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets a collection containing the media files for this release. - /// - public virtual ICollection MediaFiles { get; private set; } + /// + /// Gets a collection containing the media files for this release. + /// + public virtual ICollection MediaFiles { get; private set; } - /// - /// Gets a collection containing the chapters for this release. - /// - public virtual ICollection Chapters { get; private set; } + /// + /// Gets a collection containing the chapters for this release. + /// + public virtual ICollection Chapters { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Season.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Season.cs index b1d5d7eb..dfab1421 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Season.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Season.cs @@ -2,38 +2,40 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; - -/// -/// An entity representing a season. -/// -public class Season : LibraryItem { + using System.Collections.Generic; + /// - /// Initializes a new instance of the class. + /// An entity representing a season. /// - /// The library. - public Season(Library library) : base(library) + public class Season : LibraryItem { - Episodes = new HashSet(); - SeasonMetadata = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The library. + public Season(Library library) : base(library) + { + this.Episodes = new HashSet(); + this.SeasonMetadata = new HashSet(); + } + + /// + /// Gets or sets the season number. + /// + public int? SeasonNumber { get; set; } + + /// + /// Gets the season metadata. + /// + public virtual ICollection SeasonMetadata { get; private set; } + + /// + /// Gets a collection containing the number of episodes. + /// + public virtual ICollection Episodes { get; private set; } } - - /// - /// Gets or sets the season number. - /// - public int? SeasonNumber { get; set; } - - /// - /// Gets the season metadata. - /// - public virtual ICollection SeasonMetadata { get; private set; } - - /// - /// Gets a collection containing the number of episodes. - /// - public virtual ICollection Episodes { get; private set; } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeasonMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeasonMetadata.cs index 16959d59..c2fd9038 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeasonMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeasonMetadata.cs @@ -2,31 +2,34 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.ComponentModel.DataAnnotations; - -/// -/// An entity that holds metadata for seasons. -/// -public class SeasonMetadata : ItemMetadata { - /// - /// Initializes a new instance of the class. - /// - /// The title or name of the object. - /// ISO-639-3 3-character language codes. - public SeasonMetadata(string title, string language) : base(title, language) - { - } + using System.ComponentModel.DataAnnotations; /// - /// Gets or sets the outline. + /// An entity that holds metadata for seasons. /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Outline { get; set; } + public class SeasonMetadata : ItemMetadata + { + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the object. + /// ISO-639-3 3-character language codes. + public SeasonMetadata(string title, string language) : base(title, language) + { + } + + /// + /// Gets or sets the outline. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Outline { get; set; } + } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Series.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Series.cs index d40b8022..a8fe8fc2 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Series.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Series.cs @@ -2,50 +2,52 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line +#pragma warning disable CA1724 + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System; -using System.Collections.Generic; - - -/// -/// An entity representing a series. -/// -public class Series : LibraryItem { + using System; + using System.Collections.Generic; + /// - /// Initializes a new instance of the class. + /// An entity representing a series. /// - /// The library. - public Series(Library library) : base(library) + public class Series : LibraryItem { - Seasons = new HashSet(); - SeriesMetadata = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The library. + public Series(Library library) : base(library) + { + this.Seasons = new HashSet(); + this.SeriesMetadata = new HashSet(); + } + + /// + /// Gets or sets the days of week. + /// + public DayOfWeek? AirsDayOfWeek { get; set; } + + /// + /// Gets or sets the time the show airs, ignore the date portion. + /// + public DateTimeOffset? AirsTime { get; set; } + + /// + /// Gets or sets the date the series first aired. + /// + public DateTime? FirstAired { get; set; } + + /// + /// Gets a collection containing the series metadata. + /// + public virtual ICollection SeriesMetadata { get; private set; } + + /// + /// Gets a collection containing the seasons. + /// + public virtual ICollection Seasons { get; private set; } } - - /// - /// Gets or sets the days of week. - /// - public DayOfWeek? AirsDayOfWeek { get; set; } - - /// - /// Gets or sets the time the show airs, ignore the date portion. - /// - public DateTimeOffset? AirsTime { get; set; } - - /// - /// Gets or sets the date the series first aired. - /// - public DateTime? FirstAired { get; set; } - - /// - /// Gets a collection containing the series metadata. - /// - public virtual ICollection SeriesMetadata { get; private set; } - - /// - /// Gets a collection containing the seasons. - /// - public virtual ICollection Seasons { get; private set; } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeriesMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeriesMetadata.cs index 698e2cd6..98830e77 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeriesMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeriesMetadata.cs @@ -2,72 +2,75 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing series metadata. -/// -public class SeriesMetadata : ItemMetadata, IHasCompanies { + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing series metadata. /// - /// The title or name of the object. - /// ISO-639-3 3-character language codes. - public SeriesMetadata(string title, string language) : base(title, language) + public class SeriesMetadata : ItemMetadata, IHasCompanies { - Networks = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the object. + /// ISO-639-3 3-character language codes. + public SeriesMetadata(string title, string language) : base(title, language) + { + this.Networks = new HashSet(); + } + + /// + /// Gets or sets the outline. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Outline { get; set; } + + /// + /// Gets or sets the plot. + /// + /// + /// Max length = 65535. + /// + [MaxLength(65535)] + [StringLength(65535)] + public string? Plot { get; set; } + + /// + /// Gets or sets the tagline. + /// + /// + /// Max length = 1024. + /// + [MaxLength(1024)] + [StringLength(1024)] + public string? Tagline { get; set; } + + /// + /// Gets or sets the country code. + /// + /// + /// Max length = 2. + /// + [MaxLength(2)] + [StringLength(2)] + public string? Country { get; set; } + + /// + /// Gets a collection containing the networks. + /// + public virtual ICollection Networks { get; private set; } + + /// + public ICollection Companies => this.Networks; } - - /// - /// Gets or sets the outline. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Outline { get; set; } - - /// - /// Gets or sets the plot. - /// - /// - /// Max length = 65535. - /// - [MaxLength(65535)] - [StringLength(65535)] - public string? Plot { get; set; } - - /// - /// Gets or sets the tagline. - /// - /// - /// Max length = 1024. - /// - [MaxLength(1024)] - [StringLength(1024)] - public string? Tagline { get; set; } - - /// - /// Gets or sets the country code. - /// - /// - /// Max length = 2. - /// - [MaxLength(2)] - [StringLength(2)] - public string? Country { get; set; } - - /// - /// Gets a collection containing the networks. - /// - public virtual ICollection Networks { get; private set; } - - /// - public ICollection Companies => Networks; } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Track.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Track.cs index 5dbc46f3..b7893f2f 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Track.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Track.cs @@ -2,37 +2,39 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1128 // Put constructor initializers on their own line + namespace Jellyfin.Database.Implementations.Entities.Libraries - -using System.Collections.Generic; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a track. -/// -public class Track : LibraryItem, IHasReleases { + using System.Collections.Generic; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. + /// An entity representing a track. /// - /// The library. - public Track(Library library) : base(library) + public class Track : LibraryItem, IHasReleases { - Releases = new HashSet(); - TrackMetadata = new HashSet(); + /// + /// Initializes a new instance of the class. + /// + /// The library. + public Track(Library library) : base(library) + { + this.Releases = new HashSet(); + this.TrackMetadata = new HashSet(); + } + + /// + /// Gets or sets the track number. + /// + public int? TrackNumber { get; set; } + + /// + public virtual ICollection Releases { get; private set; } + + /// + /// Gets a collection containing the track metadata. + /// + public virtual ICollection TrackMetadata { get; private set; } } - - /// - /// Gets or sets the track number. - /// - public int? TrackNumber { get; set; } - - /// - public virtual ICollection Releases { get; private set; } - - /// - /// Gets a collection containing the track metadata. - /// - public virtual ICollection TrackMetadata { get; private set; } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/TrackMetadata.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/TrackMetadata.cs index e8a07301..612014c7 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/TrackMetadata.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/TrackMetadata.cs @@ -2,20 +2,22 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -namespace Jellyfin.Database.Implementations.Entities.Libraries +#pragma warning disable SA1128 // Put constructor initializers on their own line -/// -/// An entity holding metadata for a track. -/// -public class TrackMetadata : ItemMetadata +namespace Jellyfin.Database.Implementations.Entities.Libraries { /// - /// Initializes a new instance of the class. + /// An entity holding metadata for a track. /// - /// The title or name of the object. - /// ISO-639-3 3-character language codes. - public TrackMetadata(string title, string language) : base(title, language) + public class TrackMetadata : ItemMetadata { + /// + /// Initializes a new instance of the class. + /// + /// The title or name of the object. + /// ISO-639-3 3-character language codes. + public TrackMetadata(string title, string language) : base(title, language) + { + } } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamInfo.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamInfo.cs index 03490322..0d8cf834 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamInfo.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamInfo.cs @@ -5,6 +5,7 @@ namespace Jellyfin.Database.Implementations.Entities; #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable SA1600 using System; diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamTypeEntity.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamTypeEntity.cs index 90b640d4..f89adbeb 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamTypeEntity.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamTypeEntity.cs @@ -37,5 +37,5 @@ public enum MediaStreamTypeEntity /// /// The lyric. /// - Lyric = 5 + Lyric = 5, } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Permission.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Permission.cs index ba159d47..2be2c083 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Permission.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Permission.cs @@ -3,70 +3,70 @@ // namespace Jellyfin.Database.Implementations.Entities - +{ #pragma warning disable CA1711 // Identifiers should not have incorrect suffix -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Enums; -using Jellyfin.Database.Implementations.Interfaces; + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Enums; + using Jellyfin.Database.Implementations.Interfaces; -/// -/// An entity representing whether the associated user has a specific permission. -/// -public class Permission : IHasConcurrencyToken -{ /// - /// Initializes a new instance of the class. - /// Public constructor with required data. + /// An entity representing whether the associated user has a specific permission. /// - /// The permission kind. - /// The value of this permission. - public Permission(PermissionKind kind, bool value) + public class Permission : IHasConcurrencyToken { - Kind = kind; - Value = value; - } + /// + /// Initializes a new instance of the class. + /// Public constructor with required data. + /// + /// The permission kind. + /// The value of this permission. + public Permission(PermissionKind kind, bool value) + { + this.Kind = kind; + this.Value = value; + } - /// - /// Gets the id of this permission. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } + /// + /// Gets the id of this permission. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } - /// - /// Gets or sets the id of the associated user. - /// - public Guid? UserId { get; set; } + /// + /// Gets or sets the id of the associated user. + /// + public Guid? UserId { get; set; } - /// - /// Gets the type of this permission. - /// - /// - /// Required. - /// - public PermissionKind Kind { get; private set; } + /// + /// Gets the type of this permission. + /// + /// + /// Required. + /// + public PermissionKind Kind { get; private set; } - /// - /// Gets or sets a value indicating whether the associated user has this permission. - /// - /// - /// Required. - /// - public bool Value { get; set; } + /// + /// Gets or sets a value indicating whether the associated user has this permission. + /// + /// + /// Required. + /// + public bool Value { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Preference.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Preference.cs index 16b6841e..38199e4a 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Preference.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Preference.cs @@ -3,69 +3,70 @@ // namespace Jellyfin.Database.Implementations.Entities - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using Jellyfin.Database.Implementations.Enums; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a preference attached to a user or group. -/// -public class Preference : IHasConcurrencyToken { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using Jellyfin.Database.Implementations.Enums; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. - /// Public constructor with required data. + /// An entity representing a preference attached to a user or group. /// - /// The preference kind. - /// The value. - public Preference(PreferenceKind kind, string value) + public class Preference : IHasConcurrencyToken { - Kind = kind; - Value = value ?? throw new ArgumentNullException(nameof(value)); + /// + /// Initializes a new instance of the class. + /// Public constructor with required data. + /// + /// The preference kind. + /// The value. + public Preference(PreferenceKind kind, string value) + { + this.Kind = kind; + this.Value = value ?? throw new ArgumentNullException(nameof(value)); + } + + /// + /// Gets the id of this preference. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } + + /// + /// Gets or sets the id of the associated user. + /// + public Guid? UserId { get; set; } + + /// + /// Gets the type of this preference. + /// + /// + /// Required. + /// + public PreferenceKind Kind { get; private set; } + + /// + /// Gets or sets the value of this preference. + /// + /// + /// Required, Max length = 65535. + /// + [MaxLength(65535)] + [StringLength(65535)] + public string Value { get; set; } + + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } + + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } - - /// - /// Gets the id of this preference. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } - - /// - /// Gets or sets the id of the associated user. - /// - public Guid? UserId { get; set; } - - /// - /// Gets the type of this preference. - /// - /// - /// Required. - /// - public PreferenceKind Kind { get; private set; } - - /// - /// Gets or sets the value of this preference. - /// - /// - /// Required, Max length = 65535. - /// - [MaxLength(65535)] - [StringLength(65535)] - public string Value { get; set; } - - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } - - /// - public void OnSavingChanges() - { - RowVersion++; - } -} \ No newline at end of file +} diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ProgramAudioEntity.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ProgramAudioEntity.cs index 0b04d75b..615870b8 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ProgramAudioEntity.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ProgramAudioEntity.cs @@ -2,40 +2,41 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -namespace Jellyfin.Database.Implementations.Entities; - -/// -/// Lists types of Audio. -/// -public enum ProgramAudioEntity +namespace Jellyfin.Database.Implementations.Entities { /// - /// Mono. + /// Lists types of Audio. /// - Mono = 0, + public enum ProgramAudioEntity + { + /// + /// Mono. + /// + Mono = 0, - /// - /// Stereo. - /// - Stereo = 1, + /// + /// Stereo. + /// + Stereo = 1, - /// - /// Dolby. - /// - Dolby = 2, + /// + /// Dolby. + /// + Dolby = 2, - /// - /// DolbyDigital. - /// - DolbyDigital = 3, + /// + /// DolbyDigital. + /// + DolbyDigital = 3, - /// - /// Thx. - /// - Thx = 4, + /// + /// Thx. + /// + Thx = 4, - /// - /// Atmos. - /// - Atmos = 5 + /// + /// Atmos. + /// + Atmos = 5, + } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/ApiKey.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/ApiKey.cs index 9fb5a14c..96f83a01 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/ApiKey.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/ApiKey.cs @@ -3,57 +3,58 @@ // namespace Jellyfin.Database.Implementations.Entities.Security - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using System.Globalization; - -/// -/// An entity representing an API key. -/// -public class ApiKey { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using System.Globalization; + /// - /// Initializes a new instance of the class. + /// An entity representing an API key. /// - /// The name. - public ApiKey(string name) + public class ApiKey { - Name = name; + /// + /// Initializes a new instance of the class. + /// + /// The name. + public ApiKey(string name) + { + this.Name = name; - AccessToken = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture); - DateCreated = DateTime.UtcNow; + this.AccessToken = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture); + this.DateCreated = DateTime.UtcNow; + } + + /// + /// Gets the id. + /// + /// + /// Identity, Indexed, Required. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } + + /// + /// Gets or sets the date created. + /// + public DateTime DateCreated { get; set; } + + /// + /// Gets or sets the date of last activity. + /// + public DateTime DateLastActivity { get; set; } + + /// + /// Gets or sets the name. + /// + [MaxLength(64)] + [StringLength(64)] + public string Name { get; set; } + + /// + /// Gets or sets the access token. + /// + public string AccessToken { get; set; } } - - /// - /// Gets the id. - /// - /// - /// Identity, Indexed, Required. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } - - /// - /// Gets or sets the date created. - /// - public DateTime DateCreated { get; set; } - - /// - /// Gets or sets the date of last activity. - /// - public DateTime DateLastActivity { get; set; } - - /// - /// Gets or sets the name. - /// - [MaxLength(64)] - [StringLength(64)] - public string Name { get; set; } - - /// - /// Gets or sets the access token. - /// - public string AccessToken { get; set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/Device.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/Device.cs index 5bf5c3c3..24119b57 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/Device.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/Device.cs @@ -3,108 +3,109 @@ // namespace Jellyfin.Database.Implementations.Entities.Security - -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using System.Globalization; - -/// -/// An entity representing a device. -/// -public class Device { + using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using System.Globalization; + /// - /// Initializes a new instance of the class. + /// An entity representing a device. /// - /// The user id. - /// The app name. - /// The app version. - /// The device name. - /// The device id. - public Device(Guid userId, string appName, string appVersion, string deviceName, string deviceId) + public class Device { - UserId = userId; - AppName = appName; - AppVersion = appVersion; - DeviceName = deviceName; - DeviceId = deviceId; + /// + /// Initializes a new instance of the class. + /// + /// The user id. + /// The app name. + /// The app version. + /// The device name. + /// The device id. + public Device(Guid userId, string appName, string appVersion, string deviceName, string deviceId) + { + this.UserId = userId; + this.AppName = appName; + this.AppVersion = appVersion; + this.DeviceName = deviceName; + this.DeviceId = deviceId; - AccessToken = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture); - DateCreated = DateTime.UtcNow; - DateModified = DateCreated; - DateLastActivity = DateCreated; + this.AccessToken = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture); + this.DateCreated = DateTime.UtcNow; + this.DateModified = this.DateCreated; + this.DateLastActivity = this.DateCreated; - // Non-nullable for EF Core, as this is a required relationship. - User = null!; + // Non-nullable for EF Core, as this is a required relationship. + this.User = null!; + } + + /// + /// Gets the id. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } + + /// + /// Gets the user id. + /// + public Guid UserId { get; private set; } + + /// + /// Gets or sets the access token. + /// + public string AccessToken { get; set; } + + /// + /// Gets or sets the app name. + /// + [MaxLength(64)] + [StringLength(64)] + public string AppName { get; set; } + + /// + /// Gets or sets the app version. + /// + [MaxLength(32)] + [StringLength(32)] + public string AppVersion { get; set; } + + /// + /// Gets or sets the device name. + /// + [MaxLength(64)] + [StringLength(64)] + public string DeviceName { get; set; } + + /// + /// Gets or sets the device id. + /// + [MaxLength(256)] + [StringLength(256)] + public string DeviceId { get; set; } + + /// + /// Gets or sets a value indicating whether this device is active. + /// + public bool IsActive { get; set; } + + /// + /// Gets or sets the date created. + /// + public DateTime DateCreated { get; set; } + + /// + /// Gets or sets the date modified. + /// + public DateTime DateModified { get; set; } + + /// + /// Gets or sets the date of last activity. + /// + public DateTime DateLastActivity { get; set; } + + /// + /// Gets the user. + /// + public User User { get; private set; } } - - /// - /// Gets the id. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } - - /// - /// Gets the user id. - /// - public Guid UserId { get; private set; } - - /// - /// Gets or sets the access token. - /// - public string AccessToken { get; set; } - - /// - /// Gets or sets the app name. - /// - [MaxLength(64)] - [StringLength(64)] - public string AppName { get; set; } - - /// - /// Gets or sets the app version. - /// - [MaxLength(32)] - [StringLength(32)] - public string AppVersion { get; set; } - - /// - /// Gets or sets the device name. - /// - [MaxLength(64)] - [StringLength(64)] - public string DeviceName { get; set; } - - /// - /// Gets or sets the device id. - /// - [MaxLength(256)] - [StringLength(256)] - public string DeviceId { get; set; } - - /// - /// Gets or sets a value indicating whether this device is active. - /// - public bool IsActive { get; set; } - - /// - /// Gets or sets the date created. - /// - public DateTime DateCreated { get; set; } - - /// - /// Gets or sets the date modified. - /// - public DateTime DateModified { get; set; } - - /// - /// Gets or sets the date of last activity. - /// - public DateTime DateLastActivity { get; set; } - - /// - /// Gets the user. - /// - public User User { get; private set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/DeviceOptions.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/DeviceOptions.cs index dfa20da8..d98979d8 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/DeviceOptions.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/DeviceOptions.cs @@ -3,36 +3,37 @@ // namespace Jellyfin.Database.Implementations.Entities.Security - -using System.ComponentModel.DataAnnotations.Schema; - -/// -/// An entity representing custom options for a device. -/// -public class DeviceOptions { + using System.ComponentModel.DataAnnotations.Schema; + /// - /// Initializes a new instance of the class. + /// An entity representing custom options for a device. /// - /// The device id. - public DeviceOptions(string deviceId) + public class DeviceOptions { - DeviceId = deviceId; + /// + /// Initializes a new instance of the class. + /// + /// The device id. + public DeviceOptions(string deviceId) + { + this.DeviceId = deviceId; + } + + /// + /// Gets the id. + /// + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; private set; } + + /// + /// Gets the device id. + /// + public string DeviceId { get; private set; } + + /// + /// Gets or sets the custom name. + /// + public string? CustomName { get; set; } } - - /// - /// Gets the id. - /// - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; private set; } - - /// - /// Gets the device id. - /// - public string DeviceId { get; private set; } - - /// - /// Gets or sets the custom name. - /// - public string? CustomName { get; set; } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/TrickplayInfo.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/TrickplayInfo.cs index e1b76583..d0c5886e 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/TrickplayInfo.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/TrickplayInfo.cs @@ -2,77 +2,78 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -namespace Jellyfin.Database.Implementations.Entities; - -using System; -using System.Text.Json.Serialization; - -/// -/// An entity representing the metadata for a group of trickplay tiles. -/// -public class TrickplayInfo +namespace Jellyfin.Database.Implementations.Entities { - /// - /// Gets or sets the id of the associated item. - /// - /// - /// Required. - /// - public Guid ItemId { get; set; } + using System; + using System.Text.Json.Serialization; /// - /// Gets or sets width of an individual thumbnail. + /// An entity representing the metadata for a group of trickplay tiles. /// - /// - /// Required. - /// - public int Width { get; set; } + public class TrickplayInfo + { + /// + /// Gets or sets the id of the associated item. + /// + /// + /// Required. + /// + public Guid ItemId { get; set; } - /// - /// Gets or sets height of an individual thumbnail. - /// - /// - /// Required. - /// - public int Height { get; set; } + /// + /// Gets or sets width of an individual thumbnail. + /// + /// + /// Required. + /// + public int Width { get; set; } - /// - /// Gets or sets amount of thumbnails per row. - /// - /// - /// Required. - /// - public int TileWidth { get; set; } + /// + /// Gets or sets height of an individual thumbnail. + /// + /// + /// Required. + /// + public int Height { get; set; } - /// - /// Gets or sets amount of thumbnails per column. - /// - /// - /// Required. - /// - public int TileHeight { get; set; } + /// + /// Gets or sets amount of thumbnails per row. + /// + /// + /// Required. + /// + public int TileWidth { get; set; } - /// - /// Gets or sets total amount of non-black thumbnails. - /// - /// - /// Required. - /// - public int ThumbnailCount { get; set; } + /// + /// Gets or sets amount of thumbnails per column. + /// + /// + /// Required. + /// + public int TileHeight { get; set; } - /// - /// Gets or sets interval in milliseconds between each trickplay thumbnail. - /// - /// - /// Required. - /// - public int Interval { get; set; } + /// + /// Gets or sets total amount of non-black thumbnails. + /// + /// + /// Required. + /// + public int ThumbnailCount { get; set; } - /// - /// Gets or sets peak bandwidth usage in bits per second. - /// - /// - /// Required. - /// - public int Bandwidth { get; set; } + /// + /// Gets or sets interval in milliseconds between each trickplay thumbnail. + /// + /// + /// Required. + /// + public int Interval { get; set; } + + /// + /// Gets or sets peak bandwidth usage in bits per second. + /// + /// + /// Required. + /// + public int Bandwidth { get; set; } + } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/User.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/User.cs index a195022b..36502618 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/User.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/User.cs @@ -2,343 +2,346 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1515 // Put constructor initializers on their own line +#pragma warning disable CA1724 + namespace Jellyfin.Database.Implementations.Entities - -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using System.Text.Json.Serialization; -using Jellyfin.Database.Implementations.Enums; -using Jellyfin.Database.Implementations.Interfaces; - -/// -/// An entity representing a user. -/// -public class User : IHasPermissions, IHasConcurrencyToken { + using System; + using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + using System.Text.Json.Serialization; + using Jellyfin.Database.Implementations.Enums; + using Jellyfin.Database.Implementations.Interfaces; + /// - /// Initializes a new instance of the class. - /// Public constructor with required data. + /// An entity representing a user. /// - /// The username for the new user. - /// The Id of the user's authentication provider. - /// The Id of the user's password reset provider. - public User(string username, string authenticationProviderId, string passwordResetProviderId) + public class User : IHasPermissions, IHasConcurrencyToken { - ArgumentException.ThrowIfNullOrEmpty(username); - ArgumentException.ThrowIfNullOrEmpty(authenticationProviderId); - ArgumentException.ThrowIfNullOrEmpty(passwordResetProviderId); + /// + /// Initializes a new instance of the class. + /// Public constructor with required data. + /// + /// The username for the new user. + /// The Id of the user's authentication provider. + /// The Id of the user's password reset provider. + public User(string username, string authenticationProviderId, string passwordResetProviderId) + { + ArgumentException.ThrowIfNullOrEmpty(username); + ArgumentException.ThrowIfNullOrEmpty(authenticationProviderId); + ArgumentException.ThrowIfNullOrEmpty(passwordResetProviderId); - Username = username; - AuthenticationProviderId = authenticationProviderId; - PasswordResetProviderId = passwordResetProviderId; + this.Username = username; + this.AuthenticationProviderId = authenticationProviderId; + this.PasswordResetProviderId = passwordResetProviderId; - AccessSchedules = new HashSet(); - DisplayPreferences = new HashSet(); - ItemDisplayPreferences = new HashSet(); - // Groups = new HashSet(); - Permissions = new HashSet(); - Preferences = new HashSet(); - // ProviderMappings = new HashSet(); + this.AccessSchedules = new HashSet(); + this.DisplayPreferences = new HashSet(); + this.ItemDisplayPreferences = new HashSet(); + // Groups = new HashSet(); + this.Permissions = new HashSet(); + this.Preferences = new HashSet(); + // ProviderMappings = new HashSet(); - // Set default values - Id = Guid.NewGuid(); - InvalidLoginAttemptCount = 0; - EnableUserPreferenceAccess = true; - MustUpdatePassword = false; - DisplayMissingEpisodes = false; - DisplayCollectionsView = false; - HidePlayedInLatest = true; - RememberAudioSelections = true; - RememberSubtitleSelections = true; - EnableNextEpisodeAutoPlay = true; - EnableAutoLogin = false; - PlayDefaultAudioTrack = true; - SubtitleMode = SubtitlePlaybackMode.Default; - SyncPlayAccess = SyncPlayUserAccessType.CreateAndJoinGroups; - } + // Set default values + this.Id = Guid.NewGuid(); + this.InvalidLoginAttemptCount = 0; + this.EnableUserPreferenceAccess = true; + this.MustUpdatePassword = false; + this.DisplayMissingEpisodes = false; + this.DisplayCollectionsView = false; + this.HidePlayedInLatest = true; + this.RememberAudioSelections = true; + this.RememberSubtitleSelections = true; + this.EnableNextEpisodeAutoPlay = true; + this.EnableAutoLogin = false; + this.PlayDefaultAudioTrack = true; + this.SubtitleMode = SubtitlePlaybackMode.Default; + this.SyncPlayAccess = SyncPlayUserAccessType.CreateAndJoinGroups; + } - /// - /// Gets or sets the Id of the user. - /// - /// - /// Identity, Indexed, Required. - /// - public Guid Id { get; set; } + /// + /// Gets or sets the Id of the user. + /// + /// + /// Identity, Indexed, Required. + /// + public Guid Id { get; set; } - /// - /// Gets or sets the user's name. - /// - /// - /// Required, Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string Username { get; set; } + /// + /// Gets or sets the user's name. + /// + /// + /// Required, Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string Username { get; set; } - /// - /// Gets or sets the user's password, or null if none is set. - /// - /// - /// Max length = 65535. - /// - [MaxLength(65535)] - [StringLength(65535)] - public string? Password { get; set; } + /// + /// Gets or sets the user's password, or null if none is set. + /// + /// + /// Max length = 65535. + /// + [MaxLength(65535)] + [StringLength(65535)] + public string? Password { get; set; } - /// - /// Gets or sets a value indicating whether the user must update their password. - /// - /// - /// Required. - /// - public bool MustUpdatePassword { get; set; } + /// + /// Gets or sets a value indicating whether the user must update their password. + /// + /// + /// Required. + /// + public bool MustUpdatePassword { get; set; } - /// - /// Gets or sets the audio language preference. - /// - /// - /// Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string? AudioLanguagePreference { get; set; } + /// + /// Gets or sets the audio language preference. + /// + /// + /// Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string? AudioLanguagePreference { get; set; } - /// - /// Gets or sets the authentication provider id. - /// - /// - /// Required, Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string AuthenticationProviderId { get; set; } + /// + /// Gets or sets the authentication provider id. + /// + /// + /// Required, Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string AuthenticationProviderId { get; set; } - /// - /// Gets or sets the password reset provider id. - /// - /// - /// Required, Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string PasswordResetProviderId { get; set; } + /// + /// Gets or sets the password reset provider id. + /// + /// + /// Required, Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string PasswordResetProviderId { get; set; } - /// - /// Gets or sets the invalid login attempt count. - /// - /// - /// Required. - /// - public int InvalidLoginAttemptCount { get; set; } + /// + /// Gets or sets the invalid login attempt count. + /// + /// + /// Required. + /// + public int InvalidLoginAttemptCount { get; set; } - /// - /// Gets or sets the last activity date. - /// - public DateTime? LastActivityDate { get; set; } + /// + /// Gets or sets the last activity date. + /// + public DateTime? LastActivityDate { get; set; } - /// - /// Gets or sets the last login date. - /// - public DateTime? LastLoginDate { get; set; } + /// + /// Gets or sets the last login date. + /// + public DateTime? LastLoginDate { get; set; } - /// - /// Gets or sets the number of login attempts the user can make before they are locked out. - /// - public int? LoginAttemptsBeforeLockout { get; set; } + /// + /// Gets or sets the number of login attempts the user can make before they are locked out. + /// + public int? LoginAttemptsBeforeLockout { get; set; } - /// - /// Gets or sets the maximum number of active sessions the user can have at once. - /// - public int MaxActiveSessions { get; set; } + /// + /// Gets or sets the maximum number of active sessions the user can have at once. + /// + public int MaxActiveSessions { get; set; } - /// - /// Gets or sets the subtitle mode. - /// - /// - /// Required. - /// - public SubtitlePlaybackMode SubtitleMode { get; set; } + /// + /// Gets or sets the subtitle mode. + /// + /// + /// Required. + /// + public SubtitlePlaybackMode SubtitleMode { get; set; } - /// - /// Gets or sets a value indicating whether the default audio track should be played. - /// - /// - /// Required. - /// - public bool PlayDefaultAudioTrack { get; set; } + /// + /// Gets or sets a value indicating whether the default audio track should be played. + /// + /// + /// Required. + /// + public bool PlayDefaultAudioTrack { get; set; } - /// - /// Gets or sets the subtitle language preference. - /// - /// - /// Max length = 255. - /// - [MaxLength(255)] - [StringLength(255)] - public string? SubtitleLanguagePreference { get; set; } + /// + /// Gets or sets the subtitle language preference. + /// + /// + /// Max length = 255. + /// + [MaxLength(255)] + [StringLength(255)] + public string? SubtitleLanguagePreference { get; set; } - /// - /// Gets or sets a value indicating whether missing episodes should be displayed. - /// - /// - /// Required. - /// - public bool DisplayMissingEpisodes { get; set; } + /// + /// Gets or sets a value indicating whether missing episodes should be displayed. + /// + /// + /// Required. + /// + public bool DisplayMissingEpisodes { get; set; } - /// - /// Gets or sets a value indicating whether to display the collections view. - /// - /// - /// Required. - /// - public bool DisplayCollectionsView { get; set; } + /// + /// Gets or sets a value indicating whether to display the collections view. + /// + /// + /// Required. + /// + public bool DisplayCollectionsView { get; set; } - /// - /// Gets or sets a value indicating whether the user has a local password. - /// - /// - /// Required. - /// - public bool EnableLocalPassword { get; set; } + /// + /// Gets or sets a value indicating whether the user has a local password. + /// + /// + /// Required. + /// + public bool EnableLocalPassword { get; set; } - /// - /// Gets or sets a value indicating whether the server should hide played content in "Latest". - /// - /// - /// Required. - /// - public bool HidePlayedInLatest { get; set; } + /// + /// Gets or sets a value indicating whether the server should hide played content in "Latest". + /// + /// + /// Required. + /// + public bool HidePlayedInLatest { get; set; } - /// - /// Gets or sets a value indicating whether to remember audio selections on played content. - /// - /// - /// Required. - /// - public bool RememberAudioSelections { get; set; } + /// + /// Gets or sets a value indicating whether to remember audio selections on played content. + /// + /// + /// Required. + /// + public bool RememberAudioSelections { get; set; } - /// - /// Gets or sets a value indicating whether to remember subtitle selections on played content. - /// - /// - /// Required. - /// - public bool RememberSubtitleSelections { get; set; } + /// + /// Gets or sets a value indicating whether to remember subtitle selections on played content. + /// + /// + /// Required. + /// + public bool RememberSubtitleSelections { get; set; } - /// - /// Gets or sets a value indicating whether to enable auto-play for the next episode. - /// - /// - /// Required. - /// - public bool EnableNextEpisodeAutoPlay { get; set; } + /// + /// Gets or sets a value indicating whether to enable auto-play for the next episode. + /// + /// + /// Required. + /// + public bool EnableNextEpisodeAutoPlay { get; set; } - /// - /// Gets or sets a value indicating whether the user should auto-login. - /// - /// - /// Required. - /// - public bool EnableAutoLogin { get; set; } + /// + /// Gets or sets a value indicating whether the user should auto-login. + /// + /// + /// Required. + /// + public bool EnableAutoLogin { get; set; } - /// - /// Gets or sets a value indicating whether the user can change their preferences. - /// - /// - /// Required. - /// - public bool EnableUserPreferenceAccess { get; set; } + /// + /// Gets or sets a value indicating whether the user can change their preferences. + /// + /// + /// Required. + /// + public bool EnableUserPreferenceAccess { get; set; } - /// - /// Gets or sets the maximum parental rating score. - /// - public int? MaxParentalRatingScore { get; set; } + /// + /// Gets or sets the maximum parental rating score. + /// + public int? MaxParentalRatingScore { get; set; } - /// - /// Gets or sets the maximum parental rating sub score. - /// - public int? MaxParentalRatingSubScore { get; set; } + /// + /// Gets or sets the maximum parental rating sub score. + /// + public int? MaxParentalRatingSubScore { get; set; } - /// - /// Gets or sets the remote client bitrate limit. - /// - public int? RemoteClientBitrateLimit { get; set; } + /// + /// Gets or sets the remote client bitrate limit. + /// + public int? RemoteClientBitrateLimit { get; set; } - /// - /// Gets or sets the internal id. - /// This is a temporary stopgap for until the library db is migrated. - /// This corresponds to the value of the index of this user in the library db. - /// - public long InternalId { get; set; } + /// + /// Gets or sets the internal id. + /// This is a temporary stopgap for until the library db is migrated. + /// This corresponds to the value of the index of this user in the library db. + /// + public long InternalId { get; set; } - /// - /// Gets or sets the user's profile image. Can be null. - /// - // [ForeignKey("UserId")] - public virtual ImageInfo? ProfileImage { get; set; } + /// + /// Gets or sets the user's profile image. Can be null. + /// + // [ForeignKey("UserId")] + public virtual ImageInfo? ProfileImage { get; set; } - /// - /// Gets the user's display preferences. - /// - public virtual ICollection DisplayPreferences { get; private set; } + /// + /// Gets the user's display preferences. + /// + public virtual ICollection DisplayPreferences { get; private set; } - /// - /// Gets or sets the level of sync play permissions this user has. - /// - public SyncPlayUserAccessType SyncPlayAccess { get; set; } + /// + /// Gets or sets the level of sync play permissions this user has. + /// + public SyncPlayUserAccessType SyncPlayAccess { get; set; } - /// - /// Gets or sets the cast receiver id. - /// - [StringLength(32)] - public string? CastReceiverId { get; set; } + /// + /// Gets or sets the cast receiver id. + /// + [StringLength(32)] + public string? CastReceiverId { get; set; } - /// - [ConcurrencyCheck] - public uint RowVersion { get; private set; } + /// + [ConcurrencyCheck] + public uint RowVersion { get; private set; } - /// - /// Gets the list of access schedules this user has. - /// - public virtual ICollection AccessSchedules { get; private set; } + /// + /// Gets the list of access schedules this user has. + /// + public virtual ICollection AccessSchedules { get; private set; } - /// - /// Gets the list of item display preferences. - /// - public virtual ICollection ItemDisplayPreferences { get; private set; } + /// + /// Gets the list of item display preferences. + /// + public virtual ICollection ItemDisplayPreferences { get; private set; } - /* - /// - /// Gets the list of groups this user is a member of. - /// - public virtual ICollection Groups { get; private set; } - */ + /* + /// + /// Gets the list of groups this user is a member of. + /// + public virtual ICollection Groups { get; private set; } + */ - /// - /// Gets the list of permissions this user has. - /// - [ForeignKey("Permission_Permissions_Guid")] - public virtual ICollection Permissions { get; private set; } + /// + /// Gets the list of permissions this user has. + /// + [ForeignKey("Permission_Permissions_Guid")] + public virtual ICollection Permissions { get; private set; } - /* - /// - /// Gets the list of provider mappings this user has. - /// - public virtual ICollection ProviderMappings { get; private set; } - */ + /* + /// + /// Gets the list of provider mappings this user has. + /// + public virtual ICollection ProviderMappings { get; private set; } + */ - /// - /// Gets the list of preferences this user has. - /// - [ForeignKey("Preference_Preferences_Guid")] - public virtual ICollection Preferences { get; private set; } + /// + /// Gets the list of preferences this user has. + /// + [ForeignKey("Preference_Preferences_Guid")] + public virtual ICollection Preferences { get; private set; } - /// - public void OnSavingChanges() - { - RowVersion++; + /// + public void OnSavingChanges() + { + this.RowVersion++; + } } } - diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/UserData.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/UserData.cs index f63d9771..320d1987 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/UserData.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/UserData.cs @@ -2,99 +2,102 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // -namespace Jellyfin.Database.Implementations.Entities; +#pragma warning disable CA1724 -using System; - -/// -/// Provides and related data. -/// -public class UserData +namespace Jellyfin.Database.Implementations.Entities { - /// - /// Gets or sets the custom data key. - /// - /// The rating. - public required string CustomDataKey { get; set; } + using System; /// - /// Gets or sets the users 0-10 rating. + /// Provides and related data. /// - /// The rating. - public double? Rating { get; set; } + public class UserData + { + /// + /// Gets or sets the custom data key. + /// + /// The rating. + public required string CustomDataKey { get; set; } - /// - /// Gets or sets the playback position ticks. - /// - /// The playback position ticks. - public long PlaybackPositionTicks { get; set; } + /// + /// Gets or sets the users 0-10 rating. + /// + /// The rating. + public double? Rating { get; set; } - /// - /// Gets or sets the play count. - /// - /// The play count. - public int PlayCount { get; set; } + /// + /// Gets or sets the playback position ticks. + /// + /// The playback position ticks. + public long PlaybackPositionTicks { get; set; } - /// - /// Gets or sets a value indicating whether this instance is favorite. - /// - /// true if this instance is favorite; otherwise, false. - public bool IsFavorite { get; set; } + /// + /// Gets or sets the play count. + /// + /// The play count. + public int PlayCount { get; set; } - /// - /// Gets or sets the last played date. - /// - /// The last played date. - public DateTime? LastPlayedDate { get; set; } + /// + /// Gets or sets a value indicating whether this instance is favorite. + /// + /// true if this instance is favorite; otherwise, false. + public bool IsFavorite { get; set; } - /// - /// Gets or sets a value indicating whether this is played. - /// - /// true if played; otherwise, false. - public bool Played { get; set; } + /// + /// Gets or sets the last played date. + /// + /// The last played date. + public DateTime? LastPlayedDate { get; set; } - /// - /// Gets or sets the index of the audio stream. - /// - /// The index of the audio stream. - public int? AudioStreamIndex { get; set; } + /// + /// Gets or sets a value indicating whether this is played. + /// + /// true if played; otherwise, false. + public bool Played { get; set; } - /// - /// Gets or sets the index of the subtitle stream. - /// - /// The index of the subtitle stream. - public int? SubtitleStreamIndex { get; set; } + /// + /// Gets or sets the index of the audio stream. + /// + /// The index of the audio stream. + public int? AudioStreamIndex { get; set; } - /// - /// Gets or sets a value indicating whether the item is liked or not. - /// This should never be serialized. - /// - /// null if [likes] contains no value, true if [likes]; otherwise, false. - public bool? Likes { get; set; } + /// + /// Gets or sets the index of the subtitle stream. + /// + /// The index of the subtitle stream. + public int? SubtitleStreamIndex { get; set; } - /// - /// Gets or Sets the date the referenced has been deleted. - /// - public DateTime? RetentionDate { get; set; } + /// + /// Gets or sets a value indicating whether the item is liked or not. + /// This should never be serialized. + /// + /// null if [likes] contains no value, true if [likes]; otherwise, false. + public bool? Likes { get; set; } - /// - /// Gets or sets the key. - /// - /// The key. - public required Guid ItemId { get; set; } + /// + /// Gets or Sets the date the referenced has been deleted. + /// + public DateTime? RetentionDate { get; set; } - /// - /// Gets or Sets the BaseItem. - /// - public required BaseItemEntity? Item { get; set; } + /// + /// Gets or sets the key. + /// + /// The key. + public required Guid ItemId { get; set; } - /// - /// Gets or Sets the UserId. - /// - public required Guid UserId { get; set; } + /// + /// Gets or Sets the BaseItem. + /// + public required BaseItemEntity? Item { get; set; } - /// - /// Gets or Sets the User. - /// - public required User? User { get; set; } + /// + /// Gets or Sets the UserId. + /// + public required Guid UserId { get; set; } + + /// + /// Gets or Sets the User. + /// + public required User? User { get; set; } + } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Enums/HomeSectionType.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Enums/HomeSectionType.cs index 3daaa03c..f0529b97 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Enums/HomeSectionType.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Enums/HomeSectionType.cs @@ -57,5 +57,5 @@ public enum HomeSectionType /// /// Continue Reading. /// - ResumeBook = 9 + ResumeBook = 9, } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Interfaces/IHasArtwork.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Interfaces/IHasArtwork.cs index 74c8e8e5..6ac0654c 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Interfaces/IHasArtwork.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Interfaces/IHasArtwork.cs @@ -3,17 +3,18 @@ // namespace Jellyfin.Database.Implementations.Interfaces - -using System.Collections.Generic; -using Jellyfin.Database.Implementations.Entities.Libraries; - -/// -/// An interface abstracting an entity that has artwork. -/// -public interface IHasArtwork { + using System.Collections.Generic; + using Jellyfin.Database.Implementations.Entities.Libraries; + /// - /// Gets a collection containing this entity's artwork. + /// An interface abstracting an entity that has artwork. /// - ICollection Artwork { get; } + public interface IHasArtwork + { + /// + /// Gets a collection containing this entity's artwork. + /// + ICollection Artwork { get; } + } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Interfaces/IHasCompanies.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Interfaces/IHasCompanies.cs index 7a383f78..2312fdfc 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Interfaces/IHasCompanies.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Interfaces/IHasCompanies.cs @@ -3,17 +3,18 @@ // namespace Jellyfin.Database.Implementations.Interfaces - -using System.Collections.Generic; -using Jellyfin.Database.Implementations.Entities.Libraries; - -/// -/// An abstraction representing an entity that has companies. -/// -public interface IHasCompanies { + using System.Collections.Generic; + using Jellyfin.Database.Implementations.Entities.Libraries; + /// - /// Gets a collection containing this entity's companies. + /// An abstraction representing an entity that has companies. /// - ICollection Companies { get; } + public interface IHasCompanies + { + /// + /// Gets a collection containing this entity's companies. + /// + ICollection Companies { get; } + } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Jellyfin.Database.Implementations.csproj b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Jellyfin.Database.Implementations.csproj index 0b29a71c..f2326ab8 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Jellyfin.Database.Implementations.csproj +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Jellyfin.Database.Implementations.csproj @@ -37,3 +37,4 @@ + diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinDatabaseProviderKeyAttribute.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinDatabaseProviderKeyAttribute.cs index 07e60167..549cea97 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinDatabaseProviderKeyAttribute.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinDatabaseProviderKeyAttribute.cs @@ -2,6 +2,9 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable CS0649 // Field is never assigned to, and will always have its default value null +#pragma warning disable CS0649 // Assignment made to same variable + namespace Jellyfin.Database.Implementations; /// @@ -20,7 +23,7 @@ public sealed class JellyfinDatabaseProviderKeyAttribute : System.Attribute /// The key on which to identify the annotated provider. public JellyfinDatabaseProviderKeyAttribute(string databaseProviderKey) { - databaseProviderKey = databaseProviderKey; + this.databaseProviderKey = databaseProviderKey; } /// @@ -28,6 +31,6 @@ public sealed class JellyfinDatabaseProviderKeyAttribute : System.Attribute /// public string DatabaseProviderKey { - get { return databaseProviderKey; } + get { return this.databaseProviderKey; } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinDbContext.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinDbContext.cs index a27be13b..57ebffcb 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinDbContext.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinDbContext.cs @@ -2,6 +2,8 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1202 + namespace Jellyfin.Database.Implementations; using System; @@ -17,7 +19,6 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.Extensions.Logging; - /// /// /// Initializes a new instance of the class. @@ -28,150 +29,156 @@ using Microsoft.Extensions.Logging; /// The locking behavior. public class JellyfinDbContext(DbContextOptions options, ILogger logger, IJellyfinDatabaseProvider jellyfinDatabaseProvider, IEntityFrameworkCoreLockingBehavior entityFrameworkCoreLocking) : DbContext(options) { + private static readonly Action SaveChangesError = + LoggerMessage.Define( + LogLevel.Error, + new EventId(1, nameof(SaveChanges)), + "Error trying to save changes."); + /// /// Gets the containing the access schedules. /// - public DbSet AccessSchedules => Set(); + public DbSet AccessSchedules => this.Set(); /// /// Gets the containing the activity logs. /// - public DbSet ActivityLogs => Set(); + public DbSet ActivityLogs => this.Set(); /// /// Gets the containing the API keys. /// - public DbSet ApiKeys => Set(); + public DbSet ApiKeys => this.Set(); /// /// Gets the containing the devices. /// - public DbSet Devices => Set(); + public DbSet Devices => this.Set(); /// /// Gets the containing the device options. /// - public DbSet DeviceOptions => Set(); + public DbSet DeviceOptions => this.Set(); /// /// Gets the containing the display preferences. /// - public DbSet DisplayPreferences => Set(); + public DbSet DisplayPreferences => this.Set(); /// /// Gets the containing the image infos. /// - public DbSet ImageInfos => Set(); + public DbSet ImageInfos => this.Set(); /// /// Gets the containing the item display preferences. /// - public DbSet ItemDisplayPreferences => Set(); + public DbSet ItemDisplayPreferences => this.Set(); /// /// Gets the containing the custom item display preferences. /// - public DbSet CustomItemDisplayPreferences => Set(); + public DbSet CustomItemDisplayPreferences => this.Set(); /// /// Gets the containing the permissions. /// - public DbSet Permissions => Set(); + public DbSet Permissions => this.Set(); /// /// Gets the containing the preferences. /// - public DbSet Preferences => Set(); + public DbSet Preferences => this.Set(); /// /// Gets the containing the users. /// - public DbSet Users => Set(); + public DbSet Users => this.Set(); /// /// Gets the containing the trickplay metadata. /// - public DbSet TrickplayInfos => Set(); + public DbSet TrickplayInfos => this.Set(); /// /// Gets the containing the media segments. /// - public DbSet MediaSegments => Set(); + public DbSet MediaSegments => this.Set(); /// /// Gets the containing the user data. /// - public DbSet UserData => Set(); + public DbSet UserData => this.Set(); /// /// Gets the containing the user data. /// - public DbSet AncestorIds => Set(); + public DbSet AncestorIds => this.Set(); /// /// Gets the containing the user data. /// - public DbSet AttachmentStreamInfos => Set(); + public DbSet AttachmentStreamInfos => this.Set(); /// /// Gets the containing the user data. /// - public DbSet BaseItems => Set(); + public DbSet BaseItems => this.Set(); /// /// Gets the containing the user data. /// - public DbSet Chapters => Set(); + public DbSet Chapters => this.Set(); /// /// Gets the . /// - public DbSet ItemValues => Set(); + public DbSet ItemValues => this.Set(); /// /// Gets the . /// - public DbSet ItemValuesMap => Set(); + public DbSet ItemValuesMap => this.Set(); /// /// Gets the . /// - public DbSet MediaStreamInfos => Set(); + public DbSet MediaStreamInfos => this.Set(); /// /// Gets the . /// - public DbSet Peoples => Set(); + public DbSet Peoples => this.Set(); /// /// Gets the . /// - public DbSet PeopleBaseItemMap => Set(); + public DbSet PeopleBaseItemMap => this.Set(); /// /// Gets the containing the referenced Providers with ids. /// - public DbSet BaseItemProviders => Set(); + public DbSet BaseItemProviders => this.Set(); /// /// Gets the . /// - public DbSet BaseItemImageInfos => Set(); + public DbSet BaseItemImageInfos => this.Set(); /// /// Gets the . /// - public DbSet BaseItemMetadataFields => Set(); + public DbSet BaseItemMetadataFields => this.Set(); /// /// Gets the . /// - public DbSet BaseItemTrailerTypes => Set(); + public DbSet BaseItemTrailerTypes => this.Set(); /// /// Gets the . /// - public DbSet KeyframeData => Set(); + public DbSet KeyframeData => this.Set(); /*public DbSet Artwork => Set(); @@ -262,7 +269,7 @@ public class JellyfinDbContext(DbContextOptions options, ILog bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default) { - HandleConcurrencyToken(); + this.HandleConcurrencyToken(); try { @@ -275,7 +282,7 @@ public class JellyfinDbContext(DbContextOptions options, ILog } catch (Exception e) { - logger.LogError(e, "Error trying to save changes."); + SaveChangesError(logger, e); throw; } } @@ -283,7 +290,7 @@ public class JellyfinDbContext(DbContextOptions options, ILog /// public override int SaveChanges(bool acceptAllChangesOnSuccess) // SaveChanges(bool) is beeing called by SaveChanges() with default to false. { - HandleConcurrencyToken(); + this.HandleConcurrencyToken(); try { @@ -296,14 +303,14 @@ public class JellyfinDbContext(DbContextOptions options, ILog } catch (Exception e) { - logger.LogError(e, "Error trying to save changes."); + SaveChangesError(logger, e); throw; } } private void HandleConcurrencyToken() { - foreach (var saveEntity in ChangeTracker.Entries() + foreach (var saveEntity in this.ChangeTracker.Entries() .Where(e => e.State == EntityState.Modified) .Select(entry => entry.Entity) .OfType()) @@ -318,6 +325,8 @@ public class JellyfinDbContext(DbContextOptions options, ILog jellyfinDatabaseProvider.OnModelCreating(modelBuilder); base.OnModelCreating(modelBuilder); + ArgumentNullException.ThrowIfNull(modelBuilder); + // Configuration for each entity is in its own class inside 'ModelConfiguration'. modelBuilder.ApplyConfigurationsFromAssembly(typeof(JellyfinDbContext).Assembly); } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinQueryHelperExtensions.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinQueryHelperExtensions.cs index e1dfc6e1..51bafaad 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinQueryHelperExtensions.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/JellyfinQueryHelperExtensions.cs @@ -3,6 +3,10 @@ // #pragma warning disable RS0030 // Do not use banned APIs +#pragma warning disable SA1309 // Variable should not begin with underscore +#pragma warning disable SA1600 // Elements should be documented +#pragma warning disable CA1062 // Validate arguments of public methods +#pragma warning disable SA1128 // Put constructor initializers on their own line namespace Jellyfin.Database.Implementations; @@ -129,6 +133,7 @@ public static class JellyfinQueryHelperExtensions property = ParameterReplacer.Replace, Func>(property, property.Parameters[0], parameter); if (oneOf.Count == 1) { + ArgumentNullException.ThrowIfNull(property); var value = oneOf[0]; if (typeof(TProperty).IsValueType) { @@ -142,7 +147,7 @@ public static class JellyfinQueryHelperExtensions var containsMethodInfo = _containsQueryCache.GetOrAdd(typeof(TProperty), static (key) => _containsMethodGenericCache.MakeGenericMethod(key)); - if (oneOf.Count < 4) // arbitrary value choosen. + if (oneOf.Count < 4) { // if we have 3 or fewer values to check against its faster to do a IN(const,const,const) lookup return Expression.Lambda>(Expression.Call(null, containsMethodInfo, Expression.Constant(oneOf), property.Body), parameter); @@ -171,27 +176,27 @@ public static class JellyfinQueryHelperExtensions public ParameterReplacerVisitor(ParameterExpression source, ParameterExpression target) { - _source = source; - _target = target; + this._source = source; + this._target = target; } internal Expression VisitAndConvert(Expression root) { - return (Expression)VisitLambda(root); + return (Expression)this.VisitLambda(root); } protected override Expression VisitLambda(Expression node) { // Leave all parameters alone except the one we want to replace. - var parameters = node.Parameters.Select(p => p == _source ? _target : p); + var parameters = node.Parameters.Select(p => p == this._source ? this._target : p); - return Expression.Lambda(Visit(node.Body), parameters); + return Expression.Lambda(this.Visit(node.Body), parameters); } protected override Expression VisitParameter(ParameterExpression node) { // Replace the source with the target, visit other params as usual. - return node == _source ? _target : base.VisitParameter(node); + return node == this._source ? this._target : base.VisitParameter(node); } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/NoLockBehavior.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/NoLockBehavior.cs index 0f6e82fb..25c4b5c0 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/NoLockBehavior.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/NoLockBehavior.cs @@ -2,6 +2,9 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1309 // VAriables should not begin with underscore +#pragma warning disable CA1848 // VAriables should not begin with underscore + namespace Jellyfin.Database.Implementations.Locking; using System; @@ -22,24 +25,26 @@ public class NoLockBehavior : IEntityFrameworkCoreLockingBehavior /// The Application logger. public NoLockBehavior(ILogger logger) { - _logger = logger; + this._logger = logger; } /// public void OnSaveChanges(JellyfinDbContext context, Action saveChanges) { + ArgumentNullException.ThrowIfNull(saveChanges); saveChanges(); } /// public void Initialise(DbContextOptionsBuilder optionsBuilder) { - _logger.LogInformation("The database locking mode has been set to: NoLock."); + this._logger.LogInformation("The database locking mode has been set to: NoLock."); } /// public async Task OnSaveChangesAsync(JellyfinDbContext context, Func saveChanges) { + ArgumentNullException.ThrowIfNull(saveChanges); await saveChanges().ConfigureAwait(false); } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/OptimisticLockBehavior.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/OptimisticLockBehavior.cs index b1a37732..a2475276 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/OptimisticLockBehavior.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/OptimisticLockBehavior.cs @@ -4,7 +4,10 @@ namespace Jellyfin.Database.Implementations.Locking; +#pragma warning disable IDISP004 #pragma warning disable CA1873 +#pragma warning disable CA1848 +#pragma warning disable SA1309 // Variables should not begin with underscore using System; using System.Data.Common; @@ -56,13 +59,13 @@ public class OptimisticLockBehavior : IEntityFrameworkCoreLockingBehavior return backoff + TimeSpan.FromMilliseconds(RandomNumberGenerator.GetInt32(0, (int)(backoff.TotalMilliseconds * .5))); }; - _logger = logger; - _writePolicy = Policy + this._logger = logger; + this._writePolicy = Policy .HandleInner(e => e.Message.Contains("database is locked", StringComparison.InvariantCultureIgnoreCase) || e.Message.Contains("database table is locked", StringComparison.InvariantCultureIgnoreCase)) .WaitAndRetry(sleepDurations.Length, backoffProvider, RetryHandle); - _writeAsyncPolicy = Policy + this._writeAsyncPolicy = Policy .HandleInner(e => e.Message.Contains("database is locked", StringComparison.InvariantCultureIgnoreCase) || e.Message.Contains("database table is locked", StringComparison.InvariantCultureIgnoreCase)) @@ -72,11 +75,11 @@ public class OptimisticLockBehavior : IEntityFrameworkCoreLockingBehavior { if (retryNo < sleepDurations.Length) { - _logger.LogWarning("Operation failed retry {RetryNo}", retryNo); + this._logger.LogWarning("Operation failed retry {RetryNo}", retryNo); } else { - _logger.LogError(exception, "Operation failed retry {RetryNo}", retryNo); + this._logger.LogError(exception, "Operation failed retry {RetryNo}", retryNo); } } } @@ -84,21 +87,22 @@ public class OptimisticLockBehavior : IEntityFrameworkCoreLockingBehavior /// public void Initialise(DbContextOptionsBuilder optionsBuilder) { - _logger.LogInformation("The database locking mode has been set to: Optimistic."); - optionsBuilder.AddInterceptors(new RetryInterceptor(_writeAsyncPolicy, _writePolicy)); - optionsBuilder.AddInterceptors(new TransactionLockingInterceptor(_writeAsyncPolicy, _writePolicy)); + this._logger.LogInformation("The database locking mode has been set to: Optimistic."); + ArgumentNullException.ThrowIfNull(optionsBuilder); + optionsBuilder.AddInterceptors(new RetryInterceptor(this._writeAsyncPolicy, this._writePolicy)); + optionsBuilder.AddInterceptors(new TransactionLockingInterceptor(this._writeAsyncPolicy, this._writePolicy)); } /// public void OnSaveChanges(JellyfinDbContext context, Action saveChanges) { - _writePolicy.ExecuteAndCapture(saveChanges); + this._writePolicy.ExecuteAndCapture(saveChanges); } /// public async Task OnSaveChangesAsync(JellyfinDbContext context, Func saveChanges) { - await _writeAsyncPolicy.ExecuteAndCaptureAsync(saveChanges).ConfigureAwait(false); + await this._writeAsyncPolicy.ExecuteAndCaptureAsync(saveChanges).ConfigureAwait(false); } private sealed class TransactionLockingInterceptor : DbTransactionInterceptor @@ -108,18 +112,18 @@ public class OptimisticLockBehavior : IEntityFrameworkCoreLockingBehavior public TransactionLockingInterceptor(AsyncPolicy asyncRetryPolicy, Policy retryPolicy) { - _asyncRetryPolicy = asyncRetryPolicy; - _retryPolicy = retryPolicy; + this._asyncRetryPolicy = asyncRetryPolicy; + this._retryPolicy = retryPolicy; } public override InterceptionResult TransactionStarting(DbConnection connection, TransactionStartingEventData eventData, InterceptionResult result) { - return InterceptionResult.SuppressWithResult(_retryPolicy.Execute(() => connection.BeginTransaction(eventData.IsolationLevel))); + return InterceptionResult.SuppressWithResult(this._retryPolicy.Execute(() => connection.BeginTransaction(eventData.IsolationLevel))); } public override async ValueTask> TransactionStartingAsync(DbConnection connection, TransactionStartingEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default) { - return InterceptionResult.SuppressWithResult(await _asyncRetryPolicy.ExecuteAsync(async () => await connection.BeginTransactionAsync(eventData.IsolationLevel, cancellationToken).ConfigureAwait(false)).ConfigureAwait(false)); + return InterceptionResult.SuppressWithResult(await this._asyncRetryPolicy.ExecuteAsync(async () => await connection.BeginTransactionAsync(eventData.IsolationLevel, cancellationToken).ConfigureAwait(false)).ConfigureAwait(false)); } } @@ -130,38 +134,38 @@ public class OptimisticLockBehavior : IEntityFrameworkCoreLockingBehavior public RetryInterceptor(AsyncPolicy asyncRetryPolicy, Policy retryPolicy) { - _asyncRetryPolicy = asyncRetryPolicy; - _retryPolicy = retryPolicy; + this._asyncRetryPolicy = asyncRetryPolicy; + this._retryPolicy = retryPolicy; } public override InterceptionResult NonQueryExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result) { - return InterceptionResult.SuppressWithResult(_retryPolicy.Execute(command.ExecuteNonQuery)); + return InterceptionResult.SuppressWithResult(this._retryPolicy.Execute(command.ExecuteNonQuery)); } public override async ValueTask> NonQueryExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default) { - return InterceptionResult.SuppressWithResult(await _asyncRetryPolicy.ExecuteAsync(async () => await command.ExecuteNonQueryAsync(cancellationToken).ConfigureAwait(false)).ConfigureAwait(false)); + return InterceptionResult.SuppressWithResult(await this._asyncRetryPolicy.ExecuteAsync(async () => await command.ExecuteNonQueryAsync(cancellationToken).ConfigureAwait(false)).ConfigureAwait(false)); } public override InterceptionResult ScalarExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result) { - return InterceptionResult.SuppressWithResult(_retryPolicy.Execute(() => command.ExecuteScalar()!)); + return InterceptionResult.SuppressWithResult(this._retryPolicy.Execute(() => command.ExecuteScalar()!)); } public override async ValueTask> ScalarExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default) { - return InterceptionResult.SuppressWithResult((await _asyncRetryPolicy.ExecuteAsync(async () => await command.ExecuteScalarAsync(cancellationToken).ConfigureAwait(false)!).ConfigureAwait(false))!); + return InterceptionResult.SuppressWithResult((await this._asyncRetryPolicy.ExecuteAsync(async () => await command.ExecuteScalarAsync(cancellationToken).ConfigureAwait(false)!).ConfigureAwait(false))!); } public override InterceptionResult ReaderExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result) { - return InterceptionResult.SuppressWithResult(_retryPolicy.Execute(command.ExecuteReader)); + return InterceptionResult.SuppressWithResult(this._retryPolicy.Execute(command.ExecuteReader)); } public override async ValueTask> ReaderExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default) { - return InterceptionResult.SuppressWithResult(await _asyncRetryPolicy.ExecuteAsync(async () => await command.ExecuteReaderAsync(cancellationToken).ConfigureAwait(false)).ConfigureAwait(false)); + return InterceptionResult.SuppressWithResult(await this._asyncRetryPolicy.ExecuteAsync(async () => await command.ExecuteReaderAsync(cancellationToken).ConfigureAwait(false)).ConfigureAwait(false)); } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/PessimisticLockBehavior.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/PessimisticLockBehavior.cs index 93b789e3..b5b3c47b 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/PessimisticLockBehavior.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/PessimisticLockBehavior.cs @@ -7,6 +7,9 @@ namespace Jellyfin.Database.Implementations.Locking; #pragma warning disable MT1013 // Releasing lock without guarantee of execution #pragma warning disable MT1012 // Acquiring lock without guarantee of releasing #pragma warning disable CA1873 +#pragma warning disable IDISP004 +#pragma warning disable CA1848 +#pragma warning disable SA1309 // Variables should not begin with underscore using System; using System.Data; @@ -17,6 +20,7 @@ using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; /// /// A locking behavior that will always block any operation while a write is requested. Mimicks the old SqliteRepository behavior. @@ -33,8 +37,8 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior /// The logger factory. public PessimisticLockBehavior(ILogger logger, ILoggerFactory loggerFactory) { - _logger = logger; - _loggerFactory = loggerFactory; + this._logger = logger; + this._loggerFactory = loggerFactory; } private static ReaderWriterLockSlim DatabaseLock { get; } = new(LockRecursionPolicy.SupportsRecursion); @@ -42,8 +46,9 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior /// public void OnSaveChanges(JellyfinDbContext context, Action saveChanges) { - using (DbLock.EnterWrite(_logger)) + using (DbLock.EnterWrite(this._logger)) { + ArgumentNullException.ThrowIfNull(saveChanges); saveChanges(); } } @@ -51,16 +56,18 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior /// public void Initialise(DbContextOptionsBuilder optionsBuilder) { - _logger.LogInformation("The database locking mode has been set to: Pessimistic."); - optionsBuilder.AddInterceptors(new CommandLockingInterceptor(_loggerFactory.CreateLogger())); - optionsBuilder.AddInterceptors(new TransactionLockingInterceptor(_loggerFactory.CreateLogger())); + this._logger.LogInformation("The database locking mode has been set to: Pessimistic."); + ArgumentNullException.ThrowIfNull(optionsBuilder); + optionsBuilder.AddInterceptors(new CommandLockingInterceptor(this._loggerFactory.CreateLogger())); + optionsBuilder.AddInterceptors(new TransactionLockingInterceptor(this._loggerFactory.CreateLogger())); } /// public async Task OnSaveChangesAsync(JellyfinDbContext context, Func saveChanges) { - using (DbLock.EnterWrite(_logger)) + using (DbLock.EnterWrite(this._logger)) { + ArgumentNullException.ThrowIfNull(saveChanges); await saveChanges().ConfigureAwait(false); } } @@ -71,61 +78,61 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior public TransactionLockingInterceptor(ILogger logger) { - _logger = logger; + this._logger = logger; } public override InterceptionResult TransactionStarting(DbConnection connection, TransactionStartingEventData eventData, InterceptionResult result) { - DbLock.BeginWriteLock(_logger); + DbLock.BeginWriteLock(this._logger); return base.TransactionStarting(connection, eventData, result); } public override ValueTask> TransactionStartingAsync(DbConnection connection, TransactionStartingEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default) { - DbLock.BeginWriteLock(_logger); + DbLock.BeginWriteLock(this._logger); return base.TransactionStartingAsync(connection, eventData, result, cancellationToken); } public override void TransactionCommitted(DbTransaction transaction, TransactionEndEventData eventData) { - DbLock.EndWriteLock(_logger); + DbLock.EndWriteLock(this._logger); base.TransactionCommitted(transaction, eventData); } public override Task TransactionCommittedAsync(DbTransaction transaction, TransactionEndEventData eventData, CancellationToken cancellationToken = default) { - DbLock.EndWriteLock(_logger); + DbLock.EndWriteLock(this._logger); return base.TransactionCommittedAsync(transaction, eventData, cancellationToken); } public override void TransactionFailed(DbTransaction transaction, TransactionErrorEventData eventData) { - DbLock.EndWriteLock(_logger); + DbLock.EndWriteLock(this._logger); base.TransactionFailed(transaction, eventData); } public override Task TransactionFailedAsync(DbTransaction transaction, TransactionErrorEventData eventData, CancellationToken cancellationToken = default) { - DbLock.EndWriteLock(_logger); + DbLock.EndWriteLock(this._logger); return base.TransactionFailedAsync(transaction, eventData, cancellationToken); } public override void TransactionRolledBack(DbTransaction transaction, TransactionEndEventData eventData) { - DbLock.EndWriteLock(_logger); + DbLock.EndWriteLock(this._logger); base.TransactionRolledBack(transaction, eventData); } public override Task TransactionRolledBackAsync(DbTransaction transaction, TransactionEndEventData eventData, CancellationToken cancellationToken = default) { - DbLock.EndWriteLock(_logger); + DbLock.EndWriteLock(this._logger); return base.TransactionRolledBackAsync(transaction, eventData, cancellationToken); } @@ -140,12 +147,12 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior public CommandLockingInterceptor(ILogger logger) { - _logger = logger; + this._logger = logger; } public override InterceptionResult NonQueryExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result) { - using (DbLock.EnterWrite(_logger, command)) + using (DbLock.EnterWrite(this._logger, command)) { return InterceptionResult.SuppressWithResult(command.ExecuteNonQuery()); } @@ -153,7 +160,7 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior public override async ValueTask> NonQueryExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default) { - using (DbLock.EnterWrite(_logger, command)) + using (DbLock.EnterWrite(this._logger, command)) { return InterceptionResult.SuppressWithResult(await command.ExecuteNonQueryAsync(cancellationToken).ConfigureAwait(false)); } @@ -161,7 +168,7 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior public override InterceptionResult ScalarExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result) { - using (DbLock.EnterRead(_logger)) + using (DbLock.EnterRead(this._logger)) { return InterceptionResult.SuppressWithResult(command.ExecuteScalar()!); } @@ -169,7 +176,7 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior public override async ValueTask> ScalarExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default) { - using (DbLock.EnterRead(_logger)) + using (DbLock.EnterRead(this._logger)) { return InterceptionResult.SuppressWithResult((await command.ExecuteScalarAsync(cancellationToken).ConfigureAwait(false))!); } @@ -177,7 +184,7 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior public override InterceptionResult ReaderExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result) { - using (DbLock.EnterRead(_logger)) + using (DbLock.EnterRead(this._logger)) { return InterceptionResult.SuppressWithResult(command.ExecuteReader()!); } @@ -185,7 +192,7 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior public override async ValueTask> ReaderExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default) { - using (DbLock.EnterRead(_logger)) + using (DbLock.EnterRead(this._logger)) { return InterceptionResult.SuppressWithResult(await command.ExecuteReaderAsync(cancellationToken).ConfigureAwait(false)); } @@ -194,15 +201,15 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior private sealed class DbLock : IDisposable { - private readonly Action? _action; - private bool _disposed; - private static readonly IDisposable _noLock = new DbLock(null) { _disposed = true }; private static (string Command, Guid Id, DateTimeOffset QueryDate, bool Printed) _blockQuery; + private readonly Action? _action; + private bool _disposed; + public DbLock(Action? action = null) { - _action = action; + this._action = action; } #pragma warning disable IDISP015 // Member should not return created and cached instance @@ -286,15 +293,15 @@ public class PessimisticLockBehavior : IEntityFrameworkCoreLockingBehavior public void Dispose() { - if (_disposed) + if (this._disposed) { return; } - _disposed = true; - if (_action is not null) + this._disposed = true; + if (this._action is not null) { - _action(); + this._action(); } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ActivityLogConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ActivityLogConfiguration.cs index 2b247b8c..03b3ce4a 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ActivityLogConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ActivityLogConfiguration.cs @@ -2,8 +2,11 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1602 // Elements should be documented + namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +19,7 @@ public class ActivityLogConfiguration : IEntityTypeConfiguration /// public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasIndex(entity => entity.DateCreated); } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/AncestorIdConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/AncestorIdConfiguration.cs index c1902be0..63db79ef 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/AncestorIdConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/AncestorIdConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class AncestorIdConfiguration : IEntityTypeConfiguration /// public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => new { e.ItemId, e.ParentItemId }); builder.HasIndex(e => e.ParentItemId); builder.HasOne(e => e.ParentItem).WithMany(e => e.Children).HasForeignKey(f => f.ParentItemId); diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ApiKeyConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ApiKeyConfiguration.cs index a9807f0b..93a842a4 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ApiKeyConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ApiKeyConfiguration.cs @@ -3,21 +3,24 @@ // namespace Jellyfin.Database.Implementations.ModelConfiguration - -using Jellyfin.Database.Implementations.Entities.Security; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; - -/// -/// FluentAPI configuration for the ApiKey entity. -/// -public class ApiKeyConfiguration : IEntityTypeConfiguration { - /// - public void Configure(EntityTypeBuilder builder) + using System; + using Jellyfin.Database.Implementations.Entities.Security; + using Microsoft.EntityFrameworkCore; + using Microsoft.EntityFrameworkCore.Metadata.Builders; + + /// + /// FluentAPI configuration for the ApiKey entity. + /// + public class ApiKeyConfiguration : IEntityTypeConfiguration { - builder - .HasIndex(entity => entity.AccessToken) - .IsUnique(); + /// + public void Configure(EntityTypeBuilder builder) + { + ArgumentNullException.ThrowIfNull(builder); + builder + .HasIndex(entity => entity.AccessToken) + .IsUnique(); + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/AttachmentStreamInfoConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/AttachmentStreamInfoConfiguration.cs index a951bd73..b327fc0f 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/AttachmentStreamInfoConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/AttachmentStreamInfoConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class AttachmentStreamInfoConfiguration : IEntityTypeConfiguration public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => new { e.ItemId, e.Index }); } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemConfiguration.cs index 391e3651..32cabc20 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemConfiguration.cs @@ -2,6 +2,8 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1515 // Single line comment should be proceeded by blank line + namespace Jellyfin.Database.Implementations.ModelConfiguration; using System; @@ -17,6 +19,7 @@ public class BaseItemConfiguration : IEntityTypeConfiguration /// public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => e.Id); // TODO: See rant in entity file. // builder.HasOne(e => e.Parent).WithMany(e => e.DirectChildren).HasForeignKey(e => e.ParentId); diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemMetadataFieldConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemMetadataFieldConfiguration.cs index 3a4fb10b..60f3bfd6 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemMetadataFieldConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemMetadataFieldConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class BaseItemMetadataFieldConfiguration : IEntityTypeConfiguration public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => new { e.Id, e.ItemId }); builder.HasOne(e => e.Item); } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemProviderConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemProviderConfiguration.cs index cae343b1..a3acca68 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemProviderConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemProviderConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class BaseItemProviderConfiguration : IEntityTypeConfiguration public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => new { e.ItemId, e.ProviderId }); builder.HasOne(e => e.Item); builder.HasIndex(e => new { e.ProviderId, e.ProviderValue, e.ItemId }); diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemTrailerTypeConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemTrailerTypeConfiguration.cs index 9efa208e..075fd2f2 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemTrailerTypeConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/BaseItemTrailerTypeConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class BaseItemTrailerTypeConfiguration : IEntityTypeConfiguration public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => new { e.Id, e.ItemId }); builder.HasOne(e => e.Item); } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ChapterConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ChapterConfiguration.cs index e63766f2..924bade0 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ChapterConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ChapterConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class ChapterConfiguration : IEntityTypeConfiguration /// public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => new { e.ItemId, e.ChapterIndex }); builder.HasOne(e => e.Item); } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/CustomItemDisplayPreferencesConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/CustomItemDisplayPreferencesConfiguration.cs index 79335fd2..741b3338 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/CustomItemDisplayPreferencesConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/CustomItemDisplayPreferencesConfiguration.cs @@ -3,21 +3,24 @@ // namespace Jellyfin.Database.Implementations.ModelConfiguration - -using Jellyfin.Database.Implementations.Entities; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; - -/// -/// FluentAPI configuration for the CustomItemDisplayPreferences entity. -/// -public class CustomItemDisplayPreferencesConfiguration : IEntityTypeConfiguration { - /// - public void Configure(EntityTypeBuilder builder) + using System; + using Jellyfin.Database.Implementations.Entities; + using Microsoft.EntityFrameworkCore; + using Microsoft.EntityFrameworkCore.Metadata.Builders; + + /// + /// FluentAPI configuration for the CustomItemDisplayPreferences entity. + /// + public class CustomItemDisplayPreferencesConfiguration : IEntityTypeConfiguration { - builder - .HasIndex(entity => new { entity.UserId, entity.ItemId, entity.Client, entity.Key }) - .IsUnique(); + /// + public void Configure(EntityTypeBuilder builder) + { + ArgumentNullException.ThrowIfNull(builder); + builder + .HasIndex(entity => new { entity.UserId, entity.ItemId, entity.Client, entity.Key }) + .IsUnique(); + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DeviceConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DeviceConfiguration.cs index a0dd3efa..75ad93a4 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DeviceConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DeviceConfiguration.cs @@ -3,29 +3,32 @@ // namespace Jellyfin.Database.Implementations.ModelConfiguration - -using Jellyfin.Database.Implementations.Entities.Security; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; - -/// -/// FluentAPI configuration for the Device entity. -/// -public class DeviceConfiguration : IEntityTypeConfiguration { - /// - public void Configure(EntityTypeBuilder builder) + using System; + using Jellyfin.Database.Implementations.Entities.Security; + using Microsoft.EntityFrameworkCore; + using Microsoft.EntityFrameworkCore.Metadata.Builders; + + /// + /// FluentAPI configuration for the Device entity. + /// + public class DeviceConfiguration : IEntityTypeConfiguration { - builder - .HasIndex(entity => new { entity.DeviceId, entity.DateLastActivity }); + /// + public void Configure(EntityTypeBuilder builder) + { + ArgumentNullException.ThrowIfNull(builder); + builder + .HasIndex(entity => new { entity.DeviceId, entity.DateLastActivity }); - builder - .HasIndex(entity => new { entity.AccessToken, entity.DateLastActivity }); + builder + .HasIndex(entity => new { entity.AccessToken, entity.DateLastActivity }); - builder - .HasIndex(entity => new { entity.UserId, entity.DeviceId }); + builder + .HasIndex(entity => new { entity.UserId, entity.DeviceId }); - builder - .HasIndex(entity => entity.DeviceId); + builder + .HasIndex(entity => entity.DeviceId); + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DeviceOptionsConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DeviceOptionsConfiguration.cs index 50be8f2a..7041a279 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DeviceOptionsConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DeviceOptionsConfiguration.cs @@ -3,21 +3,24 @@ // namespace Jellyfin.Database.Implementations.ModelConfiguration - -using Jellyfin.Database.Implementations.Entities.Security; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; - -/// -/// FluentAPI configuration for the DeviceOptions entity. -/// -public class DeviceOptionsConfiguration : IEntityTypeConfiguration { - /// - public void Configure(EntityTypeBuilder builder) + using System; + using Jellyfin.Database.Implementations.Entities.Security; + using Microsoft.EntityFrameworkCore; + using Microsoft.EntityFrameworkCore.Metadata.Builders; + + /// + /// FluentAPI configuration for the DeviceOptions entity. + /// + public class DeviceOptionsConfiguration : IEntityTypeConfiguration { - builder - .HasIndex(entity => entity.DeviceId) - .IsUnique(); + /// + public void Configure(EntityTypeBuilder builder) + { + ArgumentNullException.ThrowIfNull(builder); + builder + .HasIndex(entity => entity.DeviceId) + .IsUnique(); + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DisplayPreferencesConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DisplayPreferencesConfiguration.cs index 426aa22d..1e419fde 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DisplayPreferencesConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/DisplayPreferencesConfiguration.cs @@ -3,26 +3,29 @@ // namespace Jellyfin.Database.Implementations.ModelConfiguration - -using Jellyfin.Database.Implementations.Entities; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; - -/// -/// FluentAPI configuration for the DisplayPreferencesConfiguration entity. -/// -public class DisplayPreferencesConfiguration : IEntityTypeConfiguration { - /// - public void Configure(EntityTypeBuilder builder) - { - builder - .HasMany(d => d.HomeSections) - .WithOne() - .OnDelete(DeleteBehavior.Cascade); + using System; + using Jellyfin.Database.Implementations.Entities; + using Microsoft.EntityFrameworkCore; + using Microsoft.EntityFrameworkCore.Metadata.Builders; - builder - .HasIndex(entity => new { entity.UserId, entity.ItemId, entity.Client }) - .IsUnique(); + /// + /// FluentAPI configuration for the DisplayPreferencesConfiguration entity. + /// + public class DisplayPreferencesConfiguration : IEntityTypeConfiguration + { + /// + public void Configure(EntityTypeBuilder builder) + { + ArgumentNullException.ThrowIfNull(builder); + builder + .HasMany(d => d.HomeSections) + .WithOne() + .OnDelete(DeleteBehavior.Cascade); + + builder + .HasIndex(entity => new { entity.UserId, entity.ItemId, entity.Client }) + .IsUnique(); + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ItemValuesConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ItemValuesConfiguration.cs index c006569e..0d741909 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ItemValuesConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ItemValuesConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class ItemValuesConfiguration : IEntityTypeConfiguration /// public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => e.ItemValueId); builder.HasIndex(e => new { e.Type, e.CleanValue }); builder.HasIndex(e => new { e.Type, e.Value }).IsUnique(); diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ItemValuesMapConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ItemValuesMapConfiguration.cs index 05bd0a11..7e31e0a8 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ItemValuesMapConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/ItemValuesMapConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class ItemValuesMapConfiguration : IEntityTypeConfiguration /// public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => new { e.ItemValueId, e.ItemId }); builder.HasOne(e => e.Item); builder.HasOne(e => e.ItemValue); diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/KeyframeDataConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/KeyframeDataConfiguration.cs index 51416076..850b992c 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/KeyframeDataConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/KeyframeDataConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class KeyframeDataConfiguration : IEntityTypeConfiguration /// public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => e.ItemId); builder.HasOne(e => e.Item).WithMany().HasForeignKey(e => e.ItemId); } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/MediaStreamInfoConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/MediaStreamInfoConfiguration.cs index c737b8a3..2b49c86b 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/MediaStreamInfoConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/MediaStreamInfoConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class MediaStreamInfoConfiguration : IEntityTypeConfiguration public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => new { e.ItemId, e.StreamIndex }); builder.HasIndex(e => e.StreamIndex); builder.HasIndex(e => e.StreamType); diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PeopleBaseItemMapConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PeopleBaseItemMapConfiguration.cs index 7d5c856a..3d04ba2d 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PeopleBaseItemMapConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PeopleBaseItemMapConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class PeopleBaseItemMapConfiguration : IEntityTypeConfiguration public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => new { e.ItemId, e.PeopleId, e.Role }); builder.HasIndex(e => new { e.ItemId, e.SortOrder }); builder.HasIndex(e => new { e.ItemId, e.ListOrder }); diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PeopleConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PeopleConfiguration.cs index 64aad550..f35ec030 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PeopleConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PeopleConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class PeopleConfiguration : IEntityTypeConfiguration /// public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(e => e.Id); builder.HasIndex(e => e.Name); builder.HasMany(e => e.BaseItems); diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PermissionConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PermissionConfiguration.cs index 7bd6f206..3b60889f 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PermissionConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PermissionConfiguration.cs @@ -3,25 +3,28 @@ // namespace Jellyfin.Database.Implementations.ModelConfiguration - -using Jellyfin.Database.Implementations.Entities; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; - -/// -/// FluentAPI configuration for the Permission entity. -/// -public class PermissionConfiguration : IEntityTypeConfiguration { - /// - public void Configure(EntityTypeBuilder builder) + using System; + using Jellyfin.Database.Implementations.Entities; + using Microsoft.EntityFrameworkCore; + using Microsoft.EntityFrameworkCore.Metadata.Builders; + + /// + /// FluentAPI configuration for the Permission entity. + /// + public class PermissionConfiguration : IEntityTypeConfiguration { - // Used to get a user's permissions or a specific permission for a user. - // Also prevents multiple values being created for a user. - // Filtered over non-null user ids for when other entities (groups, API keys) get permissions - builder - .HasIndex(p => new { p.UserId, p.Kind }) - .HasFilter("[UserId] IS NOT NULL") - .IsUnique(); + /// + public void Configure(EntityTypeBuilder builder) + { + // Used to get a user's permissions or a specific permission for a user. + // Also prevents multiple values being created for a user. + // Filtered over non-null user ids for when other entities (groups, API keys) get permissions + ArgumentNullException.ThrowIfNull(builder); + builder + .HasIndex(p => new { p.UserId, p.Kind }) + .HasFilter("[UserId] IS NOT NULL") + .IsUnique(); + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PreferenceConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PreferenceConfiguration.cs index a434e48d..2011730e 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PreferenceConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/PreferenceConfiguration.cs @@ -3,22 +3,25 @@ // namespace Jellyfin.Database.Implementations.ModelConfiguration - -using Jellyfin.Database.Implementations.Entities; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; - -/// -/// FluentAPI configuration for the Permission entity. -/// -public class PreferenceConfiguration : IEntityTypeConfiguration { - /// - public void Configure(EntityTypeBuilder builder) + using System; + using Jellyfin.Database.Implementations.Entities; + using Microsoft.EntityFrameworkCore; + using Microsoft.EntityFrameworkCore.Metadata.Builders; + + /// + /// FluentAPI configuration for the Permission entity. + /// + public class PreferenceConfiguration : IEntityTypeConfiguration { - builder - .HasIndex(p => new { p.UserId, p.Kind }) - .HasFilter("[UserId] IS NOT NULL") - .IsUnique(); + /// + public void Configure(EntityTypeBuilder builder) + { + ArgumentNullException.ThrowIfNull(builder); + builder + .HasIndex(p => new { p.UserId, p.Kind }) + .HasFilter("[UserId] IS NOT NULL") + .IsUnique(); + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/TrickplayInfoConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/TrickplayInfoConfiguration.cs index 8c3fc5a5..9a5f29e9 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/TrickplayInfoConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/TrickplayInfoConfiguration.cs @@ -3,19 +3,22 @@ // namespace Jellyfin.Database.Implementations.ModelConfiguration - -using Jellyfin.Database.Implementations.Entities; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; - -/// -/// FluentAPI configuration for the TrickplayInfo entity. -/// -public class TrickplayInfoConfiguration : IEntityTypeConfiguration { - /// - public void Configure(EntityTypeBuilder builder) + using System; + using Jellyfin.Database.Implementations.Entities; + using Microsoft.EntityFrameworkCore; + using Microsoft.EntityFrameworkCore.Metadata.Builders; + + /// + /// FluentAPI configuration for the TrickplayInfo entity. + /// + public class TrickplayInfoConfiguration : IEntityTypeConfiguration { - builder.HasKey(info => new { info.ItemId, info.Width }); + /// + public void Configure(EntityTypeBuilder builder) + { + ArgumentNullException.ThrowIfNull(builder); + builder.HasKey(info => new { info.ItemId, info.Width }); + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/UserConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/UserConfiguration.cs index 030625a0..87fb8af5 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/UserConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/UserConfiguration.cs @@ -3,56 +3,59 @@ // namespace Jellyfin.Database.Implementations.ModelConfiguration - -using Jellyfin.Database.Implementations.Entities; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; - -/// -/// FluentAPI configuration for the User entity. -/// -public class UserConfiguration : IEntityTypeConfiguration { - /// - public void Configure(EntityTypeBuilder builder) + using System; + using Jellyfin.Database.Implementations.Entities; + using Microsoft.EntityFrameworkCore; + using Microsoft.EntityFrameworkCore.Metadata.Builders; + + /// + /// FluentAPI configuration for the User entity. + /// + public class UserConfiguration : IEntityTypeConfiguration { - builder - .Property(user => user.Username); + /// + public void Configure(EntityTypeBuilder builder) + { + ArgumentNullException.ThrowIfNull(builder); + builder + .Property(user => user.Username); - builder - .HasOne(u => u.ProfileImage) - .WithOne() - .OnDelete(DeleteBehavior.Cascade); + builder + .HasOne(u => u.ProfileImage) + .WithOne() + .OnDelete(DeleteBehavior.Cascade); - builder - .HasMany(u => u.Permissions) - .WithOne() - .HasForeignKey(p => p.UserId) - .OnDelete(DeleteBehavior.Cascade); + builder + .HasMany(u => u.Permissions) + .WithOne() + .HasForeignKey(p => p.UserId) + .OnDelete(DeleteBehavior.Cascade); - builder - .HasMany(u => u.Preferences) - .WithOne() - .HasForeignKey(p => p.UserId) - .OnDelete(DeleteBehavior.Cascade); + builder + .HasMany(u => u.Preferences) + .WithOne() + .HasForeignKey(p => p.UserId) + .OnDelete(DeleteBehavior.Cascade); - builder - .HasMany(u => u.AccessSchedules) - .WithOne() - .OnDelete(DeleteBehavior.Cascade); + builder + .HasMany(u => u.AccessSchedules) + .WithOne() + .OnDelete(DeleteBehavior.Cascade); - builder - .HasMany(u => u.DisplayPreferences) - .WithOne() - .OnDelete(DeleteBehavior.Cascade); + builder + .HasMany(u => u.DisplayPreferences) + .WithOne() + .OnDelete(DeleteBehavior.Cascade); - builder - .HasMany(u => u.ItemDisplayPreferences) - .WithOne() - .OnDelete(DeleteBehavior.Cascade); + builder + .HasMany(u => u.ItemDisplayPreferences) + .WithOne() + .OnDelete(DeleteBehavior.Cascade); - builder - .HasIndex(entity => entity.Username) - .IsUnique(); + builder + .HasIndex(entity => entity.Username) + .IsUnique(); + } } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/UserDataConfiguration.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/UserDataConfiguration.cs index 1db87949..1698269a 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/UserDataConfiguration.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/UserDataConfiguration.cs @@ -4,6 +4,7 @@ namespace Jellyfin.Database.Implementations.ModelConfiguration; +using System; using Jellyfin.Database.Implementations.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -16,6 +17,7 @@ public class UserDataConfiguration : IEntityTypeConfiguration /// public void Configure(EntityTypeBuilder builder) { + ArgumentNullException.ThrowIfNull(builder); builder.HasKey(d => new { d.ItemId, d.UserId, d.CustomDataKey }); builder.HasIndex(d => new { d.ItemId, d.UserId, d.Played }); builder.HasIndex(d => new { d.ItemId, d.UserId, d.PlaybackPositionTicks }); diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ProgressablePartitionReporting.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ProgressablePartitionReporting.cs index 64c86dfb..eed137ed 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/ProgressablePartitionReporting.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/ProgressablePartitionReporting.cs @@ -2,13 +2,15 @@ // Copyright (c) PlaceholderCompany. All rights reserved. // +#pragma warning disable SA1309 // Variables should not begin with underscore +#pragma warning disable SA1600 // Elements should be documented + namespace Jellyfin.Database.Implementations; using System; using System.Diagnostics; using System.Linq; - /// /// Wrapper for progress reporting on Partition helpers. /// @@ -23,7 +25,7 @@ public class ProgressablePartitionReporting internal ProgressablePartitionReporting(IOrderedQueryable source) { - _source = source; + this._source = source; } internal Action? OnBeginItem { get; set; } @@ -34,27 +36,27 @@ public class ProgressablePartitionReporting internal Action? OnEndPartition { get; set; } - internal IOrderedQueryable Source => _source; + internal IOrderedQueryable Source => this._source; internal void BeginItem(TEntity entity, int iteration, int itemIndex) { - _itemTime.Restart(); - OnBeginItem?.Invoke(entity, iteration, itemIndex); + this._itemTime.Restart(); + this.OnBeginItem?.Invoke(entity, iteration, itemIndex); } internal void BeginPartition(int iteration) { - _partitionTime.Restart(); - OnBeginPartition?.Invoke(iteration); + this._partitionTime.Restart(); + this.OnBeginPartition?.Invoke(iteration); } internal void EndItem(TEntity entity, int iteration, int itemIndex) { - OnEndItem?.Invoke(entity, iteration, itemIndex, _itemTime.Elapsed); + this.OnEndItem?.Invoke(entity, iteration, itemIndex, this._itemTime.Elapsed); } internal void EndPartition(int iteration) { - OnEndPartition?.Invoke(iteration, _partitionTime.Elapsed); + this.OnEndPartition?.Invoke(iteration, this._partitionTime.Elapsed); } } diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/QueryPartitionHelpers.cs b/src/Jellyfin.Database/Jellyfin.Database.Implementations/QueryPartitionHelpers.cs index 436a69db..ebe1cd6a 100644 --- a/src/Jellyfin.Database/Jellyfin.Database.Implementations/QueryPartitionHelpers.cs +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/QueryPartitionHelpers.cs @@ -13,7 +13,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; - /// /// Contains helpers to partition EFCore queries. /// @@ -61,6 +60,7 @@ public static class QueryPartitionHelpers /// A queryable that can be used to partition. public static ProgressablePartitionReporting WithPartitionProgress(this ProgressablePartitionReporting progressable, Action? beginPartition = null, Action? endPartition = null) { + ArgumentNullException.ThrowIfNull(progressable); progressable.OnBeginPartition = beginPartition; progressable.OnEndPartition = endPartition; return progressable; @@ -76,6 +76,7 @@ public static class QueryPartitionHelpers /// A queryable that can be used to partition. public static ProgressablePartitionReporting WithItemProgress(this ProgressablePartitionReporting progressable, Action? beginItem = null, Action? endItem = null) { + ArgumentNullException.ThrowIfNull(progressable); progressable.OnBeginItem = beginItem; progressable.OnEndItem = endItem; return progressable; @@ -91,6 +92,7 @@ public static class QueryPartitionHelpers /// A enumerable representing the whole of the query. public static async IAsyncEnumerable PartitionAsync(this ProgressablePartitionReporting partitionInfo, int partitionSize, [EnumeratorCancellation] CancellationToken cancellationToken = default) { + ArgumentNullException.ThrowIfNull(partitionInfo); await foreach (var item in partitionInfo.Source.PartitionAsync(partitionSize, partitionInfo, cancellationToken).ConfigureAwait(false)) { yield return item; @@ -107,6 +109,7 @@ public static class QueryPartitionHelpers /// A enumerable representing the whole of the query. public static async IAsyncEnumerable PartitionEagerAsync(this ProgressablePartitionReporting partitionInfo, int partitionSize, [EnumeratorCancellation] CancellationToken cancellationToken = default) { + ArgumentNullException.ThrowIfNull(partitionInfo); await foreach (var item in partitionInfo.Source.PartitionEagerAsync(partitionSize, partitionInfo, cancellationToken).ConfigureAwait(false)) { yield return item; diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.CodeAnalysis.dll b/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.CodeAnalysis.dll new file mode 100644 index 0000000000000000000000000000000000000000..30bfbe7b3c0b2a231d4276207bbfa1fe64d06cad GIT binary patch literal 8704 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 literal 0 HcmV?d00001 diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.CodeAnalysis.pdb b/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.CodeAnalysis.pdb new file mode 100644 index 0000000000000000000000000000000000000000..213f6c5e66c2a9afa0a549ef16300d8dbc0c8861 GIT binary patch literal 9652 zcmbtacU%)m`=1TfihA~nVBr)ZMMXqkNuviaLBMk2k}MEOGn=5XQbelQ4-rp65mcmz z*bqJS&hmn%$es1|6uq;Z9=?{>^E}btY_bzV68-0w&u6ncJJ0tiGtbOC&+M>;!E6j* zfckZZR|J>snC!uH*S!F?U^#pc!^=5B97nxtg_jzVJFf&Fk^ul0mYs!al|-IE!bh+b zzO$y@%@Ts`@Oc6C955@0qWb{L$DCl9Emg$9a!YRZmKvuEp{HhT<~0s)JFgmbVKaOU zqWkUY(xofVY2^dU_VBWUS5J7^z>89DB)lLy9Sx;Dby0QHosv)0QFrPGpQ+dISFOK+ z)xZiqQT(77Xr-Q(!bd^U`4Djt-mk;^Fbo6ZF^Ze{4+H;m#K89>F>o7RYn>s|)Q;}t+dLI)D6aWx?$~$ zyPtcn7lPB_yBQ@m&p#e+&Pxye_O^fA>JuS1?F0BLa zUfnUrEsGusPKE+bnIA(DRG#jBJv>Nz7ch8J?ITo*g@i~=_EaX2i==J~38_>YFOgf3 zDp9{+y1?Wp!~{!@OSPng9Kj;BauHWTDitIyjlk7vLM7K#E+te<5otFMv+gm}akAqW z_cNkFbpzRf*|*xThuucK#R=U3f!TbAHE+M-zo)>MC(GX2YOMaJT!nzQjI zlbhO`Rz2Jy|2y*0y$kkn<9rY7sJ#&~uR6^)S+6JX1R{k@DUlK?H}q-})ZE?8lj%9x z-Fp(#!`*AV$aA9CB#{^49zSuinDCx5(QBdy4$I=no>L}!i3o3R!o$NmZX%H4@&pZ@ zKmd+2AQc*wh;WOCyxl|!4fGQ)pwOt58ns)JL@owgtsIw0L^$lhP>DQ=5Qj?QRJckD z6iT&3CRvKBDW4NlE$*h2YDl1z;_7&XN(NYREk~&VD#%kJBMf?bK((1(ZX}^fmWZH( z{(lVUU^)@bu5yi3sv8zOx$Y(=pwAH?Qo!QyT)8~Ta2O?QvT$X@q{OlR)Zd~+; zb&m}f#0Cg>tVo`qbB)JmYdk+&M@|&mA*L;acr63jYY9?DGgV~`wQ zJM`icPz*qL>Y}mutgh_BhI9Tey43INz#5NeCP$cvtCTeM!^)O&P^<)P1$pZp++lHQ zUMueN$tC`u!RiH`m{OAo{P>{aznde2*FEvu7=7Mfw#V^s2Pj0MP~%Ki9H~~}BFYhw zu5ZsTEdr-8Fg%NMY}os^;gx5zK2=Zm*k=k2RI8Ot>W?Fpz&VokZCdI6KCg-?Cc@Nx zAo68RNag(hX;hmZuuPc<2{;`~>7l^%hrUlUh++ueg3|zqVvjxk?zayXz~h4|E1upQ)91@vB8er4LGjEk�c~Ek0bz)Nbe0J^1zS;%-)L9Sou+ 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 W7?_6H!Q(lpQwG|=JC@QQ?D2mDOKI=` literal 0 HcmV?d00001 diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.CodeAnalysis.xml b/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.CodeAnalysis.xml new file mode 100644 index 00000000..d781356f --- /dev/null +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.CodeAnalysis.xml @@ -0,0 +1,24 @@ + + + + Jellyfin.CodeAnalysis + + + + + Analyzer to detect sync disposal of async-created IAsyncDisposable objects. + + + + + Diagnostic descriptor for sync disposal of async-created IAsyncDisposable objects. + + + + + + + + + + diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.deps.json b/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.deps.json new file mode 100644 index 00000000..23f9394f --- /dev/null +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.deps.json @@ -0,0 +1,994 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v10.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v10.0": { + "Jellyfin.Database.Implementations/10.11.0": { + "dependencies": { + "Jellyfin.CodeAnalysis": "1.0.0", + "Microsoft.EntityFrameworkCore.Design": "10.0.3", + "Microsoft.EntityFrameworkCore.Relational": "10.0.3", + "Polly": "8.6.5" + }, + "runtime": { + "Jellyfin.Database.Implementations.dll": {} + } + }, + "Humanizer.Core/2.14.1": { + "runtime": { + "lib/net6.0/Humanizer.dll": { + "assemblyVersion": "2.14.0.0", + "fileVersion": "2.14.1.48190" + } + } + }, + "Jellyfin.Sdk/2025.10.21": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1", + "Microsoft.Kiota.Http.HttpClientLibrary": "1.20.1", + "Microsoft.Kiota.Serialization.Form": "1.20.1", + "Microsoft.Kiota.Serialization.Json": "1.20.1", + "Microsoft.Kiota.Serialization.Multipart": "1.20.1", + "Microsoft.Kiota.Serialization.Text": "1.20.1" + }, + "runtime": { + "lib/net8.0/Jellyfin.Sdk.dll": { + "assemblyVersion": "2025.10.21.0", + "fileVersion": "2025.10.21.0" + } + } + }, + "Microsoft.Build.Framework/18.0.2": { + "runtime": { + "lib/net10.0/Microsoft.Build.Framework.dll": { + "assemblyVersion": "15.1.0.0", + "fileVersion": "18.0.2.52102" + } + } + }, + "Microsoft.CodeAnalysis.Common/5.0.0": { + "runtime": { + "lib/net9.0/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.25.56712" + } + }, + "resources": { + "lib/net9.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/net9.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/net9.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/net9.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/net9.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/net9.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/net9.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/net9.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/net9.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/net9.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/net9.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/net9.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net9.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/5.0.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Common": "5.0.0" + }, + "runtime": { + "lib/net9.0/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.25.56712" + } + }, + "resources": { + "lib/net9.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/net9.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/net9.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/net9.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/net9.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/net9.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/net9.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/net9.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/net9.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/net9.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/net9.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/net9.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net9.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/5.0.0": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp": "5.0.0", + "Microsoft.CodeAnalysis.Common": "5.0.0", + "Microsoft.CodeAnalysis.Workspaces.Common": "5.0.0", + "System.Composition": "9.0.0" + }, + "runtime": { + "lib/net9.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.25.56712" + } + }, + "resources": { + "lib/net9.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/net9.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/net9.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/net9.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/net9.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/net9.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/net9.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/net9.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/net9.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/net9.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/net9.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/net9.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net9.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common/5.0.0": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.Common": "5.0.0", + "System.Composition": "9.0.0" + }, + "runtime": { + "lib/net9.0/Microsoft.CodeAnalysis.Workspaces.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.25.56712" + } + }, + "resources": { + "lib/net9.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/net9.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/net9.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/net9.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/net9.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/net9.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/net9.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/net9.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/net9.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/net9.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/net9.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/net9.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net9.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.MSBuild/5.0.0": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Build.Framework": "18.0.2", + "Microsoft.CodeAnalysis.Workspaces.Common": "5.0.0", + "Microsoft.Extensions.DependencyInjection": "10.0.3", + "Microsoft.Extensions.Logging": "10.0.3", + "Microsoft.Extensions.Logging.Abstractions": "10.0.3", + "Microsoft.Extensions.Options": "10.0.3", + "Microsoft.Extensions.Primitives": "10.0.3", + "Microsoft.VisualStudio.SolutionPersistence": "1.0.52", + "Newtonsoft.Json": "13.0.3", + "System.Composition": "9.0.0" + }, + "runtime": { + "lib/net9.0/Microsoft.CodeAnalysis.ExternalAccess.RazorCompiler.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.25.56712" + }, + "lib/net9.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.25.56712" + } + }, + "resources": { + "lib/net9.0/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "cs" + }, + "lib/net9.0/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "de" + }, + "lib/net9.0/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "es" + }, + "lib/net9.0/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "fr" + }, + "lib/net9.0/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "it" + }, + "lib/net9.0/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "ja" + }, + "lib/net9.0/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "ko" + }, + "lib/net9.0/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "pl" + }, + "lib/net9.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "pt-BR" + }, + "lib/net9.0/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "ru" + }, + "lib/net9.0/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "tr" + }, + "lib/net9.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net9.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.EntityFrameworkCore/10.0.3": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.3", + "Microsoft.Extensions.Caching.Memory": "10.0.3", + "Microsoft.Extensions.Logging": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.EntityFrameworkCore.dll": { + "assemblyVersion": "10.0.3.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/10.0.3": { + "runtime": { + "lib/net10.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "assemblyVersion": "10.0.3.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.EntityFrameworkCore.Design/10.0.3": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Build.Framework": "18.0.2", + "Microsoft.CodeAnalysis.CSharp": "5.0.0", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "5.0.0", + "Microsoft.CodeAnalysis.Workspaces.MSBuild": "5.0.0", + "Microsoft.EntityFrameworkCore.Relational": "10.0.3", + "Microsoft.Extensions.Caching.Memory": "10.0.3", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", + "Microsoft.Extensions.DependencyModel": "10.0.3", + "Microsoft.Extensions.Logging": "10.0.3", + "Mono.TextTemplating": "3.0.0", + "Newtonsoft.Json": "13.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.EntityFrameworkCore.Design.dll": { + "assemblyVersion": "10.0.3.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.EntityFrameworkCore.Relational/10.0.3": { + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.3", + "Microsoft.Extensions.Caching.Memory": "10.0.3", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", + "Microsoft.Extensions.Logging": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "assemblyVersion": "10.0.3.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Caching.Abstractions/10.0.3": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Caching.Memory/10.0.3": { + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.3", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.3", + "Microsoft.Extensions.Logging.Abstractions": "10.0.3", + "Microsoft.Extensions.Options": "10.0.3", + "Microsoft.Extensions.Primitives": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Caching.Memory.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Configuration.Abstractions/10.0.3": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.DependencyInjection/10.0.3": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.3": { + "runtime": { + "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.DependencyModel/10.0.3": { + "runtime": { + "lib/net10.0/Microsoft.Extensions.DependencyModel.dll": { + "assemblyVersion": "10.0.0.3", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Logging/10.0.3": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.3", + "Microsoft.Extensions.Logging.Abstractions": "10.0.3", + "Microsoft.Extensions.Options": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.3": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Options/10.0.3": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.3", + "Microsoft.Extensions.Primitives": "10.0.3" + }, + "runtime": { + "lib/net10.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Extensions.Primitives/10.0.3": { + "runtime": { + "lib/net10.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.326.7603" + } + } + }, + "Microsoft.Kiota.Abstractions/1.20.1": { + "dependencies": { + "Std.UriTemplate": "2.0.5" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Abstractions.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.Kiota.Http.HttpClientLibrary/1.20.1": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Http.HttpClientLibrary.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.Kiota.Serialization.Form/1.20.1": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Serialization.Form.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.Kiota.Serialization.Json/1.20.1": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Serialization.Json.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.Kiota.Serialization.Multipart/1.20.1": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Serialization.Multipart.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.Kiota.Serialization.Text/1.20.1": { + "dependencies": { + "Microsoft.Kiota.Abstractions": "1.20.1" + }, + "runtime": { + "lib/net8.0/Microsoft.Kiota.Serialization.Text.dll": { + "assemblyVersion": "1.20.1.0", + "fileVersion": "1.20.1.0" + } + } + }, + "Microsoft.VisualStudio.SolutionPersistence/1.0.52": { + "runtime": { + "lib/net8.0/Microsoft.VisualStudio.SolutionPersistence.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.0.52.6595" + } + } + }, + "Mono.TextTemplating/3.0.0": { + "dependencies": { + "System.CodeDom": "6.0.0" + }, + "runtime": { + "lib/net6.0/Mono.TextTemplating.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "3.0.0.1" + } + } + }, + "Newtonsoft.Json/13.0.3": { + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.3.27908" + } + } + }, + "Polly/8.6.5": { + "dependencies": { + "Polly.Core": "8.6.5" + }, + "runtime": { + "lib/net6.0/Polly.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.6.5.5194" + } + } + }, + "Polly.Core/8.6.5": { + "runtime": { + "lib/net8.0/Polly.Core.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.6.5.5194" + } + } + }, + "Std.UriTemplate/2.0.5": { + "runtime": { + "lib/net5.0/Std.UriTemplate.dll": { + "assemblyVersion": "2.0.5.0", + "fileVersion": "2.0.5.0" + } + } + }, + "System.CodeDom/6.0.0": { + "runtime": { + "lib/net6.0/System.CodeDom.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Composition/9.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "9.0.0", + "System.Composition.Convention": "9.0.0", + "System.Composition.Hosting": "9.0.0", + "System.Composition.Runtime": "9.0.0", + "System.Composition.TypedParts": "9.0.0" + } + }, + "System.Composition.AttributedModel/9.0.0": { + "runtime": { + "lib/net9.0/System.Composition.AttributedModel.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52809" + } + } + }, + "System.Composition.Convention/9.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "9.0.0" + }, + "runtime": { + "lib/net9.0/System.Composition.Convention.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52809" + } + } + }, + "System.Composition.Hosting/9.0.0": { + "dependencies": { + "System.Composition.Runtime": "9.0.0" + }, + "runtime": { + "lib/net9.0/System.Composition.Hosting.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52809" + } + } + }, + "System.Composition.Runtime/9.0.0": { + "runtime": { + "lib/net9.0/System.Composition.Runtime.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52809" + } + } + }, + "System.Composition.TypedParts/9.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "9.0.0", + "System.Composition.Hosting": "9.0.0", + "System.Composition.Runtime": "9.0.0" + }, + "runtime": { + "lib/net9.0/System.Composition.TypedParts.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52809" + } + } + }, + "Jellyfin.CodeAnalysis/1.0.0": { + "dependencies": { + "Jellyfin.Sdk": "2025.10.21" + }, + "runtime": { + "Jellyfin.CodeAnalysis.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "Jellyfin.Database.Implementations/10.11.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Humanizer.Core/2.14.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==", + "path": "humanizer.core/2.14.1", + "hashPath": "humanizer.core.2.14.1.nupkg.sha512" + }, + "Jellyfin.Sdk/2025.10.21": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1pG60suEiV3v77zqLd5fO9S8m8qryxj9mZYb24Me1XgSXlaCIt0SC1V1sbFKyoG70Q3n915wT4Ko4BUanorRug==", + "path": "jellyfin.sdk/2025.10.21", + "hashPath": "jellyfin.sdk.2025.10.21.nupkg.sha512" + }, + "Microsoft.Build.Framework/18.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-sOSb+0J4G/jCBW/YqmRuL0eOMXgfw1KQLdC9TkbvfA5xs7uNm+PBQXJCOzSJGXtZcZrtXozcwxPmUiRUbmd7FA==", + "path": "microsoft.build.framework/18.0.2", + "hashPath": "microsoft.build.framework.18.0.2.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZXRAdvH6GiDeHRyd3q/km8Z44RoM6FBWHd+gen/la81mVnAdHTEsEkO5J0TCNXBymAcx5UYKt5TvgKBhaLJEow==", + "path": "microsoft.codeanalysis.common/5.0.0", + "hashPath": "microsoft.codeanalysis.common.5.0.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5DSyJ9bk+ATuDy7fp2Zt0mJStDVKbBoiz1DyfAwSa+k4H4IwykAUcV3URelw5b8/iVbfSaOwkwmPUZH6opZKCw==", + "path": "microsoft.codeanalysis.csharp/5.0.0", + "hashPath": "microsoft.codeanalysis.csharp.5.0.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Al/Q8B+yO8odSqGVpSvrShMFDvlQdIBU//F3E6Rb0YdiLSALE9wh/pvozPNnfmh5HDnvU+mkmSjpz4hQO++jaA==", + "path": "microsoft.codeanalysis.csharp.workspaces/5.0.0", + "hashPath": "microsoft.codeanalysis.csharp.workspaces.5.0.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Workspaces.Common/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZbUmIvT6lqTNKiv06Jl5wf0MTMi1vQ1oH7ou4CLcs2C/no/L7EhP3T8y3XXvn9VbqMcJaJnEsNA1jwYUMgc5jg==", + "path": "microsoft.codeanalysis.workspaces.common/5.0.0", + "hashPath": "microsoft.codeanalysis.workspaces.common.5.0.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Workspaces.MSBuild/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/G+LVoAGMz6Ae8nm+PGLxSw+F5RjYx/J7irbTO5uKAPw1bxHyQJLc/YOnpDxt+EpPtYxvC9wvBsg/kETZp1F9Q==", + "path": "microsoft.codeanalysis.workspaces.msbuild/5.0.0", + "hashPath": "microsoft.codeanalysis.workspaces.msbuild.5.0.0.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-CDEImwD4A7BseABJMCpLZnhfFjmPY/bHwhhS70elc6gLI/bYUEOhxWt7PmaNGYGhIEzOnStlCy5QcVb+8dod5Q==", + "path": "microsoft.entityframeworkcore/10.0.3", + "hashPath": "microsoft.entityframeworkcore.10.0.3.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Abstractions/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c7Uoz381xnMHNBRB8eHRhGgzUtXbgddlbODhwZRrTSzZWDharp3RkJsFwhxyESbeXhCqmML7VdvjMQ7uu+HreA==", + "path": "microsoft.entityframeworkcore.abstractions/10.0.3", + "hashPath": "microsoft.entityframeworkcore.abstractions.10.0.3.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Design/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OPZ/u7fONQFmnyUIDB8SeJtKnyFkj1zJsZ0Ke2Cp17q8hYs6jGmYEFd6Ne4Hdcd6auUdFdV7di+uFo2w+L34NA==", + "path": "microsoft.entityframeworkcore.design/10.0.3", + "hashPath": "microsoft.entityframeworkcore.design.10.0.3.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Relational/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Pmh60OK9neVr/M0FJwm9hlzm2bD4Kd65SID8E6SP5c90tExNgXwORrlEWl0oGU/ig9ifpNN4PSpIrnHNozlT5w==", + "path": "microsoft.entityframeworkcore.relational/10.0.3", + "hashPath": "microsoft.entityframeworkcore.relational.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.Abstractions/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5dtXBvI8t3z8pF4tB38JYgi/enCL/DwSXxpqShgFz3SHJ7IzqFIMs6Gu5ik8sNZzcO9qQs3xIDpB3vDamkYG+Q==", + "path": "microsoft.extensions.caching.abstractions/10.0.3", + "hashPath": "microsoft.extensions.caching.abstractions.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.Memory/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-No4fVh0z30SWqiWFRoA4PNdrEco6OjXvCqRFvlmRgDQqqks2bRDdeavUgWEiAX153ZAwW9loUgbxcvuP4NKQLg==", + "path": "microsoft.extensions.caching.memory/10.0.3", + "hashPath": "microsoft.extensions.caching.memory.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Abstractions/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-xVDHL0+SIgemfh95fTO9cGLe17TWv/ZP0n7m01z8X6pzt2DmQpucioWR/mYZA1sRlkWnkXzfl0JweLNWmE9WMg==", + "path": "microsoft.extensions.configuration.abstractions/10.0.3", + "hashPath": "microsoft.extensions.configuration.abstractions.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2DLOmC0EkB2smVK8lPP1PIKEgL1arE3CMp9XSIQB/Y7ev5nnnyuM/PizKJ6QfLD08QCYoopSC9SFdbYglDomYg==", + "path": "microsoft.extensions.dependencyinjection/10.0.3", + "hashPath": "microsoft.extensions.dependencyinjection.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bwGMrRcAMWx2s/RDgja97p27rxSz2pEQW0+rX5cWAUWVETVJ/eyxGfjAl8vuG5a+lckWmPIE+vcuaZNVB5YDdw==", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.3", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyModel/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-31kRjr1fgdJO1UZ/AsjL2noqwht+juHMQ8c/oh8CEsDhlM2+0zwVZVsZjxSfOFiPtn5+6kRGuvSbLAufAPT0kA==", + "path": "microsoft.extensions.dependencymodel/10.0.3", + "hashPath": "microsoft.extensions.dependencymodel.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-8D9Er1cGXNjNDIB+VLBNHn386L5ls2FoiG9a6o12gyn+GG3w6jdfUhzT8dtBnKcevE7/fsVA8MS3FBgFfClFtQ==", + "path": "microsoft.extensions.logging/10.0.3", + "hashPath": "microsoft.extensions.logging.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lxl0WLk7ROgBFAsjcOYjQ8/DVK+VMszxGBzUhgtQmAsTNldLL5pk9NG/cWTsXHq0lUhUEAtZkEE7jOGOA8bGKQ==", + "path": "microsoft.extensions.logging.abstractions/10.0.3", + "hashPath": "microsoft.extensions.logging.abstractions.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Options/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hU6WzGTPvPoLA2ng1ILvWQb3g0qORdlHNsxI8IcPLumJb3suimYUl+bbDzdo1V4KFsvVhnMWzysHpKbZaoDQPQ==", + "path": "microsoft.extensions.options/10.0.3", + "hashPath": "microsoft.extensions.options.10.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GEcpTwo7sUoLGGNTqV1FZEuL+tTD9m81NX/mh099dqGNna07/UGZShKQNZRw4hv6nlliSUwYQgSYc7OR99Jufg==", + "path": "microsoft.extensions.primitives/10.0.3", + "hashPath": "microsoft.extensions.primitives.10.0.3.nupkg.sha512" + }, + "Microsoft.Kiota.Abstractions/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bv1n2gnxA/O+1a26h3YB6bgcc3ZSLCjRumMh7sVkFmksLaVonhcrJpUrEtBlnnYPrnHwzm/1BYQnYjCVG7A+fA==", + "path": "microsoft.kiota.abstractions/1.20.1", + "hashPath": "microsoft.kiota.abstractions.1.20.1.nupkg.sha512" + }, + "Microsoft.Kiota.Http.HttpClientLibrary/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pQzs+9n3QAG/FKFwgIaRE0EqOXfW3rWliOdk9XZbghyRdeAtiQjSbJbpascdZlf7uatLpPYA145q6MYpLxvsgA==", + "path": "microsoft.kiota.http.httpclientlibrary/1.20.1", + "hashPath": "microsoft.kiota.http.httpclientlibrary.1.20.1.nupkg.sha512" + }, + "Microsoft.Kiota.Serialization.Form/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-n7izb8GZSoatmFSpMaHmh78U3oW+YdYb2gDwhkG86COHuiGWV9s0BKBeUlFakAV00CDwaH9iFqxCQ0veYVkG1A==", + "path": "microsoft.kiota.serialization.form/1.20.1", + "hashPath": "microsoft.kiota.serialization.form.1.20.1.nupkg.sha512" + }, + "Microsoft.Kiota.Serialization.Json/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4MumZe45DI/o1YP+hq7wyArOHDhjkSiu14ysN4xWKe6vwlu43BUYydA/yT0CtjoPwbFW/6jfx/NVSvM3DzBzbg==", + "path": "microsoft.kiota.serialization.json/1.20.1", + "hashPath": "microsoft.kiota.serialization.json.1.20.1.nupkg.sha512" + }, + "Microsoft.Kiota.Serialization.Multipart/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tP7ZxA1zsIi3FE8CHwfA5JnzlW1NYld+LpFihFq+S7IXFDv1x37I968lPKGIdEpWW9vWacuqDQVKIyJiKZ257A==", + "path": "microsoft.kiota.serialization.multipart/1.20.1", + "hashPath": "microsoft.kiota.serialization.multipart.1.20.1.nupkg.sha512" + }, + "Microsoft.Kiota.Serialization.Text/1.20.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Cue4l9AeU0WgL2CdUW8K58BMwQOyiHgT7aCov2qGEKpmpeWQj7cmAWCgxDfPHYPkZtz1Ccbrw4/6KrDgCmrC3Q==", + "path": "microsoft.kiota.serialization.text/1.20.1", + "hashPath": "microsoft.kiota.serialization.text.1.20.1.nupkg.sha512" + }, + "Microsoft.VisualStudio.SolutionPersistence/1.0.52": { + "type": "package", + "serviceable": true, + "sha512": "sha512-oNv2JtYXhpdJrX63nibx1JT3uCESOBQ1LAk7Dtz/sr0+laW0KRM6eKp4CZ3MHDR2siIkKsY8MmUkeP5DKkQQ5w==", + "path": "microsoft.visualstudio.solutionpersistence/1.0.52", + "hashPath": "microsoft.visualstudio.solutionpersistence.1.0.52.nupkg.sha512" + }, + "Mono.TextTemplating/3.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YqueG52R/Xej4VVbKuRIodjiAhV0HR/XVbLbNrJhCZnzjnSjgMJ/dCdV0akQQxavX6hp/LC6rqLGLcXeQYU7XA==", + "path": "mono.texttemplating/3.0.0", + "hashPath": "mono.texttemplating.3.0.0.nupkg.sha512" + }, + "Newtonsoft.Json/13.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", + "path": "newtonsoft.json/13.0.3", + "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512" + }, + "Polly/8.6.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VqtW2ZE/ALvQMAH1cQY3qZ2cF2OXa3oe/HKMdOv6Q02HCoEW0rsFNfcBONXlHBe1TnjWW1vdRxBEkPeq0/2FHA==", + "path": "polly/8.6.5", + "hashPath": "polly.8.6.5.nupkg.sha512" + }, + "Polly.Core/8.6.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-t+sUVrIwvo7UmsgHGgOG9F0GDZSRIm47u2ylH17Gvcv1q5hNEwgD5GoBlFyc0kh/pebmPyrAgvGsR/65ZBaXlg==", + "path": "polly.core/8.6.5", + "hashPath": "polly.core.8.6.5.nupkg.sha512" + }, + "Std.UriTemplate/2.0.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-PtqPdWNBObRcDHjyjbgOz2XoCJQaiA+HNDPQve/O7yGCkospfHDCuH9ULVx1msImwHHG+uhpDjiZX7bpLN/cnw==", + "path": "std.uritemplate/2.0.5", + "hashPath": "std.uritemplate.2.0.5.nupkg.sha512" + }, + "System.CodeDom/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==", + "path": "system.codedom/6.0.0", + "hashPath": "system.codedom.6.0.0.nupkg.sha512" + }, + "System.Composition/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3Djj70fFTraOarSKmRnmRy/zm4YurICm+kiCtI0dYRqGJnLX6nJ+G3WYuFJ173cAPax/gh96REcbNiVqcrypFQ==", + "path": "system.composition/9.0.0", + "hashPath": "system.composition.9.0.0.nupkg.sha512" + }, + "System.Composition.AttributedModel/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iri00l/zIX9g4lHMY+Nz0qV1n40+jFYAmgsaiNn16xvt2RDwlqByNG4wgblagnDYxm3YSQQ0jLlC/7Xlk9CzyA==", + "path": "system.composition.attributedmodel/9.0.0", + "hashPath": "system.composition.attributedmodel.9.0.0.nupkg.sha512" + }, + "System.Composition.Convention/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+vuqVP6xpi582XIjJi6OCsIxuoTZfR0M7WWufk3uGDeCl3wGW6KnpylUJ3iiXdPByPE0vR5TjJgR6hDLez4FQg==", + "path": "system.composition.convention/9.0.0", + "hashPath": "system.composition.convention.9.0.0.nupkg.sha512" + }, + "System.Composition.Hosting/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OFqSeFeJYr7kHxDfaViGM1ymk7d4JxK//VSoNF9Ux0gpqkLsauDZpu89kTHHNdCWfSljbFcvAafGyBoY094btQ==", + "path": "system.composition.hosting/9.0.0", + "hashPath": "system.composition.hosting.9.0.0.nupkg.sha512" + }, + "System.Composition.Runtime/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-w1HOlQY1zsOWYussjFGZCEYF2UZXgvoYnS94NIu2CBnAGMbXFAX8PY8c92KwUItPmowal68jnVLBCzdrWLeEKA==", + "path": "system.composition.runtime/9.0.0", + "hashPath": "system.composition.runtime.9.0.0.nupkg.sha512" + }, + "System.Composition.TypedParts/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-aRZlojCCGEHDKqh43jaDgaVpYETsgd7Nx4g1zwLKMtv4iTo0627715ajEFNpEEBTgLmvZuv8K0EVxc3sM4NWJA==", + "path": "system.composition.typedparts/9.0.0", + "hashPath": "system.composition.typedparts.9.0.0.nupkg.sha512" + }, + "Jellyfin.CodeAnalysis/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.dll b/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.dll new file mode 100644 index 0000000000000000000000000000000000000000..cf07473787e49572b1edbb82a1b22242c71dfcdf GIT binary patch literal 218624 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 literal 0 HcmV?d00001 diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.pdb b/src/Jellyfin.Database/Jellyfin.Database.Implementations/bin/Debug/net10.0/Jellyfin.Database.Implementations.pdb new file mode 100644 index 0000000000000000000000000000000000000000..2e758da734b1f53197a6079096995df6b7c550ca GIT binary patch literal 66792 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 + + + Jellyfin.Database.Implementations + + + + + The custom value option for custom database providers. + + + + + Gets or sets the key of the value. + + + + + Gets or sets the value. + + + + + Defines the options for a custom database connector. + + + + + Gets or sets the Plugin name to search for database providers. + + + + + Gets or sets the plugin assembly to search for providers. + + + + + Gets or sets the connection string for the custom database provider. + + + + + Gets or sets the list of extra options for the custom provider. + + + + + Options to configure jellyfins managed database. + + + + + Gets or Sets the type of database jellyfin should use. + + + + + Gets or sets the options required to use a custom database provider. + + + + + Gets or Sets the kind of locking behavior jellyfin should perform. Possible options are "NoLock", "Pessimistic", "Optimistic". + Defaults to "NoLock". + + + + + Defines all possible methods for locking database access for concurrent queries. + + + + + Defines that no explicit application level locking for reads and writes should be done and only provider specific locking should be relied on. + + + + + Defines a behavior that always blocks all reads while any one write is done. + + + + + Defines that all writes should be attempted and when fail should be retried. + + + + + An entity representing a user's access schedule. + + + + + Initializes a new instance of the class. + + The day of the week. + The start hour. + The end hour. + The associated user's id. + + + + Gets the id of this instance. + + + Identity, Indexed, Required. + + + + + Gets the id of the associated user. + + + + + Gets or sets the day of week. + + The day of week. + + + + Gets or sets the start hour. + + The start hour. + + + + Gets or sets the end hour. + + The end hour. + + + + An entity referencing an activity log entry. + + + + + Initializes a new instance of the class. + Public constructor with required data. + + The name. + The type. + The user id. + + + + Gets the identity of this instance. + + + + + Gets or sets the name. + + + Required, Max length = 512. + + + + + Gets or sets the overview. + + + Max length = 512. + + + + + Gets or sets the short overview. + + + Max length = 512. + + + + + Gets or sets the type. + + + Required, Max length = 256. + + + + + Gets or sets the user id. + + + Required. + + + + + Gets or sets the item id. + + + Max length = 256. + + + + + Gets or sets the date created. This should be in UTC. + + + Required. + + + + + Gets or sets the log severity. Default is . + + + Required. + + + + + Gets the concurrency token used for optimistic concurrency control. + + + + + Updates the concurrency token before saving changes. + + + + + Represents the relational information for an . + + + + + Gets or Sets the AncestorId. + + + + + Gets or Sets the related BaseItem. + + + + + Gets or Sets the ParentItem. + + + + + Gets or Sets the Child item. + + + + + Provides information about an Attachment to an . + + + + + Gets or Sets the reference. + + + + + Gets or Sets the reference. + + + + + Gets or Sets the index within the source file. + + + + + Gets or Sets the codec of the attachment. + + + + + Gets or Sets the codec tag of the attachment. + + + + + Gets or Sets the comment of the attachment. + + + + + Gets or Sets the filename of the attachment. + + + + + Gets or Sets the attachments mimetype. + + + + + Enum TrailerTypes. + + + + + Gets or Sets. + + + + + Gets or Sets the path to the original image. + + + + + Gets or Sets the time the image was last modified. + + + + + Gets or Sets the imagetype. + + + + + Gets or Sets the width of the original image. + + + + + Gets or Sets the height of the original image. + + + + + Gets or Sets the blurhash. + + + + + Gets or Sets the reference id to the BaseItem. + + + + + Gets or Sets the referenced Item. + + + + + Enum MetadataFields. + + + + + Gets or Sets Numerical ID of this enumerable. + + + + + Gets or Sets all referenced . + + + + + Gets or Sets all referenced . + + + + + Represents a Key-Value relation of an BaseItem's provider. + + + + + Gets or Sets the reference ItemId. + + + + + Gets or Sets the reference BaseItem. + + + + + Gets or Sets the ProvidersId. + + + + + Gets or Sets the Providers Value. + + + + + Enum TrailerTypes. + + + + + Gets or Sets Numerical ID of this enumerable. + + + + + Gets or Sets all referenced . + + + + + Gets or Sets all referenced . + + + + + The Chapter entity. + + + + + Gets or Sets the reference id. + + + + + Gets or Sets the reference. + + + + + Gets or Sets the chapters index in Item. + + + + + Gets or Sets the position within the source file. + + + + + Gets or Sets the common name. + + + + + Gets or Sets the image path. + + + + + Gets or Sets the time the image was last modified. + + + + + An entity that represents a user's custom display preferences for a specific item. + + + + + Initializes a new instance of the class. + + The user id. + The item id. + The client. + The preference key. + The preference value. + + + + Gets the Id. + + + Required. + + + + + Gets or sets the user Id. + + + Required. + + + + + Gets or sets the id of the associated item. + + + Required. + + + + + Gets or sets the client string. + + + Required. Max Length = 32. + + + + + Gets or sets the preference key. + + + Required. + + + + + Gets or sets the preference value. + + + Required. + + + + + An entity representing a user's display preferences. + + + + + Initializes a new instance of the class. + + The user's id. + The item id. + The client string. + + + + Gets the Id. + + + Required. + + + + + Gets or sets the user Id. + + + Required. + + + + + Gets or sets the id of the associated item. + + + Required. + + + + + Gets or sets the client string. + + + Required. Max Length = 32. + + + + + Gets or sets a value indicating whether to show the sidebar. + + + Required. + + + + + Gets or sets a value indicating whether to show the backdrop. + + + Required. + + + + + Gets or sets the scroll direction. + + + Required. + + + + + Gets or sets what the view should be indexed by. + + + + + Gets or sets the length of time to skip forwards, in milliseconds. + + + Required. + + + + + Gets or sets the length of time to skip backwards, in milliseconds. + + + Required. + + + + + Gets or sets the Chromecast Version. + + + Required. + + + + + Gets or sets a value indicating whether the next video info overlay should be shown. + + + Required. + + + + + Gets or sets the dashboard theme. + + + + + Gets or sets the tv home screen. + + + + + Gets the home sections. + + + + + An entity representing a group. + + + + + Initializes a new instance of the class. + + The name of the group. + + + + Gets the id of this group. + + + Identity, Indexed, Required. + + + + + Gets or sets the group's name. + + + Required, Max length = 255. + + + + + + + + Gets a collection containing the group's permissions. + + + + + Gets a collection containing the group's preferences. + + + + + + + + An entity representing a section on the user's home page. + + + + + Gets the id. + + + Identity. Required. + + + + + Gets or sets the Id of the associated display preferences. + + + Required. + + + + + Gets or sets the order. + + + Required. + + + + + Gets or sets the type. + + + Required. + + + + + An entity representing an image. + + + + + Initializes a new instance of the class. + + The path. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets the user id. + + + + + Gets or sets the path of the image. + + + Required. + + + + + Gets or sets the date last modified. + + + Required. + + + + + Enum ImageType. + + + + + The primary. + + + + + The art. + + + + + The backdrop. + + + + + The banner. + + + + + The logo. + + + + + The thumb. + + + + + The disc. + + + + + The box. + + + + + The screenshot. + + + This enum value is obsolete. + XmlSerializer does not serialize/deserialize objects that are marked as [Obsolete]. + + + + + The menu. + + + + + The chapter image. + + + + + The box rear. + + + + + The user profile image. + + + + + An entity that represents a user's display preferences for a specific item. + + + + + Initializes a new instance of the class. + + The user id. + The item id. + The client. + + + + Gets the id. + + + Required. + + + + + Gets or sets the user Id. + + + Required. + + + + + Gets or sets the id of the associated item. + + + Required. + + + + + Gets or sets the client string. + + + Required. Max Length = 32. + + + + + Gets or sets the view type. + + + Required. + + + + + Gets or sets a value indicating whether the indexing should be remembered. + + + Required. + + + + + Gets or sets what the view should be indexed by. + + + + + Gets or sets a value indicating whether the sorting type should be remembered. + + + Required. + + + + + Gets or sets what the view should be sorted by. + + + Required. + + + + + Gets or sets the sort order. + + + Required. + + + + + Represents an ItemValue for a BaseItem. + + + + + Gets or Sets the ItemValueId. + + + + + Gets or Sets the Type. + + + + + Gets or Sets the Value. + + + + + Gets or Sets the sanitized Value. + + + + + Gets or Sets all associated BaseItems. + + + + + Mapping table for the ItemValue BaseItem relation. + + + + + Gets or Sets the ItemId. + + + + + Gets or Sets the ItemValueId. + + + + + Gets or Sets the referenced . + + + + + Gets or Sets the referenced . + + + + + Provides the Value types for an . + + + + + Artists. + + + + + Album. + + + + + Genre. + + + + + Studios. + + + + + Tags. + + + + + InheritedTags. + + + + + Keyframe information for a specific file. + + + + + Gets or Sets the ItemId. + + + + + Gets or sets the total duration of the stream in ticks. + + + + + Gets or sets the keyframes in ticks. + + + + + Gets or sets the item reference. + + + + + An entity representing artwork. + + + + + Initializes a new instance of the class. + + The path. + The kind of art. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the path. + + + Required, Max length = 65535. + + + + + Gets or sets the kind of artwork. + + + Required. + + + + + + + + + + + An entity representing a book. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets a collection containing the metadata for this book. + + + + + + + + An entity containing metadata for a book. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets or sets the ISBN. + + + + + Gets a collection of the publishers for this book. + + + + + + + + An entity representing a chapter. + + + + + Initializes a new instance of the class. + + ISO-639-3 3-character language codes. + The start time for this chapter. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Max length = 1024. + + + + + Gets or sets the language. + + + Required, Min length = 3, Max length = 3 + ISO-639-3 3-character language codes. + + + + + Gets or sets the start time. + + + Required. + + + + + Gets or sets the end time. + + + + + + + + + + + An entity representing a collection. + + + + + Initializes a new instance of the class. + + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Max length = 1024. + + + + + + + + Gets a collection containing this collection's items. + + + + + + + + An entity representing a collection item. + + + + + Initializes a new instance of the class. + + The library item. + + + + Gets or sets the id. + + + Identity, Indexed, Required. + + + + + + + + Gets or sets the library item. + + + Required. + + + + + Gets or sets the next item in the collection. + + + TODO check if this properly updated Dependent and has the proper principal relationship. + + + + + Gets or sets the previous item in the collection. + + + TODO check if this properly updated Dependent and has the proper principal relationship. + + + + + + + + An entity representing a company. + + + + + Initializes a new instance of the class. + + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + + + + Gets a collection containing the metadata. + + + + + Gets a collection containing this company's child companies. + + + + + + + + + + + An entity holding metadata for a . + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets or sets the description. + + + Max length = 65535. + + + + + Gets or sets the headquarters. + + + Max length = 255. + + + + + Gets or sets the country code. + + + Max length = 2. + + + + + Gets or sets the homepage. + + + Max length = 1024. + + + + + An entity representing a custom item. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets a collection containing the metadata for this item. + + + + + + + + An entity containing metadata for a custom item. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + An entity representing an episode. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets or sets the episode number. + + + + + + + + Gets a collection containing the metadata for this episode. + + + + + An entity containing metadata for an . + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets or sets the outline. + + + Max length = 1024. + + + + + Gets or sets the plot. + + + Max length = 65535. + + + + + Gets or sets the tagline. + + + Max length = 1024. + + + + + An entity representing a genre. + + + + + Initializes a new instance of the class. + + The name. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Indexed, Required, Max length = 255. + + + + + + + + + + + An abstract class that holds metadata. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the title. + + + Required, Max length = 1024. + + + + + Gets or sets the original title. + + + Max length = 1024. + + + + + Gets or sets the sort title. + + + Max length = 1024. + + + + + Gets or sets the language. + + + Required, Min length = 3, Max length = 3. + ISO-639-3 3-character language codes. + + + + + Gets or sets the release date. + + + + + Gets the date added. + + + Required. + + + + + Gets or sets the date modified. + + + Required. + + + + + + + + Gets a collection containing the person roles for this item. + + + + + Gets a collection containing the genres for this item. + + + + + + + + Gets a collection containing the ratings for this item. + + + + + Gets a collection containing the metadata sources for this item. + + + + + + + + An entity representing a library. + + + + + Initializes a new instance of the class. + + The name of the library. + The path of the library. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Required, Max length = 128. + + + + + Gets or sets the root path of the library. + + + Required. + + + + + + + + + + + An entity representing a library item. + + + + + Initializes a new instance of the class. + + The library of this item. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets the date this library item was added. + + + + + + + + Gets or sets the library of this item. + + + Required. + + + + + + + + An entity representing a file on disk. + + + + + Initializes a new instance of the class. + + The path relative to the LibraryRoot. + The file kind. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the path relative to the library root. + + + Required, Max length = 65535. + + + + + Gets or sets the kind of media file. + + + Required. + + + + + + + + Gets a collection containing the streams in this file. + + + + + + + + An entity representing a stream in a media file. + + + + + Initializes a new instance of the class. + + The number of this stream. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the stream number. + + + Required. + + + + + + + + + + + An entity representing a metadata provider. + + + + + Initializes a new instance of the class. + + The name of the metadata provider. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Required, Max length = 1024. + + + + + + + + + + + An entity representing a unique identifier for a metadata provider. + + + + + Initializes a new instance of the class. + + The provider id. + The metadata provider. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the provider id. + + + Required, Max length = 255. + + + + + + + + Gets or sets the metadata provider. + + + Required. + + + + + + + + An entity representing a movie. + + + + + Initializes a new instance of the class. + + The library. + + + + + + + Gets a collection containing the metadata for this movie. + + + + + An entity holding the metadata for a movie. + + + + + Initializes a new instance of the class. + + The title or name of the movie. + ISO-639-3 3-character language codes. + + + + Gets or sets the outline. + + + Max length = 1024. + + + + + Gets or sets the tagline. + + + Max length = 1024. + + + + + Gets or sets the plot. + + + Max length = 65535. + + + + + Gets or sets the country code. + + + Max length = 2. + + + + + Gets the studios that produced this movie. + + + + + + + + An entity representing a music album. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets a collection containing the album metadata. + + + + + Gets a collection containing the tracks. + + + + + An entity holding the metadata for a music album. + + + + + Initializes a new instance of the class. + + The title or name of the album. + ISO-639-3 3-character language codes. + + + + Gets or sets the barcode. + + + Max length = 255. + + + + + Gets or sets the label number. + + + Max length = 255. + + + + + Gets or sets the country code. + + + Max length = 2. + + + + + Gets a collection containing the labels. + + + + + An entity representing a person. + + + + + Initializes a new instance of the class. + + The name of the person. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Required, Max length = 1024. + + + + + Gets or sets the source id. + + + Max length = 255. + + + + + Gets the date added. + + + Required. + + + + + Gets or sets the date modified. + + + Required. + + + + + + + + Gets a list of metadata sources for this person. + + + + + + + + An entity representing a person's role in media. + + + + + Initializes a new instance of the class. + + The role type. + The person. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name of the person's role. + + + Max length = 1024. + + + + + Gets or sets the person's role type. + + + Required. + + + + + + + + Gets or sets the person. + + + Required. + + + + + + + + Gets a collection containing the metadata sources for this person role. + + + + + + + + An entity representing a photo. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets a collection containing the photo metadata. + + + + + + + + An entity that holds metadata for a photo. + + + + + Initializes a new instance of the class. + + The title or name of the photo. + ISO-639-3 3-character language codes. + + + + An entity representing a rating for an entity. + + + + + Initializes a new instance of the class. + + The value. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the value. + + + Required. + + + + + Gets or sets the number of votes. + + + + + + + + Gets or sets the rating type. + If this is null it's the internal user rating. + + + + + + + + This is the entity to store review ratings, not age ratings. + + + + + Initializes a new instance of the class. + + The minimum value. + The maximum value. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Max length = 1024. + + + + + Gets or sets the minimum value. + + + Required. + + + + + Gets or sets the maximum value. + + + Required. + + + + + + + + Gets or sets the metadata source. + + + + + + + + An entity representing a release for a library item, eg. Director's cut vs. standard. + + + + + Initializes a new instance of the class. + + The name of this release. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the name. + + + Required, Max length = 1024. + + + + + + + + Gets a collection containing the media files for this release. + + + + + Gets a collection containing the chapters for this release. + + + + + + + + An entity representing a season. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets or sets the season number. + + + + + Gets the season metadata. + + + + + Gets a collection containing the number of episodes. + + + + + An entity that holds metadata for seasons. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets or sets the outline. + + + Max length = 1024. + + + + + An entity representing a series. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets or sets the days of week. + + + + + Gets or sets the time the show airs, ignore the date portion. + + + + + Gets or sets the date the series first aired. + + + + + Gets a collection containing the series metadata. + + + + + Gets a collection containing the seasons. + + + + + An entity representing series metadata. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + Gets or sets the outline. + + + Max length = 1024. + + + + + Gets or sets the plot. + + + Max length = 65535. + + + + + Gets or sets the tagline. + + + Max length = 1024. + + + + + Gets or sets the country code. + + + Max length = 2. + + + + + Gets a collection containing the networks. + + + + + + + + An entity representing a track. + + + + + Initializes a new instance of the class. + + The library. + + + + Gets or sets the track number. + + + + + + + + Gets a collection containing the track metadata. + + + + + An entity holding metadata for a track. + + + + + Initializes a new instance of the class. + + The title or name of the object. + ISO-639-3 3-character language codes. + + + + An entity representing the metadata for a group of trickplay tiles. + + + + + Gets or sets the id of the media segment. + + + + + Gets or sets the id of the associated item. + + + + + Gets or sets the Type of content this segment defines. + + + + + Gets or sets the end of the segment. + + + + + Gets or sets the start of the segment. + + + + + Gets or sets Id of the media segment provider this entry originates from. + + + + + Enum MediaStreamType. + + + + + The audio. + + + + + The video. + + + + + The subtitle. + + + + + The embedded image. + + + + + The data. + + + + + The lyric. + + + + + People entity. + + + + + Gets or Sets the PeopleId. + + + + + Gets or Sets the Persons Name. + + + + + Gets or Sets the Type. + + + + + Gets or Sets the mapping of People to BaseItems. + + + + + Mapping table for People to BaseItems. + + + + + Gets or Sets the SortOrder. + + + + + Gets or Sets the ListOrder. + + + + + Gets or Sets the Role name the associated actor played in the . + + + + + Gets or Sets The ItemId. + + + + + Gets or Sets Reference Item. + + + + + Gets or Sets The PeopleId. + + + + + Gets or Sets Reference People. + + + + + An entity representing whether the associated user has a specific permission. + + + + + Initializes a new instance of the class. + Public constructor with required data. + + The permission kind. + The value of this permission. + + + + Gets the id of this permission. + + + Identity, Indexed, Required. + + + + + Gets or sets the id of the associated user. + + + + + Gets the type of this permission. + + + Required. + + + + + Gets or sets a value indicating whether the associated user has this permission. + + + Required. + + + + + + + + + + + An entity representing a preference attached to a user or group. + + + + + Initializes a new instance of the class. + Public constructor with required data. + + The preference kind. + The value. + + + + Gets the id of this preference. + + + Identity, Indexed, Required. + + + + + Gets or sets the id of the associated user. + + + + + Gets the type of this preference. + + + Required. + + + + + Gets or sets the value of this preference. + + + Required, Max length = 65535. + + + + + + + + + + + Lists types of Audio. + + + + + Mono. + + + + + Stereo. + + + + + Dolby. + + + + + DolbyDigital. + + + + + Thx. + + + + + Atmos. + + + + + An entity representing an API key. + + + + + Initializes a new instance of the class. + + The name. + + + + Gets the id. + + + Identity, Indexed, Required. + + + + + Gets or sets the date created. + + + + + Gets or sets the date of last activity. + + + + + Gets or sets the name. + + + + + Gets or sets the access token. + + + + + An entity representing a device. + + + + + Initializes a new instance of the class. + + The user id. + The app name. + The app version. + The device name. + The device id. + + + + Gets the id. + + + + + Gets the user id. + + + + + Gets or sets the access token. + + + + + Gets or sets the app name. + + + + + Gets or sets the app version. + + + + + Gets or sets the device name. + + + + + Gets or sets the device id. + + + + + Gets or sets a value indicating whether this device is active. + + + + + Gets or sets the date created. + + + + + Gets or sets the date modified. + + + + + Gets or sets the date of last activity. + + + + + Gets the user. + + + + + An entity representing custom options for a device. + + + + + Initializes a new instance of the class. + + The device id. + + + + Gets the id. + + + + + Gets the device id. + + + + + Gets or sets the custom name. + + + + + An entity representing the metadata for a group of trickplay tiles. + + + + + Gets or sets the id of the associated item. + + + Required. + + + + + Gets or sets width of an individual thumbnail. + + + Required. + + + + + Gets or sets height of an individual thumbnail. + + + Required. + + + + + Gets or sets amount of thumbnails per row. + + + Required. + + + + + Gets or sets amount of thumbnails per column. + + + Required. + + + + + Gets or sets total amount of non-black thumbnails. + + + Required. + + + + + Gets or sets interval in milliseconds between each trickplay thumbnail. + + + Required. + + + + + Gets or sets peak bandwidth usage in bits per second. + + + Required. + + + + + An entity representing a user. + + + + + Initializes a new instance of the class. + Public constructor with required data. + + The username for the new user. + The Id of the user's authentication provider. + The Id of the user's password reset provider. + + + + Gets or sets the Id of the user. + + + Identity, Indexed, Required. + + + + + Gets or sets the user's name. + + + Required, Max length = 255. + + + + + Gets or sets the user's password, or null if none is set. + + + Max length = 65535. + + + + + Gets or sets a value indicating whether the user must update their password. + + + Required. + + + + + Gets or sets the audio language preference. + + + Max length = 255. + + + + + Gets or sets the authentication provider id. + + + Required, Max length = 255. + + + + + Gets or sets the password reset provider id. + + + Required, Max length = 255. + + + + + Gets or sets the invalid login attempt count. + + + Required. + + + + + Gets or sets the last activity date. + + + + + Gets or sets the last login date. + + + + + Gets or sets the number of login attempts the user can make before they are locked out. + + + + + Gets or sets the maximum number of active sessions the user can have at once. + + + + + Gets or sets the subtitle mode. + + + Required. + + + + + Gets or sets a value indicating whether the default audio track should be played. + + + Required. + + + + + Gets or sets the subtitle language preference. + + + Max length = 255. + + + + + Gets or sets a value indicating whether missing episodes should be displayed. + + + Required. + + + + + Gets or sets a value indicating whether to display the collections view. + + + Required. + + + + + Gets or sets a value indicating whether the user has a local password. + + + Required. + + + + + Gets or sets a value indicating whether the server should hide played content in "Latest". + + + Required. + + + + + Gets or sets a value indicating whether to remember audio selections on played content. + + + Required. + + + + + Gets or sets a value indicating whether to remember subtitle selections on played content. + + + Required. + + + + + Gets or sets a value indicating whether to enable auto-play for the next episode. + + + Required. + + + + + Gets or sets a value indicating whether the user should auto-login. + + + Required. + + + + + Gets or sets a value indicating whether the user can change their preferences. + + + Required. + + + + + Gets or sets the maximum parental rating score. + + + + + Gets or sets the maximum parental rating sub score. + + + + + Gets or sets the remote client bitrate limit. + + + + + Gets or sets the internal id. + This is a temporary stopgap for until the library db is migrated. + This corresponds to the value of the index of this user in the library db. + + + + + Gets or sets the user's profile image. Can be null. + + + + + Gets the user's display preferences. + + + + + Gets or sets the level of sync play permissions this user has. + + + + + Gets or sets the cast receiver id. + + + + + + + + Gets the list of access schedules this user has. + + + + + Gets the list of item display preferences. + + + + + Gets the list of permissions this user has. + + + + + Gets the list of preferences this user has. + + + + + + + + Provides and related data. + + + + + Gets or sets the custom data key. + + The rating. + + + + Gets or sets the users 0-10 rating. + + The rating. + + + + Gets or sets the playback position ticks. + + The playback position ticks. + + + + Gets or sets the play count. + + The play count. + + + + Gets or sets a value indicating whether this instance is favorite. + + true if this instance is favorite; otherwise, false. + + + + Gets or sets the last played date. + + The last played date. + + + + Gets or sets a value indicating whether this is played. + + true if played; otherwise, false. + + + + Gets or sets the index of the audio stream. + + The index of the audio stream. + + + + Gets or sets the index of the subtitle stream. + + The index of the subtitle stream. + + + + Gets or sets a value indicating whether the item is liked or not. + This should never be serialized. + + null if [likes] contains no value, true if [likes]; otherwise, false. + + + + Gets or Sets the date the referenced has been deleted. + + + + + Gets or sets the key. + + The key. + + + + Gets or Sets the BaseItem. + + + + + Gets or Sets the UserId. + + + + + Gets or Sets the User. + + + + + An enum representing types of art. + + + + + Another type of art, not covered by the other members. + + + + + A poster. + + + + + A banner. + + + + + A thumbnail. + + + + + A logo. + + + + + An enum representing the version of Chromecast to be used by clients. + + + + + Stable Chromecast version. + + + + + Unstable Chromecast version. + + + + + An enum that represents a day of the week, weekdays, weekends, or all days. + + + + + Sunday. + + + + + Monday. + + + + + Tuesday. + + + + + Wednesday. + + + + + Thursday. + + + + + Friday. + + + + + Saturday. + + + + + All days of the week. + + + + + A week day, or Monday-Friday. + + + + + Saturday and Sunday. + + + + + An enum representing the different options for the home screen sections. + + + + + None. + + + + + My Media. + + + + + My Media Small. + + + + + Active Recordings. + + + + + Continue Watching. + + + + + Continue Listening. + + + + + Latest Media. + + + + + Next Up. + + + + + Live TV. + + + + + Continue Reading. + + + + + An enum representing a type of indexing in a user's display preferences. + + + + + Index by the premiere date. + + + + + Index by the production year. + + + + + Index by the community rating. + + + + + An enum representing the type of media file. + + + + + The main file. + + + + + A sidecar file. + + + + + An additional part to the main file. + + + + + An alternative format to the main file. + + + + + An additional stream for the main file. + + + + + Defines the types of content an individual represents. + + + + + Default media type or custom one. + + + + + Commercial. + + + + + Preview. + + + + + Recap. + + + + + Outro. + + + + + Intro. + + + + + The types of user permissions. + + + + + Whether the user is an administrator. + + + + + Whether the user is hidden. + + + + + Whether the user is disabled. + + + + + Whether the user can control shared devices. + + + + + Whether the user can access the server remotely. + + + + + Whether the user can manage live tv. + + + + + Whether the user can access live tv. + + + + + Whether the user can play media. + + + + + Whether the server should transcode audio for the user if requested. + + + + + Whether the server should transcode video for the user if requested. + + + + + Whether the user can delete content. + + + + + Whether the user can download content. + + + + + Whether to enable sync transcoding for the user. + + + + + Whether the user can do media conversion. + + + + + Whether the user has access to all devices. + + + + + Whether the user has access to all channels. + + + + + Whether the user has access to all folders. + + + + + Whether to enable public sharing for the user. + + + + + Whether the user can remotely control other users. + + + + + Whether the user is permitted to do playback remuxing. + + + + + Whether the server should force transcoding on remote connections for the user. + + + + + Whether the user can create, modify and delete collections. + + + + + Whether the user can edit subtitles. + + + + + Whether the user can edit lyrics. + + + + + An enum representing a person's role in a specific media item. + + + + + Another role, not covered by the other types. + + + + + The director of the media. + + + + + An artist. + + + + + The original artist. + + + + + An actor. + + + + + A voice actor. + + + + + A producer. + + + + + A remixer. + + + + + A conductor. + + + + + A composer. + + + + + An author. + + + + + An editor. + + + + + The types of user preferences. + + + + + A list of blocked tags. + + + + + A list of blocked channels. + + + + + A list of blocked media folders. + + + + + A list of enabled devices. + + + + + A list of enabled channels. + + + + + A list of enabled folders. + + + + + A list of folders to allow content deletion from. + + + + + A list of latest items to exclude. + + + + + A list of media to exclude. + + + + + A list of grouped folders. + + + + + A list of unrated items to block. + + + + + A list of ordered views. + + + + + A list of allowed tags. + + + + + An enum representing the axis that should be scrolled. + + + + + Horizontal scrolling direction. + + + + + Vertical scrolling direction. + + + + + An enum representing the sorting order. + + + + + Sort in increasing order. + + + + + Sort in decreasing order. + + + + + An enum representing a subtitle playback mode. + + + + + The default subtitle playback mode. + + + + + Always show subtitles. + + + + + Only show forced subtitles. + + + + + Don't show subtitles. + + + + + Only show subtitles when the current audio stream is in a different language. + + + + + Enum SyncPlayUserAccessType. + + + + + User can create groups and join them. + + + + + User can only join already existing groups. + + + + + SyncPlay is disabled for the user. + + + + + An enum representing the type of view for a library or collection. + + + + + Shows albums. + + + + + Shows album artists. + + + + + Shows artists. + + + + + Shows channels. + + + + + Shows collections. + + + + + Shows episodes. + + + + + Shows favorites. + + + + + Shows genres. + + + + + Shows guide. + + + + + Shows movies. + + + + + Shows networks. + + + + + Shows playlists. + + + + + Shows programs. + + + + + Shows recordings. + + + + + Shows schedule. + + + + + Shows series. + + + + + Shows shows. + + + + + Shows songs. + + + + + Shows songs. + + + + + Shows trailers. + + + + + Shows upcoming. + + + + + Defines the type and extension points for multi database support. + + + + + Gets or Sets the Database Factory when initialisaition is done. + + + + + Initialises jellyfins EFCore database access. + + The EFCore database options. + The Jellyfin database options. + + + + Will be invoked when EFCore wants to build its model. + + The ModelBuilder from EFCore. + + + + Will be invoked when EFCore wants to configure its model. + + The ModelConfigurationBuilder from EFCore. + + + + If supported this should run any periodic maintaince tasks. + + The token to abort the operation. + A representing the asynchronous operation. + + + + If supported this should perform any actions that are required on stopping the jellyfin server. + + The token that will be used to abort the operation. + A representing the asynchronous operation. + + + + Runs a full Database backup that can later be restored to. + + A cancellation token. + A key to identify the backup. + May throw an NotImplementException if this operation is not supported for this database. + + + + Restores a backup that has been previously created by . + + The key to the backup from which the current database should be restored from. + A cancellation token. + A representing the result of the asynchronous operation. + + + + Deletes a backup that has been previously created by . + + The key to the backup which should be cleaned up. + A representing the result of the asynchronous operation. + + + + Removes all contents from the database. + + The Database context. + The names of the tables to purge or null for all tables to be purged. + A Task. + + + + An interface abstracting an entity that has artwork. + + + + + Gets a collection containing this entity's artwork. + + + + + An abstraction representing an entity that has companies. + + + + + Gets a collection containing this entity's companies. + + + + + An interface abstracting an entity that has a concurrency token. + + + + + Gets the version of this row. Acts as a concurrency token. + + + + + Called when saving changes to this entity. + + + + + An abstraction representing an entity that has permissions. + + + + + Gets a collection containing this entity's permissions. + + + + + An abstraction representing an entity that has releases. + + + + + Gets a collection containing this entity's releases. + + + + + Defines the key of the database provider. + + + + + Initializes a new instance of the class. + + The key on which to identify the annotated provider. + + + + Gets the key on which to identify the annotated provider. + + + + + + Initializes a new instance of the class. + + The database context options. + Logger. + The provider for the database engine specific operations. + The locking behavior. + + + + + Initializes a new instance of the class. + + The database context options. + Logger. + The provider for the database engine specific operations. + The locking behavior. + + + + Gets the containing the access schedules. + + + + + Gets the containing the activity logs. + + + + + Gets the containing the API keys. + + + + + Gets the containing the devices. + + + + + Gets the containing the device options. + + + + + Gets the containing the display preferences. + + + + + Gets the containing the image infos. + + + + + Gets the containing the item display preferences. + + + + + Gets the containing the custom item display preferences. + + + + + Gets the containing the permissions. + + + + + Gets the containing the preferences. + + + + + Gets the containing the users. + + + + + Gets the containing the trickplay metadata. + + + + + Gets the containing the media segments. + + + + + Gets the containing the user data. + + + + + Gets the containing the user data. + + + + + Gets the containing the user data. + + + + + Gets the containing the user data. + + + + + Gets the containing the user data. + + + + + Gets the . + + + + + Gets the . + + + + + Gets the . + + + + + Gets the . + + + + + Gets the . + + + + + Gets the containing the referenced Providers with ids. + + + + + Gets the . + + + + + Gets the . + + + + + Gets the . + + + + + Gets the . + + + + + + + + + + + + + + + + + Contains a number of query related extensions. + + + + + Builds an optimised query checking one property against a list of values while maintaining an optimal query. + + The entity. + The property type to compare. + The source query. + The list of items to check. + Property expression. + A Query. + + + + Builds a query that checks referenced ItemValues for a cross BaseItem lookup. + + The source query. + The database context. + The type of item value to reference. + The list of BaseItem ids to check matches. + If set an exclusion check is performed instead. + A Query. + + + + Builds a query that checks referenced ItemValues for a cross BaseItem lookup. + + The source query. + The database context. + The type of item value to reference. + The list of BaseItem ids to check matches. + If set an exclusion check is performed instead. + A Query. + + + + Builds a query expression that checks referenced ItemValues for a cross BaseItem lookup. + + The database context. + The type of item value to reference. + The list of BaseItem ids to check matches. + If set an exclusion check is performed instead. + A Query. + + + + Builds an optimised query expression checking one property against a list of values while maintaining an optimal query. + + The entity. + The property type to compare. + The list of items to check. + Property expression. + A Query. + + + + Defines a jellyfin locking behavior that can be configured. + + + + + Provides access to the builder to setup any connection related locking behavior. + + The options builder. + + + + Will be invoked when changes should be saved in the current locking behavior. + + The database context invoking the action. + Callback for performing the actual save changes. + + + + Will be invoked when changes should be saved in the current locking behavior. + + The database context invoking the action. + Callback for performing the actual save changes. + A representing the asynchronous operation. + + + + Default lock behavior. Defines no explicit application locking behavior. + + + + + Initializes a new instance of the class. + + The Application logger. + + + + + + + + + + + + + Defines a locking mechanism that will retry any write operation for a few times. + + + + + Initializes a new instance of the class. + + The application logger. + + + + + + + + + + + + + A locking behavior that will always block any operation while a write is requested. Mimicks the old SqliteRepository behavior. + + + + + Initializes a new instance of the class. + + The application logger. + The logger factory. + + + + + + + + + + + + + Adds strict read/write locking. + + + + + FluentAPI configuration for the ActivityLog entity. + + + + + + + + AncestorId configuration. + + + + + + + + FluentAPI configuration for the ApiKey entity. + + + + + + + + FluentAPI configuration for the AttachmentStreamInfo entity. + + + + + + + + Configuration for BaseItem. + + + + + + + + Provides configuration for the BaseItemMetadataField entity. + + + + + + + + BaseItemProvider configuration. + + + + + + + + Provides configuration for the BaseItemMetadataField entity. + + + + + + + + Chapter configuration. + + + + + + + + FluentAPI configuration for the CustomItemDisplayPreferences entity. + + + + + + + + FluentAPI configuration for the Device entity. + + + + + + + + FluentAPI configuration for the DeviceOptions entity. + + + + + + + + FluentAPI configuration for the DisplayPreferencesConfiguration entity. + + + + + + + + itemvalues Configuration. + + + + + + + + itemvalues Configuration. + + + + + + + + KeyframeData Configuration. + + + + + + + + People configuration. + + + + + + + + People configuration. + + + + + + + + People configuration. + + + + + + + + FluentAPI configuration for the Permission entity. + + + + + + + + FluentAPI configuration for the Permission entity. + + + + + + + + FluentAPI configuration for the TrickplayInfo entity. + + + + + + + + FluentAPI configuration for the User entity. + + + + + + + + FluentAPI configuration for the UserData entity. + + + + + + + + Wrapper for progress reporting on Partition helpers. + + The entity to load. + + + + Contains helpers to partition EFCore queries. + + + + + Adds a callback to any directly following calls of Partition for every partition thats been invoked. + + The entity to load. + The source query. + The callback invoked for partition before enumerating items. + The callback invoked for partition after enumerating items. + A queryable that can be used to partition. + + + + Adds a callback to any directly following calls of Partition for every item thats been invoked. + + The entity to load. + The source query. + The callback invoked for each item before processing. + The callback invoked for each item after processing. + A queryable that can be used to partition. + + + + Adds a callback to any directly following calls of Partition for every partition thats been invoked. + + The entity to load. + The source query. + The callback invoked for partition before enumerating items. + The callback invoked for partition after enumerating items. + A queryable that can be used to partition. + + + + Adds a callback to any directly following calls of Partition for every item thats been invoked. + + The entity to load. + The source query. + The callback invoked for each item before processing. + The callback invoked for each item after processing. + A queryable that can be used to partition. + + + + Enumerates the source query by loading the entities in partitions in a lazy manner reading each item from the database as its requested. + + The entity to load. + The source query. + The number of elements to load per partition. + The cancellation token. + A enumerable representing the whole of the query. + + + + Enumerates the source query by loading the entities in partitions directly into memory. + + The entity to load. + The source query. + The number of elements to load per partition. + The cancellation token. + A enumerable representing the whole of the query. + + + + Enumerates the source query by loading the entities in partitions in a lazy manner reading each item from the database as its requested. + + The entity to load. + The source query. + The number of elements to load per partition. + Reporting helper. + The cancellation token. + A enumerable representing the whole of the query. + + + + Enumerates the source query by loading the entities in partitions directly into memory. + + The entity to load. + The source query. + The number of elements to load per partition. + Reporting helper. + The cancellation token. + A enumerable representing the whole of the query. + + + + Adds an Index to the enumeration of the async enumerable. + + The entity to load. + The source query. + The source list with an index added. + + + diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.A04746A0.Up2Date b/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.A04746A0.Up2Date new file mode 100644 index 00000000..e69de29b diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.Database.Implementations.csproj.AssemblyReference.cache b/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.Database.Implementations.csproj.AssemblyReference.cache index 274bd2facd90c21fa3c1ff1b1b28cc483e96696e..24bd2d8c8550dff3fe51c3a3393220d9624b8f8f 100644 GIT binary patch delta 440 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 literal 0 HcmV?d00001 diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.Database.Implementations.genruntimeconfig.cache b/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.Database.Implementations.genruntimeconfig.cache new file mode 100644 index 00000000..b686f755 --- /dev/null +++ b/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.Database.Implementations.genruntimeconfig.cache @@ -0,0 +1 @@ +184314b30a9f6de9baf09ac1bd3e621b33e3c0c90fb649f6103b4427a0bd2724 diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.Database.Implementations.pdb b/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/Jellyfin.Database.Implementations.pdb new file mode 100644 index 0000000000000000000000000000000000000000..2e758da734b1f53197a6079096995df6b7c550ca GIT binary patch literal 66792 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 - + + Gets the concurrency token used for optimistic concurrency control. + - + + Updates the concurrency token before saving changes. + diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/ref/Jellyfin.Database.Implementations.dll b/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/ref/Jellyfin.Database.Implementations.dll new file mode 100644 index 0000000000000000000000000000000000000000..fb0ed3e9d1efd62d3032d217ebfad0747628e7d8 GIT binary patch literal 86016 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 literal 0 HcmV?d00001 diff --git a/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/refint/Jellyfin.Database.Implementations.dll b/src/Jellyfin.Database/Jellyfin.Database.Implementations/obj/Debug/net10.0/refint/Jellyfin.Database.Implementations.dll new file mode 100644 index 0000000000000000000000000000000000000000..fb0ed3e9d1efd62d3032d217ebfad0747628e7d8 GIT binary patch literal 86016 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 literal 0 HcmV?d00001 diff --git a/src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/obj/Debug/net10.0/Jellyfin.Database.Providers.Sqlite.csproj.AssemblyReference.cache b/src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/obj/Debug/net10.0/Jellyfin.Database.Providers.Sqlite.csproj.AssemblyReference.cache index 8620831fbaf78533533564f2e4ff2d50ea3e68e4..ce83dffbb812e17f85c02433c8c8027d9f70cb45 100644 GIT binary patch delta 2147 zcmbuA&rcIU6vsRK&{`@Mj2cu7B$|McX$xr3glJQG5P=9qG^R$kbSN8lXP4QnVWY8k zZ*>z7dLkYTMxz`&7!O=L;E^L9{2xrX;hSOGF3T7o%we~k_I=*>{hImn^ux=>BdDX& zxX|==W$EkZ#V9JHrcfw^5Ne^swrqtK6jneDuqRun?Cm1)MqzlZJwLhit8ZhH?}%-H zogPvWX5j*{hL|0}y8_fEaw@?VZLX~h&c|?Ku6pQ3WiKaPoD#g_u2;S6)PN=PjWaRQH&5e+J zshER$CKEWZw+$|68se3E^XSgezsBz{6tLUx>6~yLbcG^d60N-JZg`C<-xD>Falfh5 zG7ci+LS)<%xwj1$>9yBGse?{`8m@HB5N1Jl3_}W%{W#$+^;~pcpzu8u1Jw{9_XQa2@YnerxP%hWPV@9#4 z(jrdfEt@IZ9lkGd+`pJdnXgXC*rW|QTVf1aXJ7m(epm32%rk&5^RXOL=>pCynv7T? zoI{hF@4}!vA}*f0;PU1AEdNdX@#p)k)y>UIYhr^x-0}9|1DB`WOBtUuIBs;^pofVD z{6nH*9&~!15v2fiJ`7S2dFpxQALtsM0w!VinQ9Xj1lQu1_NT0<-5wcYHw_AHG7cxX zhEtRp-eD8;!E-H^uPppKuSz*2^HEK*?>IjQRLX4ebn{-U!|L(>SE7`5%16VKCBhtW z)9|xTwj_~nV`J-)`gsAJaM_(~zu=m&sJnWittL)pE}Q4-HJBwZ!m91yG;>VbC^E&I ucj`e06w2tLDz|os<5p--Nx1MuwMq*I`7Ux4O!Dc?D>%kUrm6_-n=ouRr8(K0l^62@=yM_d#hx&gg SU}Rv7m|S42uz4%vDQf^mWlrn> delta 30 mcmeCG`(HJogyn8gZSBSi9>&QE90H6HlMOi(Hajq%vIYRg!wVDu diff --git a/src/Jellyfin.Drawing.Skia/obj/Debug/net10.0/Jellyfin.Drawing.Skia.csproj.CoreCompileInputs.cache b/src/Jellyfin.Drawing.Skia/obj/Debug/net10.0/Jellyfin.Drawing.Skia.csproj.CoreCompileInputs.cache index a55f55f6..cdb845fb 100644 --- a/src/Jellyfin.Drawing.Skia/obj/Debug/net10.0/Jellyfin.Drawing.Skia.csproj.CoreCompileInputs.cache +++ b/src/Jellyfin.Drawing.Skia/obj/Debug/net10.0/Jellyfin.Drawing.Skia.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -d6194d82cab744f13707bbebfdbb389ed952d7cdf103d316d3a81e8495b02dd4 +b1f9a291ebee870208e156d5fe6f9c695288adb76b9ca437af2b5d08a44060b2 diff --git a/src/Jellyfin.Drawing.Skia/obj/Debug/net10.0/Jellyfin.Drawing.Skia.csproj.FileListAbsolute.txt b/src/Jellyfin.Drawing.Skia/obj/Debug/net10.0/Jellyfin.Drawing.Skia.csproj.FileListAbsolute.txt index 64eb2003..4a743348 100644 --- a/src/Jellyfin.Drawing.Skia/obj/Debug/net10.0/Jellyfin.Drawing.Skia.csproj.FileListAbsolute.txt +++ b/src/Jellyfin.Drawing.Skia/obj/Debug/net10.0/Jellyfin.Drawing.Skia.csproj.FileListAbsolute.txt @@ -1,3 +1,6 @@ C:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing.Skia\obj\Debug\net10.0\Jellyfin.Drawing.Skia.csproj.AssemblyReference.cache C:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing.Skia\obj\Debug\net10.0\Jellyfin.Drawing.Skia.GeneratedMSBuildEditorConfig.editorconfig C:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing.Skia\obj\Debug\net10.0\Jellyfin.Drawing.Skia.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing.Skia\obj\Debug\net10.0\Jellyfin.Drawing.Skia.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing.Skia\obj\Debug\net10.0\Jellyfin.Drawing.Skia.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing.Skia\obj\Debug\net10.0\Jellyfin.Drawing.Skia.csproj.CoreCompileInputs.cache diff --git a/src/Jellyfin.Drawing/obj/Debug/net10.0/Jellyfin.Drawing.csproj.AssemblyReference.cache b/src/Jellyfin.Drawing/obj/Debug/net10.0/Jellyfin.Drawing.csproj.AssemblyReference.cache index bbbecec795271b16aad5d727c7703d543e169759..dcc71631903f9c773f17db386bb7ba42db015b44 100644 GIT binary patch delta 440 zcmdlJc|2x93Cpal3%6{n;9;z1WMN=nU}R+E&Py#RE=kNwNi0fXWCDs|1B~@hQARM$ z$N{9zR15zX?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19evnO&w3CrE0+S-j3JdBegH3S%gCOc{=Y<6H~*9HK?nhJdY diff --git a/src/Jellyfin.Drawing/obj/Debug/net10.0/Jellyfin.Drawing.csproj.CoreCompileInputs.cache b/src/Jellyfin.Drawing/obj/Debug/net10.0/Jellyfin.Drawing.csproj.CoreCompileInputs.cache index 8bea3cdb..cbf04366 100644 --- a/src/Jellyfin.Drawing/obj/Debug/net10.0/Jellyfin.Drawing.csproj.CoreCompileInputs.cache +++ b/src/Jellyfin.Drawing/obj/Debug/net10.0/Jellyfin.Drawing.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -1a9e59e53d994135e561a9f14e614412411f126b50903f01a679e6fb96a67982 +4d6090cf757a23e4d33ca7f8ca6a184bc15903ec8f26c4de568a3448d3a06b66 diff --git a/src/Jellyfin.Drawing/obj/Debug/net10.0/Jellyfin.Drawing.csproj.FileListAbsolute.txt b/src/Jellyfin.Drawing/obj/Debug/net10.0/Jellyfin.Drawing.csproj.FileListAbsolute.txt index a93104b7..c2178d91 100644 --- a/src/Jellyfin.Drawing/obj/Debug/net10.0/Jellyfin.Drawing.csproj.FileListAbsolute.txt +++ b/src/Jellyfin.Drawing/obj/Debug/net10.0/Jellyfin.Drawing.csproj.FileListAbsolute.txt @@ -1,3 +1,6 @@ C:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing\obj\Debug\net10.0\Jellyfin.Drawing.csproj.AssemblyReference.cache C:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing\obj\Debug\net10.0\Jellyfin.Drawing.GeneratedMSBuildEditorConfig.editorconfig C:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing\obj\Debug\net10.0\Jellyfin.Drawing.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing\obj\Debug\net10.0\Jellyfin.Drawing.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing\obj\Debug\net10.0\Jellyfin.Drawing.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\src\Jellyfin.Drawing\obj\Debug\net10.0\Jellyfin.Drawing.csproj.CoreCompileInputs.cache diff --git a/src/Jellyfin.Extensions/obj/Debug/net10.0/Jellyfin.Extensions.csproj.AssemblyReference.cache b/src/Jellyfin.Extensions/obj/Debug/net10.0/Jellyfin.Extensions.csproj.AssemblyReference.cache index 7212362c754daf74cb4fb95ea1764bb4228468ee..08d88e1958ed87818dbddd42f89449c40873b4ed 100644 GIT binary patch delta 440 zcmZn+>It1t!ZK^?!Yvysco^#$Sr`}?7#SJ4^HNKSOA_-^5{pt8nSf&00AoE=lo3ob zasa6_)x!VJ>fQ|miGYQHhKc!RCKu%w=ckqEIp?ROI_4$jR2F9zGqQrUArnvou^DW* z-y&?SnV%`L!7{;>#U-h^KvQ#aQj<$E^Ye=JJacnPOA?cEQW-gsO-5p4Gkt@7e7)dR zu6iqE<7KhCThBQ-BeAFei}N9tU^5@n^X?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19X?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19--Nx1MuwMq*I`7Ux4O!Dc?D>%kUrm6_-n=ouRr8(K0l^62@=yM_d#hx&gg SU}Rtnp8S?cVe?kTo5BE)1x^_N delta 30 mcmbQK*QY(9gyn8gZSBSi9>&S(ECP(dlPB^iY<6J2DGUIyU<#f9 diff --git a/src/Jellyfin.MediaEncoding.Keyframes/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.csproj.CoreCompileInputs.cache b/src/Jellyfin.MediaEncoding.Keyframes/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.csproj.CoreCompileInputs.cache index bfe79b2b..f8cda692 100644 --- a/src/Jellyfin.MediaEncoding.Keyframes/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.csproj.CoreCompileInputs.cache +++ b/src/Jellyfin.MediaEncoding.Keyframes/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -9a3c1d504ac819d02e2909800fbf11603bf084aaa1a883be9600438e69e2d6f6 +ed07eb55b533b20f9694c089fe6addea82e8fa62291b81e7cf1462cb7138a351 diff --git a/src/Jellyfin.MediaEncoding.Keyframes/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.csproj.FileListAbsolute.txt b/src/Jellyfin.MediaEncoding.Keyframes/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.csproj.FileListAbsolute.txt index 4f46821e..0abbf1f3 100644 --- a/src/Jellyfin.MediaEncoding.Keyframes/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.csproj.FileListAbsolute.txt +++ b/src/Jellyfin.MediaEncoding.Keyframes/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.csproj.FileListAbsolute.txt @@ -4,3 +4,9 @@ C:\Projects\pgsql-jellyfin\src\Jellyfin.MediaEncoding.Keyframes\obj\Debug\net10. C:\Projects\pgsql-jellyfin\src\Jellyfin.MediaEncoding.Keyframes\obj\Debug\net10.0\Jellyfin.MediaEncoding.Keyframes.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\src\Jellyfin.MediaEncoding.Keyframes\obj\Debug\net10.0\Jellyfin.MediaEncoding.Keyframes.csproj.CoreCompileInputs.cache C:\Projects\pgsql-jellyfin\src\Jellyfin.MediaEncoding.Keyframes\obj\Debug\net10.0\Jellyfin.MediaEncoding.Keyframes.xml +E:\Projects\pgsql-jellyfin\src\Jellyfin.MediaEncoding.Keyframes\obj\Debug\net10.0\Jellyfin.MediaEncoding.Keyframes.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\src\Jellyfin.MediaEncoding.Keyframes\obj\Debug\net10.0\Jellyfin.MediaEncoding.Keyframes.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\src\Jellyfin.MediaEncoding.Keyframes\obj\Debug\net10.0\Jellyfin.MediaEncoding.Keyframes.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\src\Jellyfin.MediaEncoding.Keyframes\obj\Debug\net10.0\Jellyfin.MediaEncoding.Keyframes.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\src\Jellyfin.MediaEncoding.Keyframes\obj\Debug\net10.0\Jellyfin.MediaEncoding.Keyframes.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\src\Jellyfin.MediaEncoding.Keyframes\obj\Debug\net10.0\Jellyfin.MediaEncoding.Keyframes.xml diff --git a/src/Jellyfin.Networking/obj/Debug/net10.0/Jellyfin.Networking.csproj.AssemblyReference.cache b/src/Jellyfin.Networking/obj/Debug/net10.0/Jellyfin.Networking.csproj.AssemblyReference.cache index 0461ea49a0652b17bfe44c77f1b036d1a982f4ad..d6f262c93ebdc7ae2c7a246189751a03039b5828 100644 GIT binary patch delta 440 zcmZ1X?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19{Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rjYpBp5x^ U|3d*I17pzSMiGV0TN$Og0q&_z*#H0l delta 32 ocmcaLhw1!GrU@l1cZ+IkH&*a4PL>f8U<{hPky~N21G7{&0NH5^m;e9( diff --git a/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/Jellyfin.Api.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/Jellyfin.Api.Tests.csproj.CoreCompileInputs.cache index 6876ea14..ff73baf5 100644 --- a/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/Jellyfin.Api.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/Jellyfin.Api.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -bc1161b3fd36e959866452afb395f07304812b9f23b85aca4666b32669b38726 +532413f094791e64678c2982b578c5fd0b8247c11111d0eea589ec3011a4cc8c diff --git a/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/Jellyfin.Api.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/Jellyfin.Api.Tests.csproj.FileListAbsolute.txt index 66449372..e2a103f6 100644 --- a/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/Jellyfin.Api.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/Jellyfin.Api.Tests.csproj.FileListAbsolute.txt @@ -6,3 +6,11 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\obj\Debug\net10.0\Jellyfin.A C:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\obj\Debug\net10.0\Jellyfin.Api.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\obj\Debug\net10.0\Jellyfin.Api.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\obj\Debug\net10.0\Jellyfin.Api.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.Api.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.Api.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\obj\Debug\net10.0\Jellyfin.Api.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\obj\Debug\net10.0\MvcTestingAppManifest.json +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\obj\Debug\net10.0\Jellyfin.Api.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\obj\Debug\net10.0\Jellyfin.Api.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\obj\Debug\net10.0\Jellyfin.Api.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Api.Tests\obj\Debug\net10.0\Jellyfin.Api.Tests.csproj.CoreCompileInputs.cache diff --git a/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/MvcTestingAppManifest.json b/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/MvcTestingAppManifest.json index 591a58b5..e9639252 100644 --- a/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/MvcTestingAppManifest.json +++ b/tests/Jellyfin.Api.Tests/obj/Debug/net10.0/MvcTestingAppManifest.json @@ -1,16 +1,16 @@ { - "Emby.Naming": "C:\\Projects\\pgsql-jellyfin\\Emby.Naming", - "Jellyfin.Api": "C:\\Projects\\pgsql-jellyfin\\Jellyfin.Api", - "Jellyfin.Data": "C:\\Projects\\pgsql-jellyfin\\Jellyfin.Data", - "Jellyfin.Database.Implementations": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Implementations", - "Jellyfin.Database.Providers.Sqlite": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Providers.Sqlite", - "Jellyfin.Extensions": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Extensions", - "Jellyfin.MediaEncoding.Hls": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Hls", - "Jellyfin.MediaEncoding.Keyframes": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Keyframes", - "Jellyfin.Networking": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Networking", - "Jellyfin.Server.Implementations": "C:\\Projects\\pgsql-jellyfin\\Jellyfin.Server.Implementations", - "MediaBrowser.Common": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.Common", - "MediaBrowser.Controller": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.Controller", - "MediaBrowser.MediaEncoding": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.MediaEncoding", - "MediaBrowser.Model": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.Model" + "Emby.Naming": "E:\\Projects\\pgsql-jellyfin\\Emby.Naming", + "Jellyfin.Api": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Api", + "Jellyfin.Data": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Data", + "Jellyfin.Database.Implementations": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Implementations", + "Jellyfin.Database.Providers.Sqlite": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Providers.Sqlite", + "Jellyfin.Extensions": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Extensions", + "Jellyfin.MediaEncoding.Hls": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Hls", + "Jellyfin.MediaEncoding.Keyframes": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Keyframes", + "Jellyfin.Networking": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Networking", + "Jellyfin.Server.Implementations": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Server.Implementations", + "MediaBrowser.Common": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Common", + "MediaBrowser.Controller": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Controller", + "MediaBrowser.MediaEncoding": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.MediaEncoding", + "MediaBrowser.Model": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Model" } \ No newline at end of file diff --git a/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.AssemblyInfo.cs b/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.AssemblyInfo.cs index 97da5b88..9837ea61 100644 --- a/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.AssemblyInfo.cs +++ b/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.Common.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.Common.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.Common.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.AssemblyInfoInputs.cache b/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.AssemblyInfoInputs.cache index 89dd3f29..4a6b4153 100644 --- a/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.AssemblyInfoInputs.cache +++ b/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -8eeb39760a7c8296f85e40acdfef20114981c22cebc827acd9febb536e497b87 +442213f8c3d97cf9176f32dcccdc4bacd497966fdcced068ec5319cffcbba943 diff --git a/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.csproj.AssemblyReference.cache b/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.csproj.AssemblyReference.cache index 9e452e2d07e5302917eb864cddccf7f6338ec70a..1540310a17f117a6012de7481feedc1b7a224b12 100644 GIT binary patch delta 442 zcmex!i?RJ4>!G5I zV49HwNS&z`{(n~YZXiemEDSVE%r`T+D8D#Atwhf`KPA;MFEOXGIJ20M6|4=JfEtL+ zV8i_uVQbC&Opy(i39c+INzDbCnv;{7T#}ieSFGomn_F6vn3R*s$cbz+5*wT88|>rj z1+Q||TOk`Si{0IN&cPXpMFm)#53vNB`IxQ;Tf|jnqGzCIY+!6?$;il~=O^zP5{w?| V|Dk}9fiYn+a diff --git a/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.csproj.CoreCompileInputs.cache index f5bbed18..139644b5 100644 --- a/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -b89d907615bd52ebb6960663ebd5fa12717368a60f149e8f72182e8ea056a40c +4201bed4079c649e38d722cb4bf77bb14fa78309a0b6a11c3ac58c1c4b48125d diff --git a/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.csproj.FileListAbsolute.txt index 65845fe3..b58001b5 100644 --- a/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.Common.Tests/obj/Debug/net10.0/Jellyfin.Common.Tests.csproj.FileListAbsolute.txt @@ -5,3 +5,10 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\obj\Debug\net10.0\Jellyfi C:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\obj\Debug\net10.0\Jellyfin.Common.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\obj\Debug\net10.0\Jellyfin.Common.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\obj\Debug\net10.0\Jellyfin.Common.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.Common.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.Common.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\obj\Debug\net10.0\Jellyfin.Common.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\obj\Debug\net10.0\Jellyfin.Common.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\obj\Debug\net10.0\Jellyfin.Common.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\obj\Debug\net10.0\Jellyfin.Common.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Common.Tests\obj\Debug\net10.0\Jellyfin.Common.Tests.csproj.CoreCompileInputs.cache diff --git a/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.AssemblyInfo.cs b/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.AssemblyInfo.cs index 20dfffa4..4969d9a7 100644 --- a/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.AssemblyInfo.cs +++ b/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.Controller.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.Controller.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.Controller.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.AssemblyInfoInputs.cache b/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.AssemblyInfoInputs.cache index f2d800dc..33229dc6 100644 --- a/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.AssemblyInfoInputs.cache +++ b/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -66fa754a868f5558c846a76541e88cf44ac4f017845fd0236ee503bc7d68750b +119c147167464e03b2f7153dee81ccf7467be460ac0f51d70881504fb8c6e839 diff --git a/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.csproj.AssemblyReference.cache b/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.csproj.AssemblyReference.cache index 12283ce3be44ce00f2e08ab288c769933091840e..16e69a80df98f0471ea9c14e3c99baddd240fc28 100644 GIT binary patch delta 442 zcmcb&mht5V#t9`Xv$ihWvay1Pv7V8Ifq{XMk&!zuwWPQtF)t;tD20&;D25F%){Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rjYpBp5x^ U|3d*I17pPGLUV=9TNyP&0c0;v4*&oF delta 32 ocmaF4f$`p2#t9`XcZ+IkH&*a4PQK4Cz!))kp}4|k2WHJs0PETecK`qY diff --git a/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.csproj.CoreCompileInputs.cache index 1b82a51f..cf6b2aa7 100644 --- a/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -305c828be4d0280cab4def5be7a7126818504f605639548c595fef2e7de56306 +1199306fc86ea01f501b77b04bb8819d8c505350e8d7028ebe629aca58bd2918 diff --git a/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.csproj.FileListAbsolute.txt index e984099f..826804cf 100644 --- a/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.Controller.Tests/obj/Debug/net10.0/Jellyfin.Controller.Tests.csproj.FileListAbsolute.txt @@ -5,3 +5,10 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\obj\Debug\net10.0\Jel C:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\obj\Debug\net10.0\Jellyfin.Controller.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\obj\Debug\net10.0\Jellyfin.Controller.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\obj\Debug\net10.0\Jellyfin.Controller.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.Controller.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.Controller.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\obj\Debug\net10.0\Jellyfin.Controller.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\obj\Debug\net10.0\Jellyfin.Controller.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\obj\Debug\net10.0\Jellyfin.Controller.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\obj\Debug\net10.0\Jellyfin.Controller.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Controller.Tests\obj\Debug\net10.0\Jellyfin.Controller.Tests.csproj.CoreCompileInputs.cache diff --git a/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.AssemblyInfo.cs b/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.AssemblyInfo.cs index 770d2ade..f571da85 100644 --- a/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.AssemblyInfo.cs +++ b/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.Extensions.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.Extensions.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.Extensions.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.AssemblyInfoInputs.cache b/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.AssemblyInfoInputs.cache index a5f35ef2..7d60558a 100644 --- a/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.AssemblyInfoInputs.cache +++ b/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -ccdd902035be66ae33b5daa8b47287560d5d33c141133bcbf753b3fa96f0f897 +d8ee6b54a510f933427793369440ecc372fdf4facb3bcf1bac2d2a679eb52863 diff --git a/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.csproj.AssemblyReference.cache b/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.csproj.AssemblyReference.cache index cb9af1182f3b434e971aedda256ad6261d326ec9..712da4a28105a2c150eb52cb3a5a8b62139811f7 100644 GIT binary patch delta 442 zcmX@In(_QP#t9`Xv$ihWvay1Pv7V8Ifq{XMk&!zuwWPQtF)t;tD20&;D25F%){Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rjYpBp5x^ U|3d*I1EbeuK?#M;TN(L70RJvdF8}}l delta 30 mcmX@Vj`7H9#t9`XcZ+IkH&*a4PWE9Dm^{r(akB$6e+U4{DhpNs diff --git a/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.csproj.CoreCompileInputs.cache index 650f8f56..8befbaa6 100644 --- a/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -b73287c003fb4577c3e89a8437322cd71a69bf5a241b62a24861a47359185e3f +e21827996423cfc7ef8044cc1122cf41348e230dac0613d3dfcdf4c1b55ce528 diff --git a/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.csproj.FileListAbsolute.txt index 50375499..8606166d 100644 --- a/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.Extensions.Tests/obj/Debug/net10.0/Jellyfin.Extensions.Tests.csproj.FileListAbsolute.txt @@ -5,3 +5,10 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\obj\Debug\net10.0\Jel C:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\obj\Debug\net10.0\Jellyfin.Extensions.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\obj\Debug\net10.0\Jellyfin.Extensions.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\obj\Debug\net10.0\Jellyfin.Extensions.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.Extensions.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.Extensions.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\obj\Debug\net10.0\Jellyfin.Extensions.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\obj\Debug\net10.0\Jellyfin.Extensions.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\obj\Debug\net10.0\Jellyfin.Extensions.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\obj\Debug\net10.0\Jellyfin.Extensions.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Extensions.Tests\obj\Debug\net10.0\Jellyfin.Extensions.Tests.csproj.CoreCompileInputs.cache diff --git a/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.AssemblyInfo.cs b/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.AssemblyInfo.cs index a2ea1b59..73fa593a 100644 --- a/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.AssemblyInfo.cs +++ b/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.LiveTv.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.LiveTv.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.LiveTv.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.AssemblyInfoInputs.cache b/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.AssemblyInfoInputs.cache index b66aec3f..61e40be4 100644 --- a/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.AssemblyInfoInputs.cache +++ b/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -50d74808a53c0e9613b6485b0fc8e96dce47888405d3bbee8f1e26d8b1bb86c3 +a7e99fd460f02a16245a93ff0faed25e61cab5e9f2ea0402e42c3b9f9b837a70 diff --git a/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.csproj.AssemblyReference.cache b/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.csproj.AssemblyReference.cache index 87efe6599792ff1efa5c66c0a6b9967648d849e6..3aeb60239d909800cf49c60a18a7d71b9e9bc058 100644 GIT binary patch delta 442 zcmZ2;lyUnB#t9`Xv$ihWvay1Pv7V8Ifq{XMk&!zuwWPQtF)t;tD20&;D25F%){Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rjYpBp5x^ V|3d*I17px+LlcF~TN%G6000TwPip`G delta 32 ocmdmff^p4J#t9`XcZ+IkH&*a4PA-rXU<{hPQ9xm{1M~L;0O6txx&QzG diff --git a/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.csproj.CoreCompileInputs.cache index c6e34cbc..74171cf7 100644 --- a/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -96f3375b25e2d7c924c3b6310465e8eaf9a7324ec5b97d34b02f2dc8a958c9cd +d9704e968b50ef2258689fc014870610c3f5103729eb9cc5200bba3119b48617 diff --git a/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.csproj.FileListAbsolute.txt index 470d3280..de45d38b 100644 --- a/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.LiveTv.Tests/obj/Debug/net10.0/Jellyfin.LiveTv.Tests.csproj.FileListAbsolute.txt @@ -5,3 +5,10 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\obj\Debug\net10.0\Jellyfi C:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\obj\Debug\net10.0\Jellyfin.LiveTv.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\obj\Debug\net10.0\Jellyfin.LiveTv.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\obj\Debug\net10.0\Jellyfin.LiveTv.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.LiveTv.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.LiveTv.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\obj\Debug\net10.0\Jellyfin.LiveTv.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\obj\Debug\net10.0\Jellyfin.LiveTv.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\obj\Debug\net10.0\Jellyfin.LiveTv.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\obj\Debug\net10.0\Jellyfin.LiveTv.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.LiveTv.Tests\obj\Debug\net10.0\Jellyfin.LiveTv.Tests.csproj.CoreCompileInputs.cache diff --git a/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfo.cs b/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfo.cs index 9eaad09e..5bf572c0 100644 --- a/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfo.cs +++ b/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.MediaEncoding.Hls.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.MediaEncoding.Hls.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.MediaEncoding.Hls.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfoInputs.cache b/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfoInputs.cache index 17bdbe90..e5f1762b 100644 --- a/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfoInputs.cache +++ b/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -d96ba3937d7c4691244c2960d207d6795be561b06bdebd22889a006a94d082ff +cedcded6867a9f29bfd4a4b374c92a79a8b348dc5f887ebd669db4dba0fe740e diff --git a/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.csproj.AssemblyReference.cache b/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.csproj.AssemblyReference.cache index 5d5fa4a264eff821486b1b1d42ef8e2cfaee19f3..5bdeb4b0c3a889db353f554b83b84c298432e7f8 100644 GIT binary patch delta 442 zcmbQbjB&wA#t9`Xv$ihWvay1Pv7V8Ifq{XMk&!zuwWPQtF)t;tD20&;D25F%){Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rjYpBp5x^ V|3d*I17pPGk1PtCw=yOK0svFvPVWE! delta 32 ocmZ3ml5y%X#t9`XcZ+IkH&*a4PR?c%V2qf|Xs)o?fjJ=%0M1nl4FCWD diff --git a/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.csproj.CoreCompileInputs.cache index 3bf7dbef..844e56d1 100644 --- a/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -7062a22493a66b3fd64ecd658e219b5908ef6abb70d2b61136e18cf583c22764 +cf8dba1eb05b41148743ba19ba25491fd4e6b240876503d38fa7501e593be9ae diff --git a/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.csproj.FileListAbsolute.txt index 9d7a71d3..ad5f42a8 100644 --- a/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.MediaEncoding.Hls.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Hls.Tests.csproj.FileListAbsolute.txt @@ -5,3 +5,10 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\obj\Debug\net1 C:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Hls.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.MediaEncoding.Hls.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.MediaEncoding.Hls.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Hls.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Hls.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Hls.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Hls.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Hls.Tests.csproj.CoreCompileInputs.cache diff --git a/tests/Jellyfin.MediaEncoding.Keyframes.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.Tests.AssemblyInfo.cs b/tests/Jellyfin.MediaEncoding.Keyframes.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.Tests.AssemblyInfo.cs index 60efdac0..5cf726f8 100644 --- a/tests/Jellyfin.MediaEncoding.Keyframes.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.Tests.AssemblyInfo.cs +++ b/tests/Jellyfin.MediaEncoding.Keyframes.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.MediaEncoding.Keyframes.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.MediaEncoding.Keyframes.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.MediaEncoding.Keyframes.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/tests/Jellyfin.MediaEncoding.Keyframes.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.Tests.AssemblyInfoInputs.cache b/tests/Jellyfin.MediaEncoding.Keyframes.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.Tests.AssemblyInfoInputs.cache index 99b932cc..2c2dbce8 100644 --- a/tests/Jellyfin.MediaEncoding.Keyframes.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.Tests.AssemblyInfoInputs.cache +++ b/tests/Jellyfin.MediaEncoding.Keyframes.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -4f8faf7a49035fcd5fecaee92399a87d11b9f33ddfc05c41fe8f6c4e4b95445f +0533c6fcc1d872bc073c7598b502504afe0909b97f4a8f3f38d4a7cc7b142a56 diff --git a/tests/Jellyfin.MediaEncoding.Keyframes.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.Tests.csproj.AssemblyReference.cache b/tests/Jellyfin.MediaEncoding.Keyframes.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Keyframes.Tests.csproj.AssemblyReference.cache index 1b492019176b3e12b69b000dc865f5b7350f8d9a..454e45b46d38cc039b28a7f90a76d6d106dc5bb5 100644 GIT binary patch delta 440 zcmexT{l9KP3Cpal3%6{n;9;z1WMN=nU}R+E&Py#RE=kNwNi0fXWCDs|1B~@hQARM$ z$N{9zR15zX?_9Q(2r@%*YDXhD<;W#AdMJ zev7cRW`3r~2FnCj7MG;v0!_`yNlh-v%+D*<^UTdHElEtuNoC|jHW`VH&GZfS@%4gN zx$3QujhDslZawGVjKrb>EY62mg3WwP*MlwMDl^eD&@(nLHne19{Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rjYpBp5x^ V|3d*I17pzSMiGV0TN&qO0|3>tPr?8I delta 33 pcmcb6m+{gq#t9`XcZ+IkH&*a4PCl2%&%_usc_X*NW(VfE*#H6=4Uhl; diff --git a/tests/Jellyfin.MediaEncoding.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.MediaEncoding.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Tests.csproj.CoreCompileInputs.cache index ec6bba33..c4905ee8 100644 --- a/tests/Jellyfin.MediaEncoding.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.MediaEncoding.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -6efbbedc79b4f4eaf87e06e22208f64a8f0ebc16a2a787de65bd3e50801bfb15 +4f398f713701cb2543526361508dc0cc30b002240574f32fa1be204c785f9492 diff --git a/tests/Jellyfin.MediaEncoding.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.MediaEncoding.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Tests.csproj.FileListAbsolute.txt index c024b353..0463ff86 100644 --- a/tests/Jellyfin.MediaEncoding.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.MediaEncoding.Tests/obj/Debug/net10.0/Jellyfin.MediaEncoding.Tests.csproj.FileListAbsolute.txt @@ -5,3 +5,10 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\obj\Debug\net10.0\ C:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.MediaEncoding.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.MediaEncoding.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.MediaEncoding.Tests\obj\Debug\net10.0\Jellyfin.MediaEncoding.Tests.csproj.CoreCompileInputs.cache diff --git a/tests/Jellyfin.Model.Tests/obj/Debug/net10.0/Jellyfin.Model.Tests.AssemblyInfo.cs b/tests/Jellyfin.Model.Tests/obj/Debug/net10.0/Jellyfin.Model.Tests.AssemblyInfo.cs index 29903b9b..029c1d50 100644 --- a/tests/Jellyfin.Model.Tests/obj/Debug/net10.0/Jellyfin.Model.Tests.AssemblyInfo.cs +++ b/tests/Jellyfin.Model.Tests/obj/Debug/net10.0/Jellyfin.Model.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.Model.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.Model.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.Model.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/tests/Jellyfin.Model.Tests/obj/Debug/net10.0/Jellyfin.Model.Tests.AssemblyInfoInputs.cache b/tests/Jellyfin.Model.Tests/obj/Debug/net10.0/Jellyfin.Model.Tests.AssemblyInfoInputs.cache index b042150b..d239aa94 100644 --- a/tests/Jellyfin.Model.Tests/obj/Debug/net10.0/Jellyfin.Model.Tests.AssemblyInfoInputs.cache +++ b/tests/Jellyfin.Model.Tests/obj/Debug/net10.0/Jellyfin.Model.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -2d7127e57571e7386599f2b221ab1d5236d6af10c5ed46fee0fe9691f49c1c24 +a97a1d9884a4a0dbceea3a6f0a7689e6ec6a76fdcf6c754811a7953a387171b0 diff --git a/tests/Jellyfin.Model.Tests/obj/Debug/net10.0/Jellyfin.Model.Tests.csproj.AssemblyReference.cache b/tests/Jellyfin.Model.Tests/obj/Debug/net10.0/Jellyfin.Model.Tests.csproj.AssemblyReference.cache index 53b42708d96cb55468c8acfd8186fd8b5d5fd16f..c065652fadfa178a7ca1ec3b4b1cd27be4bda7cd 100644 GIT binary patch delta 442 zcmeC(%s68k>!G5I zV49HwNS&z`{(n~YZXiemEDSVE%r`T+D8D#Atwhf`KPA;MFEOXGIJ20M6|4=JfEtL+ zV8i_uVQbC&Opy(i39c+INzDbCnv;{7T#}ieSFGomn_F6vn3R*s$cbz+5*wT88|>rj z1+Q||TOk`Si{0IN&cPXpMFm)#53vNB`IxQ;Tf|jnqGzCIY+!6?$;il~=O^zP5{w?| V|Dk}9fzfC3K}ChlTN!VJ0{~>lPgno| delta 26 icmbQSjj?w#>!G5I zV49HwNS&z`{(n~YZXiemEDSVE%r`T+D8D#Atwhf`KPA;MFEOXGIJ20M6|4=JfEtL+ zV8i_uVQbC&Opy(i39c+INzDbCnv;{7T#}ieSFGomn_F6vn3R*s$cbz+5*wT88|>rj z1+Q||TOk`Si{0IN&cPXpMFm)#53vNB`IxQ;Tf|jnqGzCIY+!6?$;il~=O^zP5{w?| U|Dk}9fzfAjqlUuft&E2Q0nC<9K>z>% delta 32 ocmZo(#rR_x{Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rjYpBp5x^ U|3d*I17pNwMqY)@TN&-50nsu}(f|Me delta 30 mcmeyjhw<}H#t9`XcZ+IkH&*a4PCnr)FgcS;akB%nT{HmP(+pk! diff --git a/tests/Jellyfin.Networking.Tests/obj/Debug/net10.0/Jellyfin.Networking.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.Networking.Tests/obj/Debug/net10.0/Jellyfin.Networking.Tests.csproj.CoreCompileInputs.cache index a987195e..abb0d40d 100644 --- a/tests/Jellyfin.Networking.Tests/obj/Debug/net10.0/Jellyfin.Networking.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.Networking.Tests/obj/Debug/net10.0/Jellyfin.Networking.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -09128063c8681baa28f2242c7f424cc1d3c2128366767c4eedc959d265cdcec7 +f330044b34c1b90ae4845856cf35d7ca36a530d1e1864fdc27543057aadb9949 diff --git a/tests/Jellyfin.Networking.Tests/obj/Debug/net10.0/Jellyfin.Networking.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.Networking.Tests/obj/Debug/net10.0/Jellyfin.Networking.Tests.csproj.FileListAbsolute.txt index 52177275..602b1d93 100644 --- a/tests/Jellyfin.Networking.Tests/obj/Debug/net10.0/Jellyfin.Networking.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.Networking.Tests/obj/Debug/net10.0/Jellyfin.Networking.Tests.csproj.FileListAbsolute.txt @@ -5,3 +5,10 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\obj\Debug\net10.0\Jel C:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\obj\Debug\net10.0\Jellyfin.Networking.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\obj\Debug\net10.0\Jellyfin.Networking.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\obj\Debug\net10.0\Jellyfin.Networking.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.Networking.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.Networking.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\obj\Debug\net10.0\Jellyfin.Networking.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\obj\Debug\net10.0\Jellyfin.Networking.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\obj\Debug\net10.0\Jellyfin.Networking.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\obj\Debug\net10.0\Jellyfin.Networking.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Networking.Tests\obj\Debug\net10.0\Jellyfin.Networking.Tests.csproj.CoreCompileInputs.cache diff --git a/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.AssemblyInfo.cs b/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.AssemblyInfo.cs index 82e3315c..c8a702f2 100644 --- a/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.AssemblyInfo.cs +++ b/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.Providers.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.Providers.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.Providers.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.AssemblyInfoInputs.cache b/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.AssemblyInfoInputs.cache index 403a16e7..c9ffa90f 100644 --- a/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.AssemblyInfoInputs.cache +++ b/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -c80064812788544874ea639d6da28403ff441973f20cdf5f87da7d478ddbe7aa +9a6a5c9f8918afa5d672d18399b3e65c6a58e34ba37b5a317366c6c23eedbb72 diff --git a/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.csproj.AssemblyReference.cache b/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.csproj.AssemblyReference.cache index dcf7bbd612d83be556e7ef75858ed2fc2e55b9c7..1f6b603688bfdc7ac6e69f8cf8c2bb8edaae68d2 100644 GIT binary patch delta 442 zcmbRGoN>V`#t9`Xv$ihWvay1Pv7V8Ifq{XMk&!zuwWPQtF)t;tD20&;D25F%){Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rjYpBp5x^ V|3d*I17px+M=gcTTNxh|0st?MPk{gc delta 32 ocmZ4RigD_5#t9`XcZ+IkH&*a4PM#Gfz!)@nBe%k42j&Nb0O^ViGynhq diff --git a/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.csproj.CoreCompileInputs.cache index 15e6b326..bc43d728 100644 --- a/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -267ffbda736f3eb8d51fd332ab7d318168f07ea5cc96509835f1a0da3c2d6286 +62d043319e10cf75a81cb0c65c6e975a447333935a543e51d2a13b4a7a17d086 diff --git a/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.csproj.FileListAbsolute.txt index a6910ee1..8902748a 100644 --- a/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.Providers.Tests/obj/Debug/net10.0/Jellyfin.Providers.Tests.csproj.FileListAbsolute.txt @@ -5,3 +5,10 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\obj\Debug\net10.0\Jell C:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\obj\Debug\net10.0\Jellyfin.Providers.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\obj\Debug\net10.0\Jellyfin.Providers.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\obj\Debug\net10.0\Jellyfin.Providers.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.Providers.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.Providers.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\obj\Debug\net10.0\Jellyfin.Providers.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\obj\Debug\net10.0\Jellyfin.Providers.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\obj\Debug\net10.0\Jellyfin.Providers.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\obj\Debug\net10.0\Jellyfin.Providers.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Providers.Tests\obj\Debug\net10.0\Jellyfin.Providers.Tests.csproj.CoreCompileInputs.cache diff --git a/tests/Jellyfin.Server.Implementations.Tests/obj/Debug/net10.0/Jellyfin.Server.Implementations.Tests.AssemblyInfo.cs b/tests/Jellyfin.Server.Implementations.Tests/obj/Debug/net10.0/Jellyfin.Server.Implementations.Tests.AssemblyInfo.cs index de1a7bcf..6131db6b 100644 --- a/tests/Jellyfin.Server.Implementations.Tests/obj/Debug/net10.0/Jellyfin.Server.Implementations.Tests.AssemblyInfo.cs +++ b/tests/Jellyfin.Server.Implementations.Tests/obj/Debug/net10.0/Jellyfin.Server.Implementations.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.Server.Implementations.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.Server.Implementations.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.Server.Implementations.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/tests/Jellyfin.Server.Implementations.Tests/obj/Debug/net10.0/Jellyfin.Server.Implementations.Tests.AssemblyInfoInputs.cache b/tests/Jellyfin.Server.Implementations.Tests/obj/Debug/net10.0/Jellyfin.Server.Implementations.Tests.AssemblyInfoInputs.cache index 781d3c17..8cb8f3d0 100644 --- a/tests/Jellyfin.Server.Implementations.Tests/obj/Debug/net10.0/Jellyfin.Server.Implementations.Tests.AssemblyInfoInputs.cache +++ b/tests/Jellyfin.Server.Implementations.Tests/obj/Debug/net10.0/Jellyfin.Server.Implementations.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -62cd54f9e4697efe8ef0cb29477c71102d93728ac9e1f0d87c0691c1f57e207a +bc3004f34f07f94be7c49b46eda691ffcd42951b66f4e7734b1f7417eaa221b5 diff --git a/tests/Jellyfin.Server.Implementations.Tests/obj/Debug/net10.0/Jellyfin.Server.Implementations.Tests.csproj.AssemblyReference.cache b/tests/Jellyfin.Server.Implementations.Tests/obj/Debug/net10.0/Jellyfin.Server.Implementations.Tests.csproj.AssemblyReference.cache index 81affb773e9d3a0af26bebaf9e18915ae688d3b6..d0c4ca845ae630e1264afd948d9388d443f317c2 100644 GIT binary patch delta 439 zcmZ4Tgn9jQ<_RS%v$ihWvay1Pv7V8Ifq{XMk&!zuwWPQtF)t;tD20&;D25F%){Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rilRBp5x^ S|3d-e{Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rilRBp5x^ S|3d-ec(=p6vt;0%xe diff --git a/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/Jellyfin.Server.Integration.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/Jellyfin.Server.Integration.Tests.csproj.CoreCompileInputs.cache index 52d57f99..6ef6597e 100644 --- a/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/Jellyfin.Server.Integration.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/Jellyfin.Server.Integration.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -e6e97a8190cd33df49b22edfee9ea47ce26128d80f831cded56d49bd6a25cbd8 +e5dc4b0880e1dbbb0c805aac033a8376e28724a85a326e322605658aa0145f3e diff --git a/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/Jellyfin.Server.Integration.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/Jellyfin.Server.Integration.Tests.csproj.FileListAbsolute.txt index 098c9a27..719202c5 100644 --- a/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/Jellyfin.Server.Integration.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/Jellyfin.Server.Integration.Tests.csproj.FileListAbsolute.txt @@ -6,3 +6,11 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\obj\Debug\net C:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\obj\Debug\net10.0\Jellyfin.Server.Integration.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\obj\Debug\net10.0\Jellyfin.Server.Integration.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\obj\Debug\net10.0\Jellyfin.Server.Integration.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.Server.Integration.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.Server.Integration.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\obj\Debug\net10.0\Jellyfin.Server.Integration.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\obj\Debug\net10.0\MvcTestingAppManifest.json +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\obj\Debug\net10.0\Jellyfin.Server.Integration.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\obj\Debug\net10.0\Jellyfin.Server.Integration.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\obj\Debug\net10.0\Jellyfin.Server.Integration.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.Server.Integration.Tests\obj\Debug\net10.0\Jellyfin.Server.Integration.Tests.csproj.CoreCompileInputs.cache diff --git a/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/MvcTestingAppManifest.json b/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/MvcTestingAppManifest.json index 438006f7..06fbba5a 100644 --- a/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/MvcTestingAppManifest.json +++ b/tests/Jellyfin.Server.Integration.Tests/obj/Debug/net10.0/MvcTestingAppManifest.json @@ -1,25 +1,25 @@ { - "Emby.Naming": "C:\\Projects\\pgsql-jellyfin\\Emby.Naming", - "Emby.Photos": "C:\\Projects\\pgsql-jellyfin\\Emby.Photos", - "Emby.Server.Implementations": "C:\\Projects\\pgsql-jellyfin\\Emby.Server.Implementations", - "Jellyfin.Api": "C:\\Projects\\pgsql-jellyfin\\Jellyfin.Api", - "Jellyfin.Data": "C:\\Projects\\pgsql-jellyfin\\Jellyfin.Data", - "Jellyfin.Database.Implementations": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Implementations", - "Jellyfin.Database.Providers.Sqlite": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Providers.Sqlite", - "jellyfin": "C:\\Projects\\pgsql-jellyfin\\Jellyfin.Server", - "Jellyfin.Drawing": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Drawing", - "Jellyfin.Drawing.Skia": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Drawing.Skia", - "Jellyfin.Extensions": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Extensions", - "Jellyfin.LiveTv": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.LiveTv", - "Jellyfin.MediaEncoding.Hls": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Hls", - "Jellyfin.MediaEncoding.Keyframes": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Keyframes", - "Jellyfin.Networking": "C:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Networking", - "Jellyfin.Server.Implementations": "C:\\Projects\\pgsql-jellyfin\\Jellyfin.Server.Implementations", - "MediaBrowser.Common": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.Common", - "MediaBrowser.Controller": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.Controller", - "MediaBrowser.LocalMetadata": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.LocalMetadata", - "MediaBrowser.MediaEncoding": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.MediaEncoding", - "MediaBrowser.Model": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.Model", - "MediaBrowser.Providers": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.Providers", - "MediaBrowser.XbmcMetadata": "C:\\Projects\\pgsql-jellyfin\\MediaBrowser.XbmcMetadata" + "Emby.Naming": "E:\\Projects\\pgsql-jellyfin\\Emby.Naming", + "Emby.Photos": "E:\\Projects\\pgsql-jellyfin\\Emby.Photos", + "Emby.Server.Implementations": "E:\\Projects\\pgsql-jellyfin\\Emby.Server.Implementations", + "Jellyfin.Api": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Api", + "Jellyfin.Data": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Data", + "Jellyfin.Database.Implementations": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Implementations", + "Jellyfin.Database.Providers.Sqlite": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Providers.Sqlite", + "jellyfin": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Server", + "Jellyfin.Drawing": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Drawing", + "Jellyfin.Drawing.Skia": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Drawing.Skia", + "Jellyfin.Extensions": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Extensions", + "Jellyfin.LiveTv": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.LiveTv", + "Jellyfin.MediaEncoding.Hls": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Hls", + "Jellyfin.MediaEncoding.Keyframes": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.MediaEncoding.Keyframes", + "Jellyfin.Networking": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Networking", + "Jellyfin.Server.Implementations": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Server.Implementations", + "MediaBrowser.Common": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Common", + "MediaBrowser.Controller": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Controller", + "MediaBrowser.LocalMetadata": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.LocalMetadata", + "MediaBrowser.MediaEncoding": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.MediaEncoding", + "MediaBrowser.Model": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Model", + "MediaBrowser.Providers": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Providers", + "MediaBrowser.XbmcMetadata": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.XbmcMetadata" } \ No newline at end of file diff --git a/tests/Jellyfin.Server.Tests/obj/Debug/net10.0/Jellyfin.Server.Tests.AssemblyInfo.cs b/tests/Jellyfin.Server.Tests/obj/Debug/net10.0/Jellyfin.Server.Tests.AssemblyInfo.cs index dce13725..453a02bb 100644 --- a/tests/Jellyfin.Server.Tests/obj/Debug/net10.0/Jellyfin.Server.Tests.AssemblyInfo.cs +++ b/tests/Jellyfin.Server.Tests/obj/Debug/net10.0/Jellyfin.Server.Tests.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.Server.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+036953f3ffd782d56040af1332c53c54c7107be2")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f47555f2aa4eff7dcc5c5ef5bbda374f292f0638")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.Server.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.Server.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/tests/Jellyfin.Server.Tests/obj/Debug/net10.0/Jellyfin.Server.Tests.AssemblyInfoInputs.cache b/tests/Jellyfin.Server.Tests/obj/Debug/net10.0/Jellyfin.Server.Tests.AssemblyInfoInputs.cache index c6b64838..74cd2644 100644 --- a/tests/Jellyfin.Server.Tests/obj/Debug/net10.0/Jellyfin.Server.Tests.AssemblyInfoInputs.cache +++ b/tests/Jellyfin.Server.Tests/obj/Debug/net10.0/Jellyfin.Server.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -94b64597a77c671cbea47d6befe2adccd9ee81b7da335752870262365b345b45 +7d11417698eb7986096360e753890a36afde8279d370cf95cd4a59339be221db diff --git a/tests/Jellyfin.Server.Tests/obj/Debug/net10.0/Jellyfin.Server.Tests.csproj.AssemblyReference.cache b/tests/Jellyfin.Server.Tests/obj/Debug/net10.0/Jellyfin.Server.Tests.csproj.AssemblyReference.cache index 1e25ca6348b96c282c725713f8b5dfcd8aa4fd99..0642cb930aa05491a8e176b1f96b73252c27d1c9 100644 GIT binary patch delta 439 zcmZp=%iQ~bc|r-xtgQ>TY^>m6tY>6lU|?WmWaQ3EEh#QZ%u7iuN?~LIieUqc^-xhp zFwMvTq|Q_e|39mHHxMKO76uw7=9`&ZlwX{mR-)&epOWgBmzYyooLS7s3f6{9Kn=uZ zu;G4-u(f7>rpN}%1XmW9q~-!m&B;kkF3HT#E7tSO%`GiSOv*`R*ift&okE#qMrB=irRQq5>?=hggEmd`#DaE#fLO(KFC9HZV4{WMt&g^OJE62}Td~ S|4_g<`Mk37=B{Qs=(-9V5CSQu!Sm~UosQGRiLT8W->eoCriUSdvVab__iD_9#c0W}bt z!G`-S!q%GknIao36I@wbl9~%NH76%Exg;|`uUOABH@CDTF)1gNkrUZuBsMnFH`vG5 z3tr`_w?Z~v7Q4IkoP#qGiwdwfA7TkM^D$iywur0DM9)Ca*udD(l97=|&rjYpBp5x^ V|3d*I17pzSgRBahw=z~|0svG-PlEse delta 32 ocmdmelX1f}#t9`XcZ+IkH&*a4PF|NFz!)?+(LiCd19NpI0P67!#sB~S diff --git a/tests/Jellyfin.XbmcMetadata.Tests/obj/Debug/net10.0/Jellyfin.XbmcMetadata.Tests.csproj.CoreCompileInputs.cache b/tests/Jellyfin.XbmcMetadata.Tests/obj/Debug/net10.0/Jellyfin.XbmcMetadata.Tests.csproj.CoreCompileInputs.cache index 788e4de8..14c17f44 100644 --- a/tests/Jellyfin.XbmcMetadata.Tests/obj/Debug/net10.0/Jellyfin.XbmcMetadata.Tests.csproj.CoreCompileInputs.cache +++ b/tests/Jellyfin.XbmcMetadata.Tests/obj/Debug/net10.0/Jellyfin.XbmcMetadata.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -88bb8ad0baa50e27134b8cdc1496758f926f52f716cd76d93718121f9dbe2f30 +6c03ac068311e97ac8da35e8dcdc308d45fc90c28f78aa06a890c1603cdaa56c diff --git a/tests/Jellyfin.XbmcMetadata.Tests/obj/Debug/net10.0/Jellyfin.XbmcMetadata.Tests.csproj.FileListAbsolute.txt b/tests/Jellyfin.XbmcMetadata.Tests/obj/Debug/net10.0/Jellyfin.XbmcMetadata.Tests.csproj.FileListAbsolute.txt index 9a85fe6d..9f22c18f 100644 --- a/tests/Jellyfin.XbmcMetadata.Tests/obj/Debug/net10.0/Jellyfin.XbmcMetadata.Tests.csproj.FileListAbsolute.txt +++ b/tests/Jellyfin.XbmcMetadata.Tests/obj/Debug/net10.0/Jellyfin.XbmcMetadata.Tests.csproj.FileListAbsolute.txt @@ -5,3 +5,10 @@ C:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\obj\Debug\net10.0\J C:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\obj\Debug\net10.0\Jellyfin.XbmcMetadata.Tests.AssemblyInfoInputs.cache C:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\obj\Debug\net10.0\Jellyfin.XbmcMetadata.Tests.AssemblyInfo.cs C:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\obj\Debug\net10.0\Jellyfin.XbmcMetadata.Tests.csproj.CoreCompileInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\bin\Debug\net10.0\.msCoverageSourceRootsMapping_Jellyfin.XbmcMetadata.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\bin\Debug\net10.0\CoverletSourceRootsMapping_Jellyfin.XbmcMetadata.Tests +E:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\obj\Debug\net10.0\Jellyfin.XbmcMetadata.Tests.csproj.AssemblyReference.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\obj\Debug\net10.0\Jellyfin.XbmcMetadata.Tests.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\obj\Debug\net10.0\Jellyfin.XbmcMetadata.Tests.AssemblyInfoInputs.cache +E:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\obj\Debug\net10.0\Jellyfin.XbmcMetadata.Tests.AssemblyInfo.cs +E:\Projects\pgsql-jellyfin\tests\Jellyfin.XbmcMetadata.Tests\obj\Debug\net10.0\Jellyfin.XbmcMetadata.Tests.csproj.CoreCompileInputs.cache