From 0900a95532501b6f4d9698de7530a771512924fc Mon Sep 17 00:00:00 2001 From: Fallenbagel <98979876+Fallenbagel@users.noreply.github.com> Date: Sun, 31 Mar 2024 16:26:09 +0500 Subject: [PATCH] fix: nullable type for jellyfinMediaId(4k) (#702) The jellyfinMediaId(4k) properties were inferred as string | undefined, causing them to be set to undefined when assigning null. This prevented the media from being saved correctly to the SQLite database, as it doesn't accept undefined values. This resolves the availabilitySync job issue where the "play on" button wasn't being removed for all media server types. fix #668 --- server/entity/Media.ts | 8 ++++---- server/lib/availabilitySync.ts | 4 ++-- server/lib/scanners/jellyfin/index.ts | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/server/entity/Media.ts b/server/entity/Media.ts index 68a5622c0..1932670e4 100644 --- a/server/entity/Media.ts +++ b/server/entity/Media.ts @@ -151,11 +151,11 @@ class Media { @Column({ nullable: true, type: 'varchar' }) public ratingKey4k?: string | null; - @Column({ nullable: true }) - public jellyfinMediaId?: string; + @Column({ nullable: true, type: 'varchar' }) + public jellyfinMediaId?: string | null; - @Column({ nullable: true }) - public jellyfinMediaId4k?: string; + @Column({ nullable: true, type: 'varchar' }) + public jellyfinMediaId4k?: string | null; public serviceUrl?: string; public serviceUrl4k?: string; diff --git a/server/lib/availabilitySync.ts b/server/lib/availabilitySync.ts index 5bdbf593e..8b37bc85e 100644 --- a/server/lib/availabilitySync.ts +++ b/server/lib/availabilitySync.ts @@ -548,7 +548,7 @@ class AvailabilitySync { media[is4k ? 'ratingKey4k' : 'ratingKey'] = mediaStatus === MediaStatus.PROCESSING ? media[is4k ? 'ratingKey4k' : 'ratingKey'] - : undefined; + : null; } else if ( mediaServerType === MediaServerType.JELLYFIN || mediaServerType === MediaServerType.EMBY @@ -556,7 +556,7 @@ class AvailabilitySync { media[is4k ? 'jellyfinMediaId4k' : 'jellyfinMediaId'] = mediaStatus === MediaStatus.PROCESSING ? media[is4k ? 'jellyfinMediaId4k' : 'jellyfinMediaId'] - : undefined; + : null; } logger.info( `The ${is4k ? '4K' : 'non-4K'} ${ diff --git a/server/lib/scanners/jellyfin/index.ts b/server/lib/scanners/jellyfin/index.ts index ee546fe74..f5b0f66a2 100644 --- a/server/lib/scanners/jellyfin/index.ts +++ b/server/lib/scanners/jellyfin/index.ts @@ -168,9 +168,9 @@ class JellyfinScanner { newMedia.jellyfinMediaId = hasOtherResolution || (!this.enable4kMovie && has4k) ? metadata.Id - : undefined; + : null; newMedia.jellyfinMediaId4k = - has4k && this.enable4kMovie ? metadata.Id : undefined; + has4k && this.enable4kMovie ? metadata.Id : null; await mediaRepository.save(newMedia); this.log(`Saved ${metadata.Name}`); } @@ -461,9 +461,9 @@ class JellyfinScanner { tmdbId: tvShow.id, tvdbId: tvShow.external_ids.tvdb_id, mediaAddedAt: new Date(metadata.DateCreated ?? ''), - jellyfinMediaId: isAllStandardSeasons ? Id : undefined, + jellyfinMediaId: isAllStandardSeasons ? Id : null, jellyfinMediaId4k: - isAll4kSeasons && this.enable4kShow ? Id : undefined, + isAll4kSeasons && this.enable4kShow ? Id : null, status: isAllStandardSeasons ? MediaStatus.AVAILABLE : newSeasons.some(