From 7b8fd359a57ea9118472ae4b44ddc4e9cf7c8a74 Mon Sep 17 00:00:00 2001 From: Aleksi Lassila Date: Fri, 28 Mar 2025 12:16:23 +0200 Subject: [PATCH] refactor: mediaType capitalization --- .../1743155964012-rename-mediatype.ts | 45 +++++++++++++++++++ backend/src/common/common.dto.ts | 11 +++-- .../user-data/library/library.controller.ts | 14 +++--- .../src/user-data/library/library.entity.ts | 4 +- .../src/user-data/library/library.service.ts | 17 +++---- .../user-data/play-state/play-state.entity.ts | 6 +-- .../play-state/play-states.service.ts | 10 ++--- 7 files changed, 73 insertions(+), 34 deletions(-) create mode 100644 backend/migrations/1743155964012-rename-mediatype.ts diff --git a/backend/migrations/1743155964012-rename-mediatype.ts b/backend/migrations/1743155964012-rename-mediatype.ts new file mode 100644 index 0000000..fd1523d --- /dev/null +++ b/backend/migrations/1743155964012-rename-mediatype.ts @@ -0,0 +1,45 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class RenameMediatype1743155964012 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + queryRunner.query( + `UPDATE library_item SET mediaType = 'movie' WHERE mediaType = 'Movie';`, + ); + queryRunner.query( + `UPDATE library_item SET mediaType = 'series' WHERE mediaType = 'Series';`, + ); + queryRunner.query( + `UPDATE library_item SET mediaType = 'episode' WHERE mediaType = 'Episode';`, + ); + queryRunner.query( + `UPDATE play_state SET mediaType = 'movie' WHERE mediaType = 'Movie';`, + ); + queryRunner.query( + `UPDATE play_state SET mediaType = 'series' WHERE mediaType = 'Series';`, + ); + queryRunner.query( + `UPDATE play_state SET mediaType = 'episode' WHERE mediaType = 'Episode';`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + queryRunner.query( + `UPDATE library_item SET mediaType = 'Movie' WHERE mediaType = 'movie';`, + ); + queryRunner.query( + `UPDATE library_item SET mediaType = 'Series' WHERE mediaType = 'series';`, + ); + queryRunner.query( + `UPDATE library_item SET mediaType = 'Episode' WHERE mediaType = 'episode';`, + ); + queryRunner.query( + `UPDATE play_state SET mediaType = 'Movie' WHERE mediaType = 'movie';`, + ); + queryRunner.query( + `UPDATE play_state SET mediaType = 'Series' WHERE mediaType = 'series';`, + ); + queryRunner.query( + `UPDATE play_state SET mediaType = 'Episode' WHERE mediaType = 'episode';`, + ); + } +} diff --git a/backend/src/common/common.dto.ts b/backend/src/common/common.dto.ts index c984b95..5b5c865 100644 --- a/backend/src/common/common.dto.ts +++ b/backend/src/common/common.dto.ts @@ -49,7 +49,12 @@ export class SuccessResponseDto { } export enum MediaType { - Movie = 'Movie', - Series = 'Series', - Episode = 'Episode', + Movie = 'movie', + Series = 'series', +} + +export enum MediaTypeFull { + Movie = 'movie', + Series = 'series', + Episode = 'episode', } diff --git a/backend/src/user-data/library/library.controller.ts b/backend/src/user-data/library/library.controller.ts index bde1378..f28315d 100644 --- a/backend/src/user-data/library/library.controller.ts +++ b/backend/src/user-data/library/library.controller.ts @@ -19,14 +19,14 @@ import { MediaType, PaginatedResponseDto, PaginationParamsDto, - SuccessResponseDto, + SuccessResponseDto } from 'src/common/common.dto'; import { MediaSourcesService } from 'src/users/media-sources/media-sources.service'; import { CatalogueFilter, LibraryItemDto, - MyListSortBy, MyListFilter, + MyListSortBy, SortByDirection, } from './library.dto'; import { LibraryService } from './library.service'; @@ -68,12 +68,7 @@ export class LibraryController { return { ...response, items: await Promise.all( - response.items.map((i) => - this.libraryService.getLibraryItemDto({ - ...i, - mediaType: i.mediaType === MediaType.Movie ? 'movie' : 'series', - }), - ), + response.items.map((i) => this.libraryService.getLibraryItemDto(i)), ), }; } @@ -111,7 +106,8 @@ export class LibraryController { async addLibraryItem( @Param('userId') userId: string, @Param('tmdbId') tmdbId: string, - @Query('mediaType', new ParseEnumPipe(MediaType)) mediaType: MediaType, + @Query('mediaType', new ParseEnumPipe(MediaType)) + mediaType: MediaType, ): Promise { const item = await this.libraryService.findOrCreateByTmdbId( userId, diff --git a/backend/src/user-data/library/library.entity.ts b/backend/src/user-data/library/library.entity.ts index 911bbac..62d9acf 100644 --- a/backend/src/user-data/library/library.entity.ts +++ b/backend/src/user-data/library/library.entity.ts @@ -1,5 +1,6 @@ import { ApiProperty } from '@nestjs/swagger'; import { MediaType } from 'src/common/common.dto'; +import { MovieMetadata, SeriesMetadata } from 'src/metadata/metadata.entity'; import { User } from 'src/users/user.entity'; import { Column, @@ -13,9 +14,8 @@ import { Unique, UpdateDateColumn, } from 'typeorm'; -import { PlayState } from '../play-state/play-state.entity'; import { PlayStateDto } from '../play-state/play-state.dto'; -import { MovieMetadata, SeriesMetadata } from 'src/metadata/metadata.entity'; +import { PlayState } from '../play-state/play-state.entity'; @Entity() @Unique(['tmdbId', 'userId']) diff --git a/backend/src/user-data/library/library.service.ts b/backend/src/user-data/library/library.service.ts index 387a3b4..d0acf5c 100644 --- a/backend/src/user-data/library/library.service.ts +++ b/backend/src/user-data/library/library.service.ts @@ -5,18 +5,17 @@ import { PaginationParamsDto, } from 'src/common/common.dto'; import { MetadataService } from 'src/metadata/metadata.service'; +import { MediaSourcesService } from 'src/users/media-sources/media-sources.service'; import { Repository } from 'typeorm'; +import { PlayState } from '../play-state/play-state.entity'; import { LibraryItemDto, - MyListSortBy, MyListFilter, + MyListSortBy, SortByDirection, } from './library.dto'; import { LibraryItem } from './library.entity'; import { USER_LIBRARY_REPOSITORY } from './library.providers'; -import { SourceProvidersService } from 'src/source-providers/source-providers.service'; -import { MediaSourcesService } from 'src/users/media-sources/media-sources.service'; -import { PlayState } from '../play-state/play-state.entity'; @Injectable() export class LibraryService { @@ -114,7 +113,7 @@ export class LibraryService { }; } - async getCatalogueItems(options: { + async getCatalogueItems(options: { sourceId: string; token: string; pagination: PaginationParamsDto; @@ -211,13 +210,7 @@ export class LibraryService { return { ...response, items: await Promise.all( - response.items.map(async (item) => - this.getLibraryItemDto({ - ...item, - mediaType: - item.mediaType === MediaType.Movie ? 'movie' : 'series', - }), - ), + response.items.map((item) => this.getLibraryItemDto(item)), ), }; } diff --git a/backend/src/user-data/play-state/play-state.entity.ts b/backend/src/user-data/play-state/play-state.entity.ts index 0d76f42..1980368 100644 --- a/backend/src/user-data/play-state/play-state.entity.ts +++ b/backend/src/user-data/play-state/play-state.entity.ts @@ -10,7 +10,7 @@ import { UpdateDateColumn, } from 'typeorm'; import { LibraryItem } from '../library/library.entity'; -import { MediaType } from 'src/common/common.dto'; +import { MediaTypeFull } from 'src/common/common.dto'; import { User } from 'src/users/user.entity'; @Entity() @@ -24,9 +24,9 @@ export class PlayState { @Column() tmdbId: string; - @ApiProperty({ enum: MediaType }) + @ApiProperty({ enum: MediaTypeFull }) @Column() - mediaType: MediaType; + mediaType: MediaTypeFull; @ApiProperty({ required: true, type: 'string' }) @Column() diff --git a/backend/src/user-data/play-state/play-states.service.ts b/backend/src/user-data/play-state/play-states.service.ts index ae4010d..8e23fa8 100644 --- a/backend/src/user-data/play-state/play-states.service.ts +++ b/backend/src/user-data/play-state/play-states.service.ts @@ -1,5 +1,5 @@ import { Inject, Injectable } from '@nestjs/common'; -import { MediaType } from 'src/common/common.dto'; +import { MediaTypeFull } from 'src/common/common.dto'; import { Repository } from 'typeorm'; import { BulkUpdatePlayStateDto, UpdatePlayStateDto } from './play-state.dto'; import { PlayState } from './play-state.entity'; @@ -67,7 +67,7 @@ export class PlayStatesService { options: { season?: number; episode?: number; - mediaType: MediaType; + mediaType: MediaTypeFull; save?: boolean; }, ) { @@ -100,7 +100,7 @@ export class PlayStatesService { playState: UpdatePlayStateDto, ) { const state = await this.getOrCreatePlayState(userId, tmdbId, { - mediaType: MediaType.Movie, + mediaType: MediaTypeFull.Movie, }); if (playState.progress !== undefined) state.progress = playState.progress; @@ -119,7 +119,7 @@ export class PlayStatesService { const state = await this.getOrCreatePlayState(userId, tmdbId, { season, episode, - mediaType: MediaType.Episode, + mediaType: MediaTypeFull.Episode, }); if (playState.progress !== undefined) state.progress = playState.progress; @@ -156,7 +156,7 @@ export class PlayStatesService { const state = await this.getOrCreatePlayState(userId, tmdbId, { season: updatedState.season, episode: updatedState.episode, - mediaType: MediaType.Episode, + mediaType: MediaTypeFull.Episode, }); if (updatedState.progress !== undefined)