Open ThiagoBussola opened 3 months ago
Primeiramente, adicionei o arquivo .gitignore e no mesmo coloquei a pasta node_modules, visto que ela seria muito pesada para importar para o repositório. Após isso, realizei a criação da função FindByID e FindAll, que retorna um registro pelo id dele e retorna full respectivamente, seguindo no CRUD, criei a função Update utilizando a função findByIdAndUpdate do Mongoose e a função Delete utilizando findByIdAndDelete também do Mongoose.
Utilizando export default new BookService() eu removi a necessidade de instanciar toda vez que iriamos chamar uma função do Service. Fazendo isso, utilizando um nome de variável na hora do import (exemplo: bookService) consegui utilizar sem ter de ficar instanciando a toda nova função que eu iria executar. Adicionei também try/catch em todas as requisições para tratamento de erros.
Links: https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate() https://mongoosejs.com/docs/api/model.html#Model.findByIdAndDelete() https://expressjs.com/en/guide/routing.html https://mongoosejs.com/docs/api/model.html#Model.findById()
Repositório: https://github.com/rmcampigotto/esoft5sb-dpV/tree/main/aula02
RA: 22014205-2
Foi adicionado a pasta node_modules, mas por ser pesada foi excluída da subida para o repositório. Foram criados e atualizados o CRUD, utilizando as funções FindByID e FindAll para a busca de registros por ID e a listagem de todos os registros. Além disso, as funções Update e Delete foram desenvolvidas, utilizando os métodos findByIdAndUpdate e findByIdAndDelete do Mongoose. Para otimização, a instância do BookService foi exportada para evitar a necessidade de instanciá-la sempre que for utilizada, e o tratamento de erros foi adicionado try/catch em todas as requisições.
Links: https://mongoosejs.com/docs/api/model.html#Model.findById() https://mongoosejs.com/docs/api/model.html#Model.findAll() https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate() https://mongoosejs.com/docs/api/model.html#Model.findByIdAndDelete()
Repository: https://github.com/diogo-cedran/desafio-profissional/tree/main/CRUD%20API%20book
-Adicionei os métodos getById, getAll, update e delete junto do método create em BookController. Em routes.ts adicionei os caminhos dos novos métodos.
-Em BookService, fiz com que as variáveis dos métodos pasassem um tipo, como o professor aconselhou em aula (não passar book: any em todos os métodos).
-Em BookService, usei findByIdAndUpdate() e findByIdAndDelete() em update e delete.
-Para não precisar instanciar um novo BookService() em todos os métodos, em BookController criei um construtor que instanciou BookService() e utilizei ele nos métodos.
-Dentro dos métodos assincronos de BookController, adicionei try cacth, para caso acontecesse um erro, retorná-lo.
Para essa atividade, utilizei os seguintes sites: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
https://www.typescriptlang.org/pt/play#example/async-
https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await
Repositório: https://github.com/Rafael-Days/bookBussola
Para finalização e melhoria da atividade fiz os seguinte itens:
//https://stackoverflow.com/questions/10563644/how-to-specify-http-error-code-using-express-js //https://mongoosejs.com/docs/queries.html //https://javascript.info/custom-errors //https://javascript.info/import-export
https://github.com/IgorBondezam/esoft5b_dp/tree/master/atividade-13-03-2024-API-typescript
Relatório referente à realização da atividade proposta no dia 13/03/2024. Abaixo serão descritas algumas melhorias aplicadas ao projeto Book API.
Pensando em facilitar o deployment do banco de dados, foi gerada uma imagem Docker para a criação de um contêiner MongoDB com as configurações do projeto já iniciadas.
O contêiner encontra-se na pasta Docker, fora da pasta do projeto. Para iniciar o banco de dados já configurado, basta executar o script ./run.sh
, o qual irá gerar uma nova imagem com base no Dockerfile e iniciará o banco. O banco de dados é temporário; assim que o contêiner for encerrado, todos os dados serão perdidos.
O arquivo app.ts foi atualizado para utilizar as credenciais do contêiner MongoDB:
await mongoose.connect('mongodb://mongouser:Abacate123@0.0.0.0:27017/esoft5s-books');
Foi adicionado o .gitignore para remover arquivos desnecessário do repositório, foi utilizado um template presente no repositório oficial do Github.
Como solicitado, foram realizadas as operações de Criação, Leitura, Atualização e Remoção. As rotas existentes no projeto são:
/books
(GET): Busca todos os registros existentes no banco de dados./books/:id
(GET): Busca por um registro no banco de dados por meio do ID fornecido./books
(POST): Cria um novo registro no banco de dados./books/:id
(DELETE): Remove um registro no banco de dados por meio do ID fornecido./books/:id
(PUT): Atualiza um registro no banco de dados por meio do ID fornecido.Foram adicionados tratamentos de exceções try/catch nos métodos presentes em book.controller.ts. Embora sejam tratamentos básicos que fornecem pouca ou nenhuma informação de erro, este tratamento permite que a aplicação continue funcionando quando se depara com algum erro. Sem este tratamento, a aplicação iria parar em caso de exceções.
Foi corrigida a redundância existente na classe BookController, onde para cada método era instanciado um novo BookService. A solução utilizada foi realizar o import da classe BookService já instanciada. Isto foi realizado por meio da seguinte linha presente em book.service.ts:
export default new BookService();
https://github.com/B0nam/ESOFT5S-B-NODE/tree/main/2024-03-13
Finalização do CRUD perante ao código passado em aula !. Funções adicionadas:
'/booksGetAll'
'/booksById/:id'
'/booksUpdate/:id'
'/booksDelete/:id'
Tratamento de exceções : No nosso arquivo: 'book.controller.ts' e 'book.service.ts', foi adicionado o tratamento com try-catch!, isso faz com que o nosso código fique muito mais compreensivo, e nos ajuda a tratar os erros de maneira eficiente, fazendo com que nós não percamos tempo procurando aonde fazer a manutenção no código!.
Retorno com status : Em todas as operações pertencentes, eu inclui um retorno de status específico para cada operação, fazendo com que a interpretação se torne cada vez mais fácil perante ao usuário.
Arquivo: .gitignore : Foi adicionado no projeto um arquivo chamado: .gitignore, e o conteúdo desse arquivo é os módulos do node (node_modules), e isso foi necessário pois esse arquivo ficará muito grande com o tempo, sem contar que é mais fácil e seguro baixar os pacotes atualizados utilizando o NPM.
Atividade 13/03/2024 - Gabriel Bittencourt Camillo de Souza(RA-22257558-2)
Foi feito o CRUD completo no projeto, os seguintes métodos foram implementados:
Como boa prática, em cada um dos métodos foi usado o tratamento de excessões(try catch) com retorno de 500 em caso de falhas, foi criado um arquivo .gitignore, onde a pasta node_modules é excluída do controle de versão do git, resultando em um repositório mais leve e limpo.
Sites utilizados: https://stackoverflow.com/questions/52467266/nodejs-try-catch-and-res-status-usage https://www.alura.com.br/artigos/async-await-no-javascript-o-que-e-e-quando-usar https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate() https://kb.objectrocket.com/mongo-db/mongoose-delete-many-724 https://www.atlassian.com/br/git/tutorials/saving-changes/gitignore
Repositório: https://github.com/GabrielBitten/Desafio-profissional
Iniciei implementando atualizações no CRUD para incluir operações adicionais, como Update e Delete. Além disso, adicionei métodos FindByID e FindAll para oferecer uma gama mais ampla de possibilidades de busca. Para lidar com erros nas requisições, optei por utilizar blocos Try/catch.
Além das modificações no código, também criei um arquivo .gitignore para evitar a inclusão desnecessária da pasta inteira ao clonar, fazer pull e push do projeto.
Referências úteis para minha implementação incluem:
Meu repositório:
Hudson Matias - 22045746-2
Ao implementar o CRUD por find by id, update e delete, consegui fazer um retorno com try catch com os devidos http para cada um, retorno de 200, 201 e por assim em diante.
Não utilizei o .gitignore como sugerido em sala de aula. E também tive ajuda do chatgpt mas ele não me retornou os sites que ele utilizou.
Alguns dos sites de pesquisa abaixo:
Link do repositório:
https://github.com/Hudson-Matias/Desafio-Profissional-5-Semestre/tree/main/desafio-aula-13-03-2024
Um CRUD foi desenvolvido em sala, inicialmente incluindo apenas a funcionalidade de criação (create). Posteriormente, foram implementadas as operações de busca por ID (getById), listagem de todos os registros (findAll), atualização (update) e exclusão (delete) para completar todas as operações do CRUD. No entanto, devido ao tamanho considerável, a pasta node_modules precisou ser excluída para permitir o envio do projeto para o GitHub. Além disso, foi aplicado um tratamento de exceção (try-catch) para lidar com possíveis erros durante a criação, atualização ou busca por ID de um livro, garantindo um retorno adequado em caso de falhas.
Links:
https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate()
https://mongoosejs.com/docs/api/model.html#Model.findByIdAndDelete()
Repositório:
Foi feito uma implementação padrão de um CRUD para o catálogo de livros, com algumas melhorias, como, implementação do bloco try/catch para tratamento dos erros, ajuste no arquivo controller para remover a criação repetida de instâncias da classe BookService. Segue abaixo os endpoint criados:
/books
GET - Retorna todos os livros cadastrados/books/:id
GET - Retorna um livro específico/books
POST - Adiciona um novo livro/books/:id
PUT - Atualiza um livro específico/books/:id
DELETE - Deleta um livro específicoPontos de melhoria para ficar mais consistente e profissional:
Links:
Repositório:
Foram implementados os ajustes para inserção de try/catch e a quantidade de vezes que são instanciados os objetos para melhoria de performance melhorias que poderiam ser realizadas, a tratativa de dados de entrada para verificação de conformidade dos mesmos, bem como os arquivos de competência do node, serem inseridos no gitignore para melhor fluxo de trabalho
Fontes :
https://www.atlassian.com/br/git/tutorials/saving-changes/gitignore https://mongoosejs.com
Repositório :
https://github.com/Lucasszsd/esoftb/tree/main/13-03-2024
Nome : Lucas Dutra Braga RA : 22023711-2
Matheus Hoegen Baraldi - RA 22158952-2
Repositorio: https://github.com/matheushb/express-book-crud
Melhorias:
fontes:
Vlademir Junior RA: 22014195-2
Método create: O objetio era adicionar um novo livro ao banco de dados, recebendo os dados do livro através do corpo da requisição (req.body) e utilizando o BookService para criar um novo registro no banco de dados. Método getById: Obter um livro específico pelo seu ID, extraindo o ID do livro da URL da requisição (req.params.id) e consulta o banco de dados para encontrar o livro correspondente. Método update: Atualizar os dados de um livro existente, recebendo o ID do livro e os novos dados através da requisição e atualiza o registro correspondente no banco de dados. Método deleteBook: Serve para remover um livro do banco de dados pelo seu ID, ele usa o ID fornecido na URL da requisição para localizar e deletar o livro no banco de dados.
Foram adicionados os blocos try-catch para o tratamento de erro em aplicações web.
Fontes: https://stackoverflow.com/questions/22009364/is-there-a-try-catch-command-in-bash https://mongoosejs.com/docs/typescript.html
Link repositório: https://github.com/VladeJr/AtivDesafioV-13-03/tree/main
Criei a função findAll e findById, onde uma vai listar todos os livros cadastradas e a outra ira listar apenas o livro de determinado id, após isso foram criados o create: onde eu irei adicionar novos livros, o update: onde posso atualizar os livros já existente, e por fim o delete: onde posso deletar determinado livro de acordo com o Id. Também foi adicionado o try/catch em todas as funções, para lidar com as exceptions durante a execução do código.
Fonte: https://mongoosejs.com/docs/api/model.html#Model.find() https://mongoosejs.com/docs/api/model.html#Model.findById() https://mongoosejs.com/docs/api/model.html#Model.create() https://mongoosejs.com/docs/api/model.html#Model.findByIdAndUpdate() https://mongoosejs.com/docs/api/model.html#Model.findByIdAndDelete()
Link do repositório: https://github.com/AlissonKobayashi/esoft5s-b-df/tree/main
Gabriel Vinicius Maiolli 22120200-2
Desenvolvi duas funções chamadas findAll e findById. A primeira função, findAll, tem como objetivo exibir uma lista de todos os livros cadastrados, enquanto a segunda, findById, retorna apenas o livro correspondente a um ID específico. Posteriormente, criei a função create, que permite adicionar novos livros ao sistema, e a função update, que possibilita a atualização de informações sobre os livros já existentes. Por último, implementei a função delete, que permite a remoção de um livro específico com base no seu ID, todos esses endpoints estão conectados ao banco de dados.
Fontes: https://mongoosejs.com/docs/guide.html https://stackoverflow.com/questions/25623041/how-to-configure-dynamic-routes-with-express-js
Link do repositorio: https://github.com/BielMaiolli/Type_Crud_Completo
Rodrigo Yaedu Pinesso RA: 22014201-2
Fiz as funções FindAll e FindById, nas quais me permite pesquisar todos ou separadamente os livros no banco de dados do sistema, também foi feita a função Delete, na qual me permite apagar Ids do sistema e a Update, na qual me permite atualizar e alterar as informações de um Id e foi inserida no sistema a função Create, na qual permite colocar mais itens no banco de dados.
Fontes:
Repositório:
Murilo Alves Pereira Varoto Ra_2221590-2
No projeto, foi implementado um CRUD completo, oferecendo os seguintes métodos: create: Este método cria um novo livro. findById: Permite buscar um livro pelo seu ID. findAll: Recupera todos os livros existentes. update: Atualiza um livro com base no seu ID. deleteById: Remove um livro com base no seu ID. deleteAll: Remove todos os livros do sistema.
Para garantir boas práticas de desenvolvimento, cada um desses métodos inclui tratamento de exceções (utilizando try-catch), com retorno de status 500 em caso de falha. Além disso, foi criado um arquivo .gitignore para excluir a pasta node_modules do controle de versão do Git, resultando em um repositório mais leve e organizado
https://www.typescriptlang.org/pt/play#example/async- https://mongoosejs.com/docs/queries.html https://javascript.info/import-export https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
Termine as operações de CRUD da book API e escreva um relatório e aponte as melhorias necessárias para que a API fique mais consistênte e profissional. Lembre-se de apontar o que mudou, como melhorar e a fonte desta informação.