Controller
Nas aulas, já discutimos que podemos criar mais uma camada em nossa aplicação para torná-la compatível com a ideia de uma API. Trata-se do Controller
, que se comunica com a camada Service
do nosso programa.
Veja como seria o MusicaController
:
import { Request, Response } from 'express';
import { MusicaService } from '../service/MusicaService';
import { Musica } from '../entity/Musica';
export class MusicaController {
private musicaService: MusicaService;
constructor() {
this.musicaService = new MusicaService();
}
async criar(req: Request, res: Response): Promise<Response> {
try {
const musica: Musica = req.body;
const novaMusica = await this.musicaService.criar(musica);
return res.status(201).json(novaMusica);
} catch (error) {
return res.status(400).json({ message: 'Erro ao criar musica.', error: error.message });
}
}
async listar(req: Request, res: Response): Promise<Response> {
try {
const musicas = await this.musicaService.listar();
return res.status(200).json(musicas);
} catch (error) {
return res.status(500).json({ message: 'Erro ao listar musicas.', error: error.message });
}
}
async atualizar(req: Request, res: Response): Promise<Response> {
try {
const id = parseInt(req.params.id);
const musica: Partial<Musica> = req.body;
await this.musicaService.atualizar(id, musica);
return res.status(200).json({ message: `Musica com ID ${id} atualizado com sucesso.` });
} catch (error) {
return res.status(400).json({ message: 'Erro ao atualizar musica.', error: error.message });
}
}
async remover(req: Request, res: Response): Promise<Response> {
try {
const id:number = parseInt(req.params.id);
const musica = await this.musicaService.remover(id);
return res.status(200).json({ message: `Musica com ID ${id} removido com sucesso.`, musica });
} catch (error) {
return res.status(400).json({ message: 'Erro ao remover musica.', error: error.message });
}
}
}