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)}