Skip to content

laBook_backEnd#62

Open
Tapioquito wants to merge 12 commits intomasterfrom
projeto-labook
Open

laBook_backEnd#62
Tapioquito wants to merge 12 commits intomasterfrom
projeto-labook

Conversation

@Tapioquito
Copy link
Copy Markdown
Collaborator

Commit Inicial

};
await this.postDB.createPost(post);
} catch (error: any) {
throw new Error(error.message);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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(
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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);
}
};
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>;
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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) )
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esse statusCode poderia ter sido usado nos controllers.

for (let friend of result) {
friends.push(friend);
}
return friends;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Por que não simplesmente retornar o result?

throw new Error(error.sqlMessage || error.message);
}
};
public undoFriendship = async (id: string): Promise<void> => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Um nome melhor seria deleteRelationById

app.use(express.json());
app.use(cors());

app.listen(3003, () => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O que aconteceu com o process.env.PORT?

Copy link
Copy Markdown

@labenu-bot labenu-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants