From 495f56aa2b37fcc7b633fb7ed5a6925a92c509ce Mon Sep 17 00:00:00 2001 From: Phill Pover Date: Mon, 7 Apr 2025 07:54:37 +0100 Subject: [PATCH] Fixing validator --- backend/src/album/album.entity.ts | 4 ++-- backend/src/main.ts | 2 +- backend/src/song/song.entity.ts | 4 ++-- frontend/package-lock.json | 6 ++++++ frontend/package.json | 1 + frontend/src/app/album/page.tsx | 1 - 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/backend/src/album/album.entity.ts b/backend/src/album/album.entity.ts index 473a51a..44d31b3 100644 --- a/backend/src/album/album.entity.ts +++ b/backend/src/album/album.entity.ts @@ -2,12 +2,12 @@ import { Entity, Column, OneToMany, PrimaryGeneratedColumn } from 'typeorm'; import { IsNotEmpty, IsString } from 'class-validator'; import { Song } from '../song/song.entity'; -@Entity() +@Entity("album") export class Album { @PrimaryGeneratedColumn() id: number - @Column() + @Column({ unique: true }) @IsString() @IsNotEmpty() title: string diff --git a/backend/src/main.ts b/backend/src/main.ts index 53ed861..3178584 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -12,7 +12,7 @@ async function bootstrap() { credentials: true, allowedHeaders: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept, Observe', }); - app.useGlobalPipes(new ValidationPipe()); + app.useGlobalPipes(new ValidationPipe({transform: true})); await app.listen(process.env.PORT ?? 3000); } bootstrap(); diff --git a/backend/src/song/song.entity.ts b/backend/src/song/song.entity.ts index 37e3eab..f70d0fd 100644 --- a/backend/src/song/song.entity.ts +++ b/backend/src/song/song.entity.ts @@ -2,12 +2,12 @@ import { Entity, Column, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; import { IsNotEmpty, IsNumber, IsString } from 'class-validator'; import { Album } from '../album/album.entity'; -@Entity() +@Entity("song") export class Song { @PrimaryGeneratedColumn() id: number - @Column() + @Column({ unique: true }) @IsString() @IsNotEmpty() title: string diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 4bc6c7a..64ac6d6 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -13,6 +13,7 @@ "@mui/icons-material": "^7.0.1", "@mui/material": "^7.0.1", "bootstrap": "^5.3.5", + "class-transformer": "^0.5.1", "next": "15.2.4", "primereact": "^10.9.4", "react": "^19.0.0", @@ -3996,6 +3997,11 @@ "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 17c956e..b410342 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -15,6 +15,7 @@ "@mui/icons-material": "^7.0.1", "@mui/material": "^7.0.1", "bootstrap": "^5.3.5", + "class-transformer": "^0.5.1", "next": "15.2.4", "primereact": "^10.9.4", "react": "^19.0.0", diff --git a/frontend/src/app/album/page.tsx b/frontend/src/app/album/page.tsx index 054cc8a..6c31703 100644 --- a/frontend/src/app/album/page.tsx +++ b/frontend/src/app/album/page.tsx @@ -46,7 +46,6 @@ export default function Page() { await updateAlbum(formData); } revalidateAlbums(); - revalidateAlbums(); const data = await getAlbums(); setAlbums(data); } catch (error) {