Skip to content

RenatoAlexandrini/ProjetoLabook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Labook

Badge Finalizado


O Projeto Labook tem como função, colocar em prática os conceitos de arquitetura de software, como a Arquitetura em três camadas(Data, Controller e Business), rotas com Express Router, Data Trasnfer Object(DTO), arquitetura limpa junto com a Inversão de dependências e introduzindo os conceitos de validação por token e criptografia.

Sendo assim o projeto possuí uma estrutura que simula uma API de redes sociais, contendo as entidades principais de usuários e postagens junto com entidades complementares, de amizades, likes e comentários, realizado inteiramente em Typescript e SQL.


Como Testar

Link da Documentação via Postman:

https://documenter.getpostman.com/view/24755055/2s935oM4kC

- Com o Postman instalado em seu computador, basta abrir a documentação e clicar no botão para testar diretamente no Postman.

Para testar localmente:

- inicie o Git Bash em uma pasta e digite:
- git clone https://github.com/RenatoAlexandrini/ProjetoLabook
- npm install
- npm run migrations
- npm run start
- Em cada endpoint, substitua o "https://projeto-jemison-labook11-vylc.onrender.com" por "http://localhost:3003"

Endpoints:

Criar Usuário:

Este endpoint simula o cadastro de um novo usuário na nossa rede social. Ele não necessita de nenhum tipo de autorização e deve receber os dados nome, email e password através do "body", fazendo a verificação dos dados como: se o email já existe um email igual no banco de dados, se o email de cadastro possui uma estrutura padrão de email (nome@provedor.com) e se a senha é considerada uma senha forte, contendo no mínimo oito caracteres, sendo eles ao menos uma letra maíscula, uma letra minúscula, um número e um caracter especial.

Após a verificação ele deve gerar um novo usuário contendo a senha criptografada e retornando uma mensagem de sucesso, o novo usuário criado, para verificação e um token que deverá ser utilizado nos demais endpoints.

Login:

Este endpoint simula o login de um usuário, recebendo através do "body" os dados email e senha e fazendo a verificação no banco de dados, por fim retornando um token que será necessário na autenticação dos demais endpoints.

Como as senhas no banco estão criptografadas, para facilitar o teste do projeto, dentro da pasta "migrations" existe um arquivo em JSON contendo os usuários com as senhas sem a criptografia.

Criar uma Postagem:

Este endpoint, simula a criação de um novo post, sendo necessário a adição do token no "header" para a autorização e então, através do "body" devem ser passados a url de uma imagem, uma descrição e um tipo entre "normal" e "event". sendo este tipo opcional, no caso do dado tipo estar vazio ou não existir no body, por padrão o pos terá o tipo "normal", o ID do autor do post não é adicionado ao "body", pois ele é retirado do token de autenticação do usuário.

Este endpoint retorna uma mensagem de sucesso e o post recém criado, apenas para facilitar a visualização.

Buscar um Post através do ID:

Este endpoint deve receber um token no "header" e no "body" o ID de um post, ele então faz a verificação se o post existe no banco de dados e então retorna o post escolhido.

Buscar um Post através do tipo:

Este endpoint retorna um Post através do seu tipo("normal" ou "event"), para isso é necessário passar através do "header" o token de autenticação e o tipo através do body, como neste endpoint não existe um padrão de tipo, como o endpoint de criação, obrigatóriamente é necessário passar um dos dois tipos possíveis.

Este endpoint retorna todos os Posts do tipo escolhdo, ordenados pela data de criação deles.

Criar uma nova amizade:

Este endpoint deve receber através do "header" o token de autenticação e o id de um outro usuário através do "body", então ele verifica se o id do usuário existe no banco de dados, verifica se o id recebido pelo "body" não é igual ao id retirado do token de autorização, verifica se a amizade entre os dois usuários já existe, para então por fim criar uma nova amizade.

Este endpoint retorna uma mensagem de sucesso e a amizade criada, para a visualização.

Deletar uma amizade:

Este endpoint deve receber através do "header" o token de autenticação e o id de um outro usuário através do "body", ele verifica se a amizade entre os dois usuários já existe, então ele deleta esta relção de amizade.

Este endpoint retorna apenas uma mensagem de sucesso na remoção da amizade.

Criar uma relação de like em um Post:

Este endpoint deve receber um token de autorização através do "header" e o ID de um post através do "body", então ele verifica se o post existe no banco de dados e se a relação de like entre o usuário e o post já existe no banco de dados, para então criar a relção.

Este endpoint retorna uma mensagem de sucesso e a relação criada, para visualização.

Deletar arelação de like de um Post:

Este endpoint deve receber através do "header" o token de autenticação e o id de um post através do "body", ele verifica se já foi dado o like neste post, então ele deleta esta relção.

Este endpoint retorna apenas uma mensagem de sucesso na remoção do like.

Criar um comentário:

Este endpoint recebe um token de autorização através do "header" e o id de um post através do "Body", ele apenas verifica se o post informado existe para então criar um comentário, não existindo nenhuma outa restrição, sendo possível o mesmo usuário comentar diversas vezes o mesmo post.

Este endpoint retorna uma mensagem de sucesso e o comentário, para visualização.

Buscar os comentários de um usuário:

Endpoint que recebe um token de autorização através do "header" e utiliza o ID do usuário contido nele para retornar todos os comentários em posts do usuário, ordenados pela data de criação.

Buscar os ultimos Posts dos amigos do usuário:

Este endpoint recebe um token de autorização através do "header" e utiliza o ID retirado deste token para retornar os ultimos posts criados pelos amigos do usuário. por padrão, são exibidos os cinco ultimos posts, porém é possível passar através do "body" um limite maior, sendo que se este limite for menor que cinco ou não existir o endpoint irá manter o padrão de cinco posts.


Técnicas e tecnologias utilizadas

  • Typescript
  • SQL


Autor:


Renato Alexandrini

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published