From fa3daa831f0a155b9eb4074a51856cf6e43d61d5 Mon Sep 17 00:00:00 2001 From: Phill Pover Date: Sun, 6 Apr 2025 23:14:48 +0100 Subject: [PATCH] Adding tracknumber, adding sorting --- backend/src/album/album.service.ts | 6 +++++- backend/src/song/dto/create-song.dto.ts | 1 + backend/src/song/dto/update-song.dto.ts | 1 + backend/src/song/song.entity.ts | 3 +++ backend/src/song/song.service.ts | 12 +++++++++--- frontend/src/app/album/[id]/page.tsx | 2 ++ frontend/src/entities/song.entity.tsx | 1 + 7 files changed, 22 insertions(+), 4 deletions(-) diff --git a/backend/src/album/album.service.ts b/backend/src/album/album.service.ts index 9b208ba..8231798 100644 --- a/backend/src/album/album.service.ts +++ b/backend/src/album/album.service.ts @@ -13,7 +13,11 @@ export class AlbumService { ) {} findAll(): Promise { - return this.albumRepository.find(); + return this.albumRepository.find({ + order: { + artist: "ASC" + } + }); } findOneById(id: number): Promise { diff --git a/backend/src/song/dto/create-song.dto.ts b/backend/src/song/dto/create-song.dto.ts index 3e25dd3..e3eadeb 100644 --- a/backend/src/song/dto/create-song.dto.ts +++ b/backend/src/song/dto/create-song.dto.ts @@ -1,5 +1,6 @@ export class CreateSongDto { title: string; duration: number; + trackNumber: number; albumId: number; } diff --git a/backend/src/song/dto/update-song.dto.ts b/backend/src/song/dto/update-song.dto.ts index 8768771..8a6d8f4 100644 --- a/backend/src/song/dto/update-song.dto.ts +++ b/backend/src/song/dto/update-song.dto.ts @@ -2,5 +2,6 @@ export class UpdateSongDto { id: number; title: string; duration: number; + trackNumber: number; albumId: number; } diff --git a/backend/src/song/song.entity.ts b/backend/src/song/song.entity.ts index 086cc88..412b6d1 100644 --- a/backend/src/song/song.entity.ts +++ b/backend/src/song/song.entity.ts @@ -12,6 +12,9 @@ export class Song { @Column() duration: number + @Column + trackNumber: number + @ManyToOne(() => Album, (album) => album.songs) album: Album } diff --git a/backend/src/song/song.service.ts b/backend/src/song/song.service.ts index 9afdaad..ea15562 100644 --- a/backend/src/song/song.service.ts +++ b/backend/src/song/song.service.ts @@ -13,7 +13,11 @@ export class SongService { ) {} findAll(): Promise { - return this.songRepository.find(); + return this.songRepository.find({ + order: { + trackNumber: "ASC" + } + }); } findOneById(id: number): Promise { @@ -23,7 +27,8 @@ export class SongService { async create(createSongDto: CreateSongDto): Promise { const song = this.songRepository.create({ title: createSongDto.title, - duration: createSongDto.duration + duration: createSongDto.duration, + trackNumber: createSongDto.trackNumber }); const savedSong = await this.songRepository.save(song); return savedSong.id; @@ -37,7 +42,8 @@ export class SongService { await this.songRepository.update({ id: updateSongDto.id }, { title: updateSongDto.title, - duration: updateSongDto.duration + duration: updateSongDto.duration, + trackNumber: createSongDto.trackNumber }); return "Song updated successfully"; } else { diff --git a/frontend/src/app/album/[id]/page.tsx b/frontend/src/app/album/[id]/page.tsx index 4118257..c2ebc67 100644 --- a/frontend/src/app/album/[id]/page.tsx +++ b/frontend/src/app/album/[id]/page.tsx @@ -58,6 +58,7 @@ export default function Page() { + @@ -65,6 +66,7 @@ export default function Page() { {album.songs.map((song: Song) => ( + diff --git a/frontend/src/entities/song.entity.tsx b/frontend/src/entities/song.entity.tsx index 594cdcb..cc49ef9 100644 --- a/frontend/src/entities/song.entity.tsx +++ b/frontend/src/entities/song.entity.tsx @@ -4,5 +4,6 @@ export interface Song { id: number; title: string; duration: number; + trackNumber: number; album: Album; }
# Title Duration
{song.trackNumber} {song.title} {TimeUtils.fancyTimeFormat(song.duration)}