From fb67512092207f0682b9a3939cfedb39ac4a9e16 Mon Sep 17 00:00:00 2001 From: Phill Pover Date: Mon, 7 Apr 2025 06:32:23 +0100 Subject: [PATCH] Fixes --- backend/src/album/album.entity.ts | 7 +++++++ backend/src/album/album.service.ts | 10 +++++----- backend/src/song/song.entity.ts | 5 +++++ backend/src/song/song.service.ts | 12 ++++++------ frontend/src/app/album/[id]/page.tsx | 9 +++------ frontend/src/app/album/page.tsx | 1 - 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/backend/src/album/album.entity.ts b/backend/src/album/album.entity.ts index dc613e0..19f757b 100644 --- a/backend/src/album/album.entity.ts +++ b/backend/src/album/album.entity.ts @@ -1,4 +1,5 @@ import { Entity, Column, OneToMany, PrimaryGeneratedColumn } from 'typeorm'; +import { IsNotEmpty, IsString } from 'class-validator'; import { Song } from '../song/song.entity'; @Entity() @@ -7,12 +8,18 @@ export class Album { id: number @Column() + @IsString() + @IsNotEmpty() title: string @Column() + @IsString() + @IsNotEmpty() artist: string @Column() + @IsString() + @IsNotEmpty genre: string @OneToMany(() => Song, (song) => song.album, { eager: true, onDelete: 'CASCADE' }) diff --git a/backend/src/album/album.service.ts b/backend/src/album/album.service.ts index e9bc854..d0234f5 100644 --- a/backend/src/album/album.service.ts +++ b/backend/src/album/album.service.ts @@ -50,11 +50,11 @@ export class AlbumService { return null; } - albumToUpdate.title = updateAlbumDto.title; - albumToUpdate.artist = updateAlbumDto.artist; - albumToUpdate.genre = updateAlbumDto.genre; - const savedAlbum = await this.albumRepository.save(albumToUpdate); - return savedAlbum; + const savedAlbum = await this.albumRepository.update({ id: updateAlbumDto.id }, { + title: updateAlbumDto.title, + artist: updateAlbumDto.artist, + genre: updateAlbumDto.genre + }); } else { console.error("AlbumService: update: IDs do not match", id, updateAlbumDto); return null; diff --git a/backend/src/song/song.entity.ts b/backend/src/song/song.entity.ts index 862cfdd..f00667b 100644 --- a/backend/src/song/song.entity.ts +++ b/backend/src/song/song.entity.ts @@ -1,4 +1,5 @@ import { Entity, Column, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; +import { IsNotEmpty, IsNumber, IsString } from 'class-validator'; import { Album } from '../album/album.entity'; @Entity() @@ -7,12 +8,16 @@ export class Song { id: number @Column() + @IsString() + @IsNotEmpty() title: string @Column() + @IsNumber() duration: number @Column() + @IsNumber() trackNumber: number @ManyToOne(() => Album, (album) => album.songs, { cascade: true }) diff --git a/backend/src/song/song.service.ts b/backend/src/song/song.service.ts index afb4543..e0e59b3 100644 --- a/backend/src/song/song.service.ts +++ b/backend/src/song/song.service.ts @@ -51,12 +51,12 @@ export class SongService { return null; } - songToUpdate.id = updateSongDto.id; - songToUpdate.title = updateSongDto.title; - songToUpdate.duration = updateSongDto.duration; - songToUpdate.trackNumber = updateSongDto.trackNumber; - songToUpdate.album = album; - const song = await this.songRepository.save(songToUpdate); + const song = await this.songRepository.update({ id: updateSongDto.id }, { + title: updateSongDto.title, + duration: updateSongDto.duration, + trackNumber: updateSongDto.trackNumber, + album: album, + }); return song; } else { console.error("SongService: update: IDs do not match"); diff --git a/frontend/src/app/album/[id]/page.tsx b/frontend/src/app/album/[id]/page.tsx index d405ef0..3ec0e13 100644 --- a/frontend/src/app/album/[id]/page.tsx +++ b/frontend/src/app/album/[id]/page.tsx @@ -44,13 +44,10 @@ export default function Page() { const formData = new FormData(event.currentTarget); try { - console.log(formData); if (formData.get('id') == "") { - const data = await createSong(formData); - console.log(data); + await createSong(formData); } else { - const data = await updateSong(formData); - console.log(data); + await updateSong(formData); } } catch (error) { console.error("Error creating Song: ", error); @@ -75,7 +72,7 @@ export default function Page() { const data = await getSong(parseInt(songId)); setFormModalTitle("Edit Song"); setFormModalButtonLabel("Save"); - setFormSongId(songId) + setFormSongId(songId); setFormAlbumId(albumId); setFormSongTitle(data.title); setFormSongDuration(data.duration); diff --git a/frontend/src/app/album/page.tsx b/frontend/src/app/album/page.tsx index a7ac174..2f590f2 100644 --- a/frontend/src/app/album/page.tsx +++ b/frontend/src/app/album/page.tsx @@ -39,7 +39,6 @@ export default function Page() { const formData = new FormData(event.currentTarget); try { - console.log(formData); if (formData.get('id') == "") { await createAlbum(formData); } else {