Coder Social home page Coder Social logo

milenasuzumura / project-talker-manager Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 769 KB

Talker Manager é um projeto focado em desenvolver uma API de cadastro e pesquisa de talkers utilizando operações CRUD (Create, Read, Update e Delete).

JavaScript 98.77% Shell 1.23%
javascrpit js node node-js nodejs higher-order-functions hofs nodemon nodemon-express docker docker-compose express expressjs

project-talker-manager's Introduction

Talker Manager

Talker Manager é um projeto focado em desenvolver uma API de cadastro e pesquisa de talkers utilizando operações CRUD (Create, Read, Update e Delete).

OBS: ESSE PROJETO FOI DESENVOLVIDO NA TRYBE.

Técnologias usadas

  • JavaScript;
  • Node.js;
  • Express.js;
  • Docker;
  • Higher Order Functions(HOF);
  • Nodemon;

Rotas, entradas e saídas

Endpoint GET /talker
Utilizado para retornar todos os palestrantes existentes no banco de dados.
Exemplo de entrada:
imagem-exemplo-entrada-get-talker
Exemplo de entrada:
imagem-exemplo-saida-get-talker
Endpoint GET /talker/:id
Utilizado para retornar o palestrante com o id correspondente no banco de dados.
Exemplo de entrada:
imagem-exemplo-entrada-correta-get-talker-id
Exemplo de saída:
imagem-exemplo-saida-correta-get-talker-id

Inserindo informações incorretas

Existem um cenário onde a saída acima pode não ser retornada: caso não exista a pessoa palestrante com aquele id.

Caso não exista a pessoa palestrante com aquele id no banco de dados, o retorno será:

{
  "message": "Pessoa palestrante não encontrada"
}
Endpoint POST /login
Utilizado para quando o usuário vai acessar sua conta. O banco de dados exige que o usuário insira o email e senha correta e irá retornar um token temporário como confirmação de que está correto.
Exemplo de entrada:
imagem-exemplo-entrada-correta-post-login
Exemplo de saída:
imagem-exemplo-saída-correta-post-login
Endpoint POST /talker
Utilizado para criar um novo palestrante. Para isso, necessita de um nome, idade, o dia que fez a palestra e avaliação. Também precisa de um token valido.
Informações necessárias:
  • name: É o nome e sobrenome. Deve ser enviado como string e o mínimo de caracters é 3. É obrigatório.
  • age: É a idade do palestrante. Deve ser enviado como int e o palestrante precisa ter, no mínimo, 18 anos. É obrigatório.
  • talk: É um objeto com informações da palestra. Dentro dele, deve conter o dia assistido e a avaliação. É obrigatório.
  • watchedAt: É o dia em que foi assistido a palestra. Essa informação deve estar no objeto talk e deve ser enviado como string contendo a data completa em formato dia/mês/ano. É obrigatório.
  • rate: É a avaliação da palestra. Essa informação deve estar no objeto talk e deve ser enviado como int com um número de 1 à 5. É obrigatório.
Exemplo de entrada:
imagem-exemplo-entrada-correta-post-talker
Exemplo de saída:
imagem-exemplo-saída-correta-post-talker

Inserindo informações incorretas

Existem quatro cenários onde a saída acima pode não ser retornada: caso não preencha os requisitos necessários(explicados nas Informações Necessárias acima), caso falte alguma das informações obrigatórias, se não tiver um token ou tendo um token inválido. Cada um deles terá uma mensagem diferente avisando o motivo de estar incorreta.

Exemplos caso não preencha os requisitos necessários:

{
  "message": "A pessoa palestrante deve ser maior de idade"
}
{
  "message": "O \"name\" deve ter pelo menos 3 caracteres"
}

Exemplo caso esteja faltando alguma das informações obrigatórias

{
  "message": "O campo \"age\" é obrigatório"
}

Exemplo caso não contenha o token:

{
  "message": "Token não encontrado"
}

Exemplo caso o token tenha expirado ou seja inválido:

{
  "message": "Token inválido"
}
Endpoint PUT /talker/:id
Utilizado para alterar as informações do palestrante com esse id. Para isso, necessita de um nome, idade, o dia que fez a palestra e avaliação, assim como o POST /talker. Também precisa de um token valido.
Informações necessárias:
  • name: É o nome e sobrenome. Deve ser enviado como string e o mínimo de caracters é 3. É obrigatório.
  • age: É a idade do palestrante. Deve ser enviado como int e o palestrante precisa ter, no mínimo, 18 anos. É obrigatório.
  • talk: É um objeto com informações da palestra. Dentro dele, deve conter o dia assistido e a avaliação. É obrigatório.
  • watchedAt: É o dia em que foi assistido a palestra. Essa informação deve estar no objeto talk e deve ser enviado como string contendo a data completa em formato dia/mês/ano. É obrigatório.
  • rate: É a avaliação da palestra. Essa informação deve estar no objeto talk e deve ser enviado como int com um número de 1 à 5. É obrigatório.
Exemplo de entrada:
imagem-exemplo-entrada-correta-put-talker-id
Exemplo de saída:
imagem-exemplo-saida-correta-put-talker-id

Inserindo informações incorretas

Existem quatro cenários onde a saída acima pode não ser retornada: caso não preencha os requisitos necessários(explicados nas Informações Necessárias acima), caso falte alguma das informações obrigatórias, se não tiver um token ou tendo um token inválido. Cada um deles terá uma mensagem diferente avisando o motivo de estar incorreta.

Exemplos caso não preencha os requisitos necessários:

{
  "message": "A pessoa palestrante deve ser maior de idade"
}
{
  "message": "O \"name\" deve ter pelo menos 3 caracteres"
}

Exemplo caso esteja faltando alguma das informações obrigatórias

{
  "message": "O campo \"age\" é obrigatório"
}

Exemplo caso não contenha o token:

{
  "message": "Token não encontrado"
}

Exemplo caso o token tenha expirado ou seja inválido:

{
  "message": "Token inválido"
}
Endpoint DELETE /talker/:id
Utilizado para deletar as informações do palestrante com esse id. Para isso, necessita de um token valido.

OBS: Não é necessário informações adicionais e nem retornará nada.

Inserindo informações incorretas

Existem dois cenários onde a saída será retornada: se não tiver um token ou tendo um token inválido. Cada um deles terá uma mensagem diferente avisando o motivo de estar incorreta.

Exemplo caso não contenha o token:

{
  "message": "Token não encontrado"
}

Exemplo caso o token tenha expirado ou seja inválido:

{
  "message": "Token inválido"
}
Endpoint GET /talker/search
Utilizado para para pesquisar o nome do palestrante. Para isso, necessita, caso o usuario queira, um nome, e de um token valido. Caso não seja mandado nenhum query, será retornado todos os palestrantes. E se for mandado um query e não tenha esse palestrante, será enviado um array vazio.
Nome que existe no banco de dados
Exemplo de entrada:
imagem-exemplo-entrada-correta-get-talker-search-Henrique
Exemplo de saída:
imagem-exemplo-saida-correta-get-talker-search-Henrique
Nome que não existe no banco de dados
Exemplo de entrada:
imagem-exemplo-entrada-correta-get-talker-search-Emanoela
Exemplo de saída:
imagem-exemplo-saida-correta-get-talker-search-Emanoela
Sem nomes na pesquisa
Exemplo de entrada:
imagem-exemplo-entrada-correta-get-talker-search
Exemplo de saída:
imagem-exemplo-saida-correta-get-talker-search

Inserindo informações incorretas

Existem dois cenários onde a saída será retornada: se não tiver um token ou tendo um token inválido. Cada um deles terá uma mensagem diferente avisando o motivo de estar incorreta.

Exemplo caso não contenha o token:

{
  "message": "Token não encontrado"
}

Exemplo caso o token tenha expirado ou seja inválido:

{
  "message": "Token inválido"
}

Utilizando o docker

Para criar os containers, execute: docker-compose up -d

Para abrir o terminar do container, execute: docker exec -it talker_manager bash

Instalando Dependências

npm install

Aplicação Node:

Para executar a aplicação e acessar as rotas, execute: npm start ou npm run dev

Executando Testes

Para rodar todos os testes:

npm test

Para rodar um teste específico:

npm test númeroDoTest

exemplo: npm test 1

OBS: OS TESTES FORAM DESENVOLVIDOS PELA TRYBE.

project-talker-manager's People

Contributors

milenasuzumura avatar trybe-tech-ops avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.