From a59fc94e740f243b2184df0a40f04a42bf104560 Mon Sep 17 00:00:00 2001 From: vitor-slopes Date: Mon, 22 Jun 2020 10:39:08 -0300 Subject: [PATCH 1/4] changes on bandApproval endpoint --- semana18/Spotenu/src/business/MusicBusiness.ts | 11 +++++++---- semana18/Spotenu/src/controller/MusicController.ts | 10 +++++----- semana18/Spotenu/src/data/MusicDatabase.ts | 12 +++++++----- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/semana18/Spotenu/src/business/MusicBusiness.ts b/semana18/Spotenu/src/business/MusicBusiness.ts index fdeab5de..cc820970 100644 --- a/semana18/Spotenu/src/business/MusicBusiness.ts +++ b/semana18/Spotenu/src/business/MusicBusiness.ts @@ -5,10 +5,13 @@ export class MusicBusiness { public async bandList() { return new MusicDatabase().bandList } - public async bandApprove(id: string) { - return new MusicDatabase().bandApprove(id) + public async bandApprove(emailOrNickname: string) { + return new MusicDatabase().bandApprove(emailOrNickname) } - public async bandSearchById(id: string) { - return new MusicDatabase().bandSearchById(id) + // public async bandSearchById(id: string) { + // return new MusicDatabase().bandSearchById(id) + // } + public async bandSearchByEmailOrNickname(emailOrNickname: string) { + return new MusicDatabase().bandSearchByEmailOrNickname(emailOrNickname) } } \ No newline at end of file diff --git a/semana18/Spotenu/src/controller/MusicController.ts b/semana18/Spotenu/src/controller/MusicController.ts index 631267f2..4373b6c5 100644 --- a/semana18/Spotenu/src/controller/MusicController.ts +++ b/semana18/Spotenu/src/controller/MusicController.ts @@ -39,17 +39,17 @@ export class MusicController { throw new Error("Somente um perfil administrador pode aprovar uma banda.") } - const id = req.body.id - if (!req.body.id) { + const emailOrNickname = req.body.emailOrNickname + if (!req.body.emailOrNickname) { throw new Error("O campo da banda deve ser preenchido.") } - const bandSearchById = await new MusicDatabase().bandSearchById(id) + const bandSearchById = await new MusicDatabase().bandSearchByEmailOrNickname(emailOrNickname) if (!bandSearchById[0][0]) { - throw new Error("A id informada não existe.") + throw new Error("Usuário não encontrado.") } - const musicDatabase = await new MusicDatabase().bandApprove(id) + const musicDatabase = await new MusicBusiness().bandApprove(emailOrNickname) if (!musicDatabase[0].changedRows) { throw new Error("Esta banda ja foi aprovada!") } diff --git a/semana18/Spotenu/src/data/MusicDatabase.ts b/semana18/Spotenu/src/data/MusicDatabase.ts index 0783250c..f669ab8d 100644 --- a/semana18/Spotenu/src/data/MusicDatabase.ts +++ b/semana18/Spotenu/src/data/MusicDatabase.ts @@ -9,19 +9,21 @@ export class MusicDatabase extends BaseDataBase { OR band_approval = 1; `) } - public async bandApprove(id: string) { + public async bandApprove(emailOrNickname: string) { return await super.getConnection().raw(` UPDATE sagan_vitor_db.${BaseDataBase.USER_TABLE_NAME} SET band_approval = '1' - WHERE id = '${id}' - && band_approval = '0'; + WHERE name = '${emailOrNickname}' + OR nickname = '${emailOrNickname}' + AND band_approval = '0'; `) } - public async bandSearchByEmail(email: string) { + public async bandSearchByEmailOrNickname(emailOrNickname: string) { return await super.getConnection().raw(` SELECT * FROM ${BaseDataBase.USER_TABLE_NAME} - WHERE email = '${email}' + WHERE email = '${emailOrNickname}' + OR nickname = '${emailOrNickname}'; `) } } \ No newline at end of file From ca1430c500fd01f1b15c8bfb56beb9ace3e707ba Mon Sep 17 00:00:00 2001 From: vitor-slopes Date: Mon, 22 Jun 2020 12:09:24 -0300 Subject: [PATCH 2/4] fix login method --- semana18/Spotenu/src/business/UserBusiness.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/semana18/Spotenu/src/business/UserBusiness.ts b/semana18/Spotenu/src/business/UserBusiness.ts index 3efdc2ba..7783a3cf 100644 --- a/semana18/Spotenu/src/business/UserBusiness.ts +++ b/semana18/Spotenu/src/business/UserBusiness.ts @@ -23,7 +23,7 @@ export class UserBusiness { public async login(email: string, password: string) { - const musicDatabase = await new MusicDatabase().bandSearchByEmail(email) + const musicDatabase = await new MusicDatabase().bandSearchByEmailOrNickname(email) const musicDatabaseRow = musicDatabase[0][0] console.log('musicDatabase[0][0] on Userbusiness ', musicDatabaseRow) @@ -31,7 +31,7 @@ export class UserBusiness { if (!musicDatabaseRow) { throw new Error("Cadastro não identificado") } - const databasePassword = await new MusicDatabase().bandSearchByEmail(email) + const databasePassword = await new MusicDatabase().bandSearchByEmailOrNickname(email) if (!musicDatabaseRow) { throw new Error("Email ou password inválidos") From d9ff9f0348952f0887eadf4df8c01086c9a70e29 Mon Sep 17 00:00:00 2001 From: vitor-slopes Date: Mon, 22 Jun 2020 15:39:53 -0300 Subject: [PATCH 3/4] endpoint addNewGenre created --- .../Spotenu/src/business/MusicBusiness.ts | 6 ++--- .../Spotenu/src/controller/MusicController.ts | 22 +++++++++++++++++++ semana18/Spotenu/src/data/BaseDatabase.ts | 1 + semana18/Spotenu/src/data/MusicDatabase.ts | 6 +++++ semana18/Spotenu/src/routes/MusicRouter.ts | 2 ++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/semana18/Spotenu/src/business/MusicBusiness.ts b/semana18/Spotenu/src/business/MusicBusiness.ts index cc820970..ae0fcef4 100644 --- a/semana18/Spotenu/src/business/MusicBusiness.ts +++ b/semana18/Spotenu/src/business/MusicBusiness.ts @@ -8,10 +8,10 @@ export class MusicBusiness { public async bandApprove(emailOrNickname: string) { return new MusicDatabase().bandApprove(emailOrNickname) } - // public async bandSearchById(id: string) { - // return new MusicDatabase().bandSearchById(id) - // } public async bandSearchByEmailOrNickname(emailOrNickname: string) { return new MusicDatabase().bandSearchByEmailOrNickname(emailOrNickname) } + public async addNewGenre(newGenreName: string, genreId: string) { + return new MusicDatabase().addNewGenre(newGenreName, genreId) + } } \ No newline at end of file diff --git a/semana18/Spotenu/src/controller/MusicController.ts b/semana18/Spotenu/src/controller/MusicController.ts index 4373b6c5..7e9ad6f8 100644 --- a/semana18/Spotenu/src/controller/MusicController.ts +++ b/semana18/Spotenu/src/controller/MusicController.ts @@ -4,6 +4,7 @@ import { MusicDatabase } from "../data/MusicDatabase"; import { UserBusiness } from "../business/UserBusiness"; import { BaseDataBase } from "../data/BaseDatabase"; import { MusicBusiness } from "../business/MusicBusiness"; +import { IdGenerator } from "../services/IdGenerator"; export class MusicController { @@ -62,4 +63,25 @@ export class MusicController { await BaseDataBase.destroyConnection(); } } + + async addNewGenre(req: Request, res: Response) { + try { + const newGenreName = req.body.newGenreName + + if (!newGenreName) { + throw new Error("Favor preencher o campo Gênero.") + } + const genreId = new IdGenerator().generateId() + + await new MusicBusiness().addNewGenre(newGenreName, genreId) + + res.status(200).send(`Gênero '${newGenreName}' criado com sucesso!`) + + } catch (err) { + err.code === "ER_DUP_ENTRY" && res.status(400).send("Error. O gênero desejado ja existe.") + res.status(400).send(err.message) + } finally { + await BaseDataBase.destroyConnection(); + } + } } \ No newline at end of file diff --git a/semana18/Spotenu/src/data/BaseDatabase.ts b/semana18/Spotenu/src/data/BaseDatabase.ts index df417953..5d27288a 100644 --- a/semana18/Spotenu/src/data/BaseDatabase.ts +++ b/semana18/Spotenu/src/data/BaseDatabase.ts @@ -8,6 +8,7 @@ export abstract class BaseDataBase { private static KNEX_CONNECTION: Knex | null = null; protected static USER_TABLE_NAME = "spotenu_users"; + protected static GENRE_TABLE_NAME = "spotenu_genre"; protected static REFRESHTOKEN_TABLE_NAME = "spotenu_refreshtoken"; diff --git a/semana18/Spotenu/src/data/MusicDatabase.ts b/semana18/Spotenu/src/data/MusicDatabase.ts index f669ab8d..9e478af9 100644 --- a/semana18/Spotenu/src/data/MusicDatabase.ts +++ b/semana18/Spotenu/src/data/MusicDatabase.ts @@ -26,4 +26,10 @@ export class MusicDatabase extends BaseDataBase { OR nickname = '${emailOrNickname}'; `) } + public async addNewGenre(newGenreName: string, genreId: string) { + return await super.getConnection().raw(` + INSERT INTO ${BaseDataBase.GENRE_TABLE_NAME} + (genre_id, genre_name) VALUES ('${genreId}', '${newGenreName}'); + `) + } } \ No newline at end of file diff --git a/semana18/Spotenu/src/routes/MusicRouter.ts b/semana18/Spotenu/src/routes/MusicRouter.ts index abbf49e4..e62d7dd2 100644 --- a/semana18/Spotenu/src/routes/MusicRouter.ts +++ b/semana18/Spotenu/src/routes/MusicRouter.ts @@ -6,3 +6,5 @@ export const musicRouter = express.Router(); //SignUp musicRouter.get("/bandlist", new MusicController().bandList); musicRouter.put("/band/aprove", new MusicController().bandApprove); +//Add new music genre +musicRouter.put("/band/add-new-genre", new MusicController().addNewGenre); From fac4a6a918b9fd762c178c84009b07d29c9c834d Mon Sep 17 00:00:00 2001 From: vitor-slopes Date: Mon, 22 Jun 2020 15:40:18 -0300 Subject: [PATCH 4/4] endpoit getAllGenres created --- semana18/Spotenu/src/business/MusicBusiness.ts | 3 +++ .../Spotenu/src/controller/MusicController.ts | 15 ++++++++++++++- semana18/Spotenu/src/data/MusicDatabase.ts | 5 +++++ semana18/Spotenu/src/routes/MusicRouter.ts | 5 +++-- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/semana18/Spotenu/src/business/MusicBusiness.ts b/semana18/Spotenu/src/business/MusicBusiness.ts index ae0fcef4..63d1ca30 100644 --- a/semana18/Spotenu/src/business/MusicBusiness.ts +++ b/semana18/Spotenu/src/business/MusicBusiness.ts @@ -14,4 +14,7 @@ export class MusicBusiness { public async addNewGenre(newGenreName: string, genreId: string) { return new MusicDatabase().addNewGenre(newGenreName, genreId) } + public async getAllGenres() { + return new MusicDatabase().getAllGenres() + } } \ No newline at end of file diff --git a/semana18/Spotenu/src/controller/MusicController.ts b/semana18/Spotenu/src/controller/MusicController.ts index 7e9ad6f8..07ed7a2d 100644 --- a/semana18/Spotenu/src/controller/MusicController.ts +++ b/semana18/Spotenu/src/controller/MusicController.ts @@ -67,7 +67,7 @@ export class MusicController { async addNewGenre(req: Request, res: Response) { try { const newGenreName = req.body.newGenreName - + if (!newGenreName) { throw new Error("Favor preencher o campo Gênero.") } @@ -84,4 +84,17 @@ export class MusicController { await BaseDataBase.destroyConnection(); } } + + async getAllGenres(req: Request, res: Response) { + try { + const allGenres = await new MusicBusiness().getAllGenres() + + res.status(200).send(allGenres[0]) + + } catch (err) { + res.status(400).send(err.message) + } finally { + await BaseDataBase.destroyConnection(); + } + } } \ No newline at end of file diff --git a/semana18/Spotenu/src/data/MusicDatabase.ts b/semana18/Spotenu/src/data/MusicDatabase.ts index 9e478af9..bab65788 100644 --- a/semana18/Spotenu/src/data/MusicDatabase.ts +++ b/semana18/Spotenu/src/data/MusicDatabase.ts @@ -32,4 +32,9 @@ export class MusicDatabase extends BaseDataBase { (genre_id, genre_name) VALUES ('${genreId}', '${newGenreName}'); `) } + public async getAllGenres() { + return await super.getConnection().raw(` + SELECT * FROM ${BaseDataBase.GENRE_TABLE_NAME}; + `) + } } \ No newline at end of file diff --git a/semana18/Spotenu/src/routes/MusicRouter.ts b/semana18/Spotenu/src/routes/MusicRouter.ts index e62d7dd2..190c7580 100644 --- a/semana18/Spotenu/src/routes/MusicRouter.ts +++ b/semana18/Spotenu/src/routes/MusicRouter.ts @@ -3,8 +3,9 @@ import { MusicController } from "../controller/MusicController"; export const musicRouter = express.Router(); -//SignUp +//Band musicRouter.get("/bandlist", new MusicController().bandList); musicRouter.put("/band/aprove", new MusicController().bandApprove); -//Add new music genre +//Music genre musicRouter.put("/band/add-new-genre", new MusicController().addNewGenre); +musicRouter.get("/band/genres", new MusicController().getAllGenres);