Conversation
| }; | ||
| await this.postDB.createPost(post); | ||
| } catch (error: any) { | ||
| throw new Error(error.message); |
There was a problem hiding this comment.
Isso aqui não serve pra muita coisa! A classe Error já é a mais genérica o possível. Pra que capturar o erro e lança um erro genérico com as mesmas informações (.message)?
Dica: ter try/catch apenas nas camadas de data (para obter o .sqlMessage) e na de controller, para responder a requisição.
| friend2_id: string | ||
| ): Promise<postFeedJoin[]> => { | ||
| try { | ||
| const friendsFeed = await this.postDB.showFriendsPosts( |
There was a problem hiding this comment.
A classe de bancos de dados deve ter apenas métodos de CRUD. Toda a lógica de negócio deve permanecer na camada de business. showFriendsPosts é um nome que indica que o db sabe demais sobre a regra de negócios.
A ideia não é que db e business tenham sempre os mesmos nomes, porque eles não fazem a mesma coisa!
| throw new Error(error.sqlMessage || error.message); | ||
| } | ||
| }; | ||
| } |
There was a problem hiding this comment.
Mesmo comentário do PostBusiness pra esta parte: os métodos do userDatabase sabem demais.
A que se refere undoFriendship? É um delete? Então o método deveria se chamar delete.
E checkFriends, é um insert, update, delete?
| addFriend(friend: friendRelation): Promise<void>; | ||
| checkFriends(): Promise<friendRelation[]>; | ||
| undoFriendship(id: string): Promise<void>; | ||
| } |
There was a problem hiding this comment.
Comece as interfaces com I, para não confundir.
IUserRepository, IPostRepository
| postRouter.post("/create", (req, res) => postController.createPost(req, res)); | ||
| postRouter.get("/getAll", (req, res) => postController.getAllPosts(req, res)); | ||
| postRouter.get("/get/:id", (req, res) => postController.getPostById(req, res)); | ||
| postRouter.get("/friendsPosts/:author_id",(req, res) => postController.showFriendsPosts(req, res) ) |
There was a problem hiding this comment.
Como os métodos dos controllers não alteram os parâmetros, bastaria ter passado postController.método para o postRouter.method, não precisa da arrow function.
| @@ -0,0 +1,8 @@ | |||
| export class CustomError extends Error { | |||
| statusCode: number; | |||
There was a problem hiding this comment.
Esse statusCode poderia ter sido usado nos controllers.
| for (let friend of result) { | ||
| friends.push(friend); | ||
| } | ||
| return friends; |
There was a problem hiding this comment.
Por que não simplesmente retornar o result?
| throw new Error(error.sqlMessage || error.message); | ||
| } | ||
| }; | ||
| public undoFriendship = async (id: string): Promise<void> => { |
There was a problem hiding this comment.
Um nome melhor seria deleteRelationById
| app.use(express.json()); | ||
| app.use(cors()); | ||
|
|
||
| app.listen(3003, () => { |
There was a problem hiding this comment.
O que aconteceu com o process.env.PORT?
labenu-bot
left a comment
There was a problem hiding this comment.
Parabéns pela entrega!
Requisitos do projeto ✅
| Implementações | Feito |
|---|---|
| Tabelas de usuários e posts | ✅ |
| Requisições válidas de cadastro e criação de post são salvas no banco | ✅ |
| Requisição de buscar post por id devolve as informações corretas | ✅ |
| Requisições inválidas devolvem respostas de erro claras | ✅ |
| Fez ao menos um desafio | ✅ |
| Fez quatro ou mais desafios | ✅ |
| Fez oito ou mais desafios | - |
| Feedback do código | Feito |
|---|---|
| Isolou as entidades da aplicação (usuários e posts) | ✅ |
| Isolou as configurações e queries para o banco de dados | ✅ |
| Isolou as configurações do servidor das lógicas de negócio | ✅ |
| Utilizou corretamente as sintaxes de classes | ✅ |
| Utilizou corretamente os routers do Express | ✅ |
Comentários da pessoa avaliadora
Muito, muito bom!!
Fiz alguns comentários no código do PR, pra ficar melhor ainda!
Recomendo fazer commits aderindo às sugestões (qualquer coisa, pode me chamar)
Seria legal utilizar os CustomErrors direitinho, eles deixam o código bem limpo.
Parabéns!
Análise realizada por: Iago Soriano
Commit Inicial