Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spotenu backend projetofinal #49

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions semana18/Spotenu/src/business/MusicBusiness.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,16 @@ 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 bandSearchByEmailOrNickname(emailOrNickname: string) {
return new MusicDatabase().bandSearchByEmailOrNickname(emailOrNickname)
}
public async addNewGenre(newGenreName: string, genreId: string) {
return new MusicDatabase().addNewGenre(newGenreName, genreId)
}
public async getAllGenres() {
return new MusicDatabase().getAllGenres()
}
}
4 changes: 2 additions & 2 deletions semana18/Spotenu/src/business/UserBusiness.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ 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)

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")
Expand Down
45 changes: 40 additions & 5 deletions semana18/Spotenu/src/controller/MusicController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down Expand Up @@ -39,17 +40,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!")
}
Expand All @@ -62,4 +63,38 @@ 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();
}
}

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();
}
}
}
1 change: 1 addition & 0 deletions semana18/Spotenu/src/data/BaseDatabase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";


Expand Down
23 changes: 18 additions & 5 deletions semana18/Spotenu/src/data/MusicDatabase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,32 @@ 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}';
`)
}
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}');
`)
}
public async getAllGenres() {
return await super.getConnection().raw(`
SELECT * FROM ${BaseDataBase.GENRE_TABLE_NAME};
`)
}
}
5 changes: 4 additions & 1 deletion semana18/Spotenu/src/routes/MusicRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +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);
//Music genre
musicRouter.put("/band/add-new-genre", new MusicController().addNewGenre);
musicRouter.get("/band/genres", new MusicController().getAllGenres);