- Para excluir um favorito precisaremos de um método no serviço:
// src/services/favoriteService.ts
import { Favorite } from "../models/favorite"
export const favoriteService = {
// ...
},
delete: async (userId: number, courseId: number) => {
await Favorite.destroy({
where: {
userId,
courseId
}
})
}
}
- Depois basta criar o método no controlador:
// src/controllers/favorites-controller.ts
import { Response } from 'express'
import { AuthenticatedRequest } from "../middlewares/auth";
import { favoriteService } from '../services/favoriteService'
export const favoritesController = {
// ...
},
// DELETE /favorites/:id
delete: async (req: AuthenticatedRequest, res: Response) => {
const userId = req.user!.id
const courseId = req.params.id
try {
await favoriteService.delete(userId, Number(courseId))
return res.status(204).send()
} catch (err) {
if (err instanceof Error) {
return res.status(400).json({ message: err.message })
}
}
}
}
- E por último criar a rota:
// src/routes.ts
// ...
router.get('/favorites', ensureAuth, favoritesController.index)
router.post('/favorites', ensureAuth, favoritesController.save)
router.delete('/favorites', ensureAuth, favoritesController.delete)
export { router }