From 0d6a1f12fbab1c0408e93950a466410cf379be97 Mon Sep 17 00:00:00 2001 From: dr-carrot Date: Sat, 27 Jan 2024 18:00:42 -0500 Subject: [PATCH 1/7] chore: added some more+ additional debug sanity checks --- server/entity/MediaRequest.ts | 50 +++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/server/entity/MediaRequest.ts b/server/entity/MediaRequest.ts index b48bf55a..29d1bff9 100644 --- a/server/entity/MediaRequest.ts +++ b/server/entity/MediaRequest.ts @@ -12,7 +12,7 @@ import { MediaStatus, MediaType, } from '@server/constants/media'; -import { getRepository } from '@server/datasource'; +import { getRepository, isPgsql } from '@server/datasource'; import type { MediaRequestBody } from '@server/interfaces/api/requestInterfaces'; import notificationManager, { Notification } from '@server/lib/notifications'; import { Permission } from '@server/lib/permissions'; @@ -1108,41 +1108,49 @@ export class MediaRequest { sonarr .addSeries(sonarrSeriesOptions) .then(async (sonarrSeries) => { - const reqCheck1 = await getRepository(MediaRequest).find({ - where: { media: { id: this.media.id } }, - }); - logger.debug( - `Before running the find the DB claims we have ${ - reqCheck1?.length ?? 0 - } relations` - ); + // const reqCheck1 = await getRepository(MediaRequest).find({ + // where: { media: { id: this.media.id } }, + // }); + // logger.debug( + // `Before running the find the DB claims we have ${ + // reqCheck1?.length ?? 0 + // } relations` + // ); // We grab media again here to make sure we have the latest version of it const media = await mediaRepository.findOne({ where: { id: this.media.id }, relations: { requests: true }, }); - logger.debug( - `Typeorm claims ${ - media?.requests?.length ?? 0 - } relations are loaded` - ); - const reqCheck = await getRepository(MediaRequest).find({ - where: { media: { id: this.media.id } }, - }); - logger.debug( - `The DB claims we have ${reqCheck?.length ?? 0} relations` - ); + // logger.debug( + // `Typeorm claims ${ + // media?.requests?.length ?? 0 + // } relations are loaded` + // ); + // const reqCheck = await getRepository(MediaRequest).find({ + // where: { media: { id: this.media.id } }, + // }); + // logger.debug( + // `The DB claims we have ${reqCheck?.length ?? 0} relations` + // ); if (!media) { throw new Error('Media data not found'); } + if (isPgsql) { + // Force lazy loading of requests + logger.debug('Forcing lazy loading of requests'); + media.requests; + } + media[this.is4k ? 'externalServiceId4k' : 'externalServiceId'] = sonarrSeries.id; media[this.is4k ? 'externalServiceSlug4k' : 'externalServiceSlug'] = sonarrSeries.titleSlug; media[this.is4k ? 'serviceId4k' : 'serviceId'] = sonarrSettings?.id; + logger.debug('Dumping media before save:'); + logger.debug(JSON.stringify(media)); await mediaRepository.save(media); const reqCheck3 = await getRepository(MediaRequest).find({ where: { media: { id: this.media.id } }, @@ -1152,6 +1160,8 @@ export class MediaRequest { reqCheck3?.length ?? 0 } relations` ); + logger.debug('Dumping media after save:'); + logger.debug(JSON.stringify(media)); }) .catch(async () => { const requestRepository = getRepository(MediaRequest); From 0bab6887b0e07016356bfb667f6df109d074585a Mon Sep 17 00:00:00 2001 From: dr-carrot Date: Sat, 27 Jan 2024 18:18:16 -0500 Subject: [PATCH 2/7] chore: mild log cleanup --- server/entity/MediaRequest.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/entity/MediaRequest.ts b/server/entity/MediaRequest.ts index 29d1bff9..947b6362 100644 --- a/server/entity/MediaRequest.ts +++ b/server/entity/MediaRequest.ts @@ -1120,6 +1120,7 @@ export class MediaRequest { const media = await mediaRepository.findOne({ where: { id: this.media.id }, relations: { requests: true }, + loadEagerRelations: true, }); // logger.debug( @@ -1149,8 +1150,7 @@ export class MediaRequest { media[this.is4k ? 'externalServiceSlug4k' : 'externalServiceSlug'] = sonarrSeries.titleSlug; media[this.is4k ? 'serviceId4k' : 'serviceId'] = sonarrSettings?.id; - logger.debug('Dumping media before save:'); - logger.debug(JSON.stringify(media)); + await mediaRepository.save(media); const reqCheck3 = await getRepository(MediaRequest).find({ where: { media: { id: this.media.id } }, From 7aca0be41c447fd6bf97c3deda6fec1bd166b25c Mon Sep 17 00:00:00 2001 From: dr-carrot Date: Sat, 27 Jan 2024 18:34:55 -0500 Subject: [PATCH 3/7] chore: more log cleanup --- server/entity/MediaRequest.ts | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/server/entity/MediaRequest.ts b/server/entity/MediaRequest.ts index 947b6362..bd78ce80 100644 --- a/server/entity/MediaRequest.ts +++ b/server/entity/MediaRequest.ts @@ -1108,14 +1108,6 @@ export class MediaRequest { sonarr .addSeries(sonarrSeriesOptions) .then(async (sonarrSeries) => { - // const reqCheck1 = await getRepository(MediaRequest).find({ - // where: { media: { id: this.media.id } }, - // }); - // logger.debug( - // `Before running the find the DB claims we have ${ - // reqCheck1?.length ?? 0 - // } relations` - // ); // We grab media again here to make sure we have the latest version of it const media = await mediaRepository.findOne({ where: { id: this.media.id }, @@ -1123,18 +1115,6 @@ export class MediaRequest { loadEagerRelations: true, }); - // logger.debug( - // `Typeorm claims ${ - // media?.requests?.length ?? 0 - // } relations are loaded` - // ); - // const reqCheck = await getRepository(MediaRequest).find({ - // where: { media: { id: this.media.id } }, - // }); - // logger.debug( - // `The DB claims we have ${reqCheck?.length ?? 0} relations` - // ); - if (!media) { throw new Error('Media data not found'); } @@ -1142,7 +1122,9 @@ export class MediaRequest { if (isPgsql) { // Force lazy loading of requests logger.debug('Forcing lazy loading of requests'); - media.requests; + media.requests.forEach((r) => + logger.debug(`loaded request ${r.id} with status ${r.status}`) + ); } media[this.is4k ? 'externalServiceId4k' : 'externalServiceId'] = @@ -1152,14 +1134,6 @@ export class MediaRequest { media[this.is4k ? 'serviceId4k' : 'serviceId'] = sonarrSettings?.id; await mediaRepository.save(media); - const reqCheck3 = await getRepository(MediaRequest).find({ - where: { media: { id: this.media.id } }, - }); - logger.debug( - `After save, the DB claims we have ${ - reqCheck3?.length ?? 0 - } relations` - ); logger.debug('Dumping media after save:'); logger.debug(JSON.stringify(media)); }) From 610c372498c4e54ca644b2918d23e46137c81bb2 Mon Sep 17 00:00:00 2001 From: dr-carrot Date: Sat, 27 Jan 2024 19:07:57 -0500 Subject: [PATCH 4/7] chore: finish log cleanup --- server/entity/MediaRequest.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/entity/MediaRequest.ts b/server/entity/MediaRequest.ts index bd78ce80..0ef92525 100644 --- a/server/entity/MediaRequest.ts +++ b/server/entity/MediaRequest.ts @@ -1134,8 +1134,6 @@ export class MediaRequest { media[this.is4k ? 'serviceId4k' : 'serviceId'] = sonarrSettings?.id; await mediaRepository.save(media); - logger.debug('Dumping media after save:'); - logger.debug(JSON.stringify(media)); }) .catch(async () => { const requestRepository = getRepository(MediaRequest); From 5f7679982a64158a01cbe3f4677f67e78a2c0e80 Mon Sep 17 00:00:00 2001 From: dr-carrot Date: Sat, 27 Jan 2024 19:08:47 -0500 Subject: [PATCH 5/7] fix: added not null to migration so typeorm doesn't delete ids --- .../postgres/1705599190375-InitialMigration.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/server/migration/postgres/1705599190375-InitialMigration.ts b/server/migration/postgres/1705599190375-InitialMigration.ts index 1be19232..20e349c5 100644 --- a/server/migration/postgres/1705599190375-InitialMigration.ts +++ b/server/migration/postgres/1705599190375-InitialMigration.ts @@ -56,7 +56,7 @@ export class InitialMigration1705599190375 implements MigrationInterface { status int default '1'::int, "createdAt" timestamp with time zone default CURRENT_TIMESTAMP, "updatedAt" timestamp with time zone default CURRENT_TIMESTAMP, - "mediaId" int, + "mediaId" int not null, status4k int default '1'::int, constraint idx_194715_season_pkey primary key (id), @@ -141,7 +141,7 @@ export class InitialMigration1705599190375 implements MigrationInterface { "problemEpisode" int default '0'::int, "createdAt" timestamp with time zone default CURRENT_TIMESTAMP, "updatedAt" timestamp with time zone default CURRENT_TIMESTAMP, - "mediaId" int, + "mediaId" int not null, "createdById" int, "modifiedById" int, constraint idx_194747_issue_pkey @@ -208,7 +208,7 @@ export class InitialMigration1705599190375 implements MigrationInterface { "createdAt" timestamp with time zone default CURRENT_TIMESTAMP, "updatedAt" timestamp with time zone default CURRENT_TIMESTAMP, type text, - "mediaId" int, + "mediaId" int not null, "requestedById" int, "modifiedById" int, is4k boolean default false, @@ -231,7 +231,7 @@ export class InitialMigration1705599190375 implements MigrationInterface { await queryRunner.query( `create table if not exists season_request ( - id serial, + id serial NOT NULL, "seasonNumber" int, status int default '1'::int, "createdAt" timestamp with time zone default now(), @@ -270,7 +270,7 @@ export class InitialMigration1705599190375 implements MigrationInterface { "createdAt" timestamp with time zone default CURRENT_TIMESTAMP, "updatedAt" timestamp with time zone default CURRENT_TIMESTAMP, "requestedById" int, - "mediaId" int, + "mediaId" int not null, constraint idx_194788_watchlist_pkey primary key (id) );` From 86444b80b9791c7b480717b0053212216dbdd221 Mon Sep 17 00:00:00 2001 From: dr-carrot Date: Sat, 27 Jan 2024 19:29:41 -0500 Subject: [PATCH 6/7] chore: cleanup extra psql code --- server/entity/MediaRequest.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/server/entity/MediaRequest.ts b/server/entity/MediaRequest.ts index 0ef92525..c9579759 100644 --- a/server/entity/MediaRequest.ts +++ b/server/entity/MediaRequest.ts @@ -12,7 +12,7 @@ import { MediaStatus, MediaType, } from '@server/constants/media'; -import { getRepository, isPgsql } from '@server/datasource'; +import { getRepository } from '@server/datasource'; import type { MediaRequestBody } from '@server/interfaces/api/requestInterfaces'; import notificationManager, { Notification } from '@server/lib/notifications'; import { Permission } from '@server/lib/permissions'; @@ -1119,14 +1119,6 @@ export class MediaRequest { throw new Error('Media data not found'); } - if (isPgsql) { - // Force lazy loading of requests - logger.debug('Forcing lazy loading of requests'); - media.requests.forEach((r) => - logger.debug(`loaded request ${r.id} with status ${r.status}`) - ); - } - media[this.is4k ? 'externalServiceId4k' : 'externalServiceId'] = sonarrSeries.id; media[this.is4k ? 'externalServiceSlug4k' : 'externalServiceSlug'] = From 88b67686ff4110e64fa61c33ead81705ca7d904a Mon Sep 17 00:00:00 2001 From: dr-carrot Date: Sat, 27 Jan 2024 19:56:28 -0500 Subject: [PATCH 7/7] fix: remove eager load --- server/entity/MediaRequest.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/server/entity/MediaRequest.ts b/server/entity/MediaRequest.ts index c9579759..31b13c69 100644 --- a/server/entity/MediaRequest.ts +++ b/server/entity/MediaRequest.ts @@ -1112,7 +1112,6 @@ export class MediaRequest { const media = await mediaRepository.findOne({ where: { id: this.media.id }, relations: { requests: true }, - loadEagerRelations: true, }); if (!media) {