🐉 API - Moko Tattoo Studio

Projeto de final de módulo do curso de Web Dev Full Stack da Resilia Educação referente ao Módulo 4.

Projeto realizado utilizando o Node.js com framework Express. SQLite foi utilizado como banco de dados do projeto.

✔️ Pré-Requisitos

📤 Packages

🚀 Instalação da Aplicação

Abra o terminal/Powershell e rode os comandos abaixo:

Clonando o repositório:

git clone https://github.com/Josirocha/moko_tattoo_studio.git

Entrando na pasta:

cd moko_tattoo_studio

Instalando os pacotes:

npm install

Criando e populando o banco de dados:

npm run database

Rodando o projeto:

npm start

📝 Rotas HTTP implementadas

📦Produtos

  • GET /produtos

    Retorna todos os dados do banco. Esquema da resposta:

     {
      "produtos": [
        {
          	"id": 1,
        	"descricao": "Agulhas de tatuagem",
        	"quantidade": 178,
        	"valor": 2.5,
        	"tipo": "Materiais",
       	 "id_fornecedor": 1
        },
        {
          	"id": 2,
      	"descricao": "Tinta preta",
      	"quantidade": 52,
      	"valor": 30.99,
      	"tipo": "Materiais",
      	"id_fornecedor": 2
        }
      ]
    }
  • GET /produtos/id/{id}

    Retorna o produto correspondente ao id. Esquema da resposta:

    {
      "produto": {
        "id": 16,
        "descricao": "Tinta branca",
       "quantidade": 45,
        "valor": 80,
        "tipo": "Materiais",
        "id_fornecedor": 2
      }
    }
  • POST /produtos

    Insere um produto na base de dados. Esquema da requisição:

    {
      "descricao": "Tinta roxa",
      "quantidade": 45,
      "valor": 80,
      "tipo": "Materiais",
      "id_fornecedor": 2
    }

    Esquema da resposta

    {
      "mensagem": "Produto inserido com sucesso",
    }
  • PUT /produtos/id/{id}

    Atualiza um produto de acordo com o id. Esquema da requisição:

    {
      "descrição": "Tinta vermelha",
      "quantidade": 45,
      "valor": 80,
      "tipo": "Materiais",
      "id_forncedor": 2
    }

    Esquema da resposta:

    {
      "msg": "Produto atualizado com sucesso"
    }
  • DELETE /produtos/id/{id}

    Deleta um produto de acordo com o id. Esquema da resposta:

    {
      "msg": "Produto com id 25 deletado com sucesso"
    }

🎨Tatuadores

  • GET /tatuadores

    Lista todos os registros de pessoas tatuadoras cadastradas

    Esquema da resposta:

       
    {
      "Pessoas tatuadoras": [
        {
          "id": 1,
          "nome": "Lucas Sampaio",
          "telefone": "21-998875291"
        },
        {
          "id": 2,
          "nome": "Samantha Costa",
          "telefone": "21-985662419"
        },
        {
          "id": 3,
          "nome": "Pablo Mendes",
          "telefone": "21-975498842"
        }
      ]
    }
  • GET /tatuadores/:id

    Lista o registro da pessoa tatuadora cadastrada com determinado id. O número do id deve ser passado como parâmetro na rota.

    Esquema da resposta:

            {
                "id": 2,
                "nome": "Samantha Costa",
                "telefone": "21-985662419"
            }
  • POST /tatuadores

    Insere um registro de pessoa tatuadora.

    No body da requisição deve ser passado apenas nome e telefone como atributos, pois o id é gerado por autoincremento.

    Esquema da requisição:

            {
                "nome": "Raquel Avoante",
                "telefone": "21-123456789"
            }

    Esquema da resposta:

            {
                "msg": "Pessoa tatuadora inserida com sucesso"
            }
  • PUT /tatuadores/:id

    Atualiza um registro específico de pessoa tatuadora com determinado id. O número do id deve ser passado como parâmetro na rota, e a requisição deve ter um body.

    Esquema da requisição:

            {
                "nome": "Avoante",
                "telefone": "85-123456789"
            }

    Esquema da resposta:

            {
                "mensagem": "Pessoa tatuadora de id 4 atualizada com sucesso!"
            }
  • DELETE /tatuadores/:id

    Apaga um registro específico, conforme o id passado como parâmetro na rota.

    Esquema da resposta:

            {
              "mensagem": "Pessoa tatuadora de id 4 deletada com sucesso"
            }

💻 Fornecedores

  • GET /fornecedores

    Retorna todos os dados do banco. Esquema da resposta:

    {
      "resultado": [
          {
              "id": 1,
              "nome": "LUVAS",
              "telefone": "21-912345678",
              "endereco": "Rua São Bento, nº 123",
              "email": "luvasmil@gmail.com"
          },
          {
              "id": 2,
              "nome": "ELECTRIC INK",
              "telefone": "21-998741145",
              "endereco": "Av. Mario Cruz, nº 2002",
              "email": "eletricink@gmail.com"
          },
          {
              "id": 3,
              "nome": "CAPITAL PIERCING",
              "telefone": "21-998663347",
              "endereco": "Rua João de Barro, nº 198",
              "email": "capitalpiercing@gmail.com"
          }
        ]
    }
    
  • GET /fornecedoresId/id/{id}

    Retorna o fornecedor correspondente ao id. Esquema da resposta:

    {
      "resultado": {
          "id": 1,
          "nome": "LUVAS",
          "telefone": "21-912345678",
          "endereco": "Rua São Bento, nº 123",
          "email": "luvasmil@gmail.com"
      }
    }
  • POST /fornecedores

    Insere um fornecedor na base de dados. Esquema da requisição:

    {
      "nome": "POMADAS",
      "telefone": "21-912345678",
      "endereco": "Rua São Bento, nº 123",
      "email": "agulhasmil@gmail.com"
    }

    Esquema da resposta

    {
      "mensagem": "Fornecedor inserido com sucesso!"
    }
  • PUT /fornecedores/id/{id}

    Atualiza um fornecedor de acordo com o id. Esquema da requisição:

    {
      "nome": "LUVAS",
      "telefone": "21-912345678",
      "endereco": "Rua São Bento, nº 123",
      "email": "luvasmil@gmail.com"
    }

    Esquema da resposta:

    {
      "mensagem": "Fornecedores atualizado com sucesso!"
    }
  • DELETE /fornecedores/id/{id}

    Deleta um fornecedor de acordo com o id. Esquema da resposta:

    {
      "mensagem": "Fornecedores atualizado com sucesso!"
    }

👨‍👩‍👧‍👦 Clientes

  • GET /clientes

    Retorna todos os dados do banco. Esquema da resposta:

        {
        "Usuarios": [
            {
                "id": 1,
                "nome": "Eugênio Oliveira",
                "telefone": "21-994785122"
            },
            {
                "id": 2,
                "nome": "Olívia Ribeiro",
                "telefone": "21-988796335"
            },
            {
                "id": 3,
                "nome": "Mirtes Faria Lima",
                "telefone": "21-974659987"
            }
        ]
      }
  • GET /clientes/{id}

    Retorna o cliente correspondente ao id. Esquema da resposta:

    {
      {
      "dados": {
          "id": 1,
          "nome": "Eugênio Oliveira",
          "telefone": "21-994785122"
      }
      }
    }
  • POST /clientes

    Insere um cliente na base de dados. Esquema da requisição:

      {
      "nome": "Manuela Esteves",
      "telefone": "21-992246521"
      }

    Esquema da resposta

      {
        "newUser": {
            "msg": "Usuário Manuela Esteves inserido com sucesso",
            "erro": false
        }
      }
  • PUT /clientes/{id}

    Atualiza um cliente de acordo com o id. Esquema da requisição:

      {
      "nome": "Maria Esteves",
      "telefone": "21-992246521"
      }

    Esquema da resposta:

      {
      "msg": "Usuário Maria Esteves, com id 1 atualizado com sucesso",
      "erro": false
      }
  • DELETE /clientes/{id}

    Deleta um cliente de acordo com o id. Esquema da resposta:

      {
      "msg": "Usuário 1 deletado com sucesso!",
      "erro": "false"
      }

📸 Tatuagens

  • GET/tatuagens

    Retorna todos os dados do banco.

    Esquema da resposta:

        {
      "resultado": [
          {
              "id": 1,
              "categoria": "Realismo",
              "link": "https://d5y9g7a5.rocketcdn.me/wp-content/uploads/2021/01/tatuagens-realistas-desenhos-impressionantes-para-te-inspirar-960x658.jpg",
              "id_tatuador": 1
          },
          {
              "id": 2,
              "categoria": "Maori",
              "link": "https://blog.pajaris.com.br/wp-content/uploads/2021/02/tatuagem-maori-26.jpg",
              "id_tatuador": 2
          },
          {
              "id": 3,
              "categoria": "OldSchool",
              "link": "https://www.minhatatuagem.com/wp-content/uploads/2020/01/tatuagem-oldschool-40.jpg",
              "id_tatuador": 3
          },
        ]
    }
  • GET /tatuagens/{id}

    Retorna a imagem correspondente ao id.

    Esquema da resposta:

    {
      "resultado": {
          "id": 1,
          "categoria": "Realismo",
          "link": "https://d5y9g7a5.rocketcdn.me/wp-content/uploads/2021/01/tatuagens-realistas-desenhos-impressionantes-para-te-inspirar-960x658.jpg",
          "id_tatuador": 1
      }
    }
  • POST /tatuagens

    Insere uma tatuagem na base de dados.

    Esquema da requisição:

    {
      {
      "categoria": "Aquarela",
      "link": "https://s3-blog.tattoo2me.com/wp-content/uploads/2020/01/1*c0c4SlsntfZ9Dl1uxTO-hQ.jpeg",
      "id_tatuador": "2"
      }
    } 

    Esquema da resposta

      {
      "mensagem": "Tatuagem inserida com sucesso!"
      }
  • PUT /tatuagens/{id}

    Atualiza uma imagem de acordo com o id.

    Esquema da requisição:

      {
      "categoria": "Aquarela",
      "link": "https://s3-blog.tattoo2me.com/wp-content/uploads/2020/01/1*c0c4SlsntfZ9Dl1uxTO-hQ.jpeg",
      "id_tatuador": "3"
      }

    Esquema da resposta:

      {
      "mensagem": "Tatuagem atualizada com sucesso!"
      }
  • DELETE /tatuagens/{id}

    Deleta uma imagem de acordo com o id.

    Esquema da resposta:

     {
      "mensagem": "Tatuagem deletada com sucesso!"
      }

    🗓️Agendamentos

  • GET /agendamentos

    Retorna todos os dados do banco. Esquema da resposta:

    {
      "agendamentos": [
      	{
      		"id": 1,
      		"data": "2022-08-15",
      		"horario": "14:00",
      		"id_cliente": 1,
      		"id_tatuador": 2
      	},
      	{
      		"id": 2,
      		"data": "2022-08-18",
      		"horario": "15:00",
      		"id_cliente": 2,
      		"id_tatuador": 3
      	},
      	{
      		"id": 3,
      		"data": "2022-08-19",
      		"horario": "13:00",
      		"id_cliente": 3,
      		"id_tatuador": 1
      	},
      	{
      		"id": 4,
      		"data": "2022-08-30",
      		"horario": "09:00",
      		"id_cliente": 1,
      		"id_tatuador": 2
      	}
      ]
    }
  • GET/agendamentos/{id}

    Retorna o agendamento correspondente ao id:

    Esquema da resposta:

  {
	"id": 1,
	"data": "2022-08-15",
	"horario": "14:00",
	"id_cliente": 1,
	"id_tatuador": 2
     }
  • POST /agendamentos

    Insere um agendamento na base de dados. Esquema da requisição:

    {
      "data": "2022-08-30",
      	"horario": "19:00",
      	"id_cliente": 1,
      	"id_tatuador": 2
    }

    Esquema da resposta

    {
      "mensagem": "Agendamento  inserido com sucesso",
     
    }
  • PUT /agendamentos/{id}

    Atualiza um agendamento de acordo com o id. Esquema da requisição:

    {
      "data": "2022-08-30",
      	"horario": "20:00",
      	"id_cliente": 3,
      	"id_tatuador": 1
    }

    Esquema da resposta:

    {
      "msg": "Agendamento com id 3 atualizado com sucesso"
      
    }
  • DELETE /agendamentos/{id}

    Deleta um agendamento de acordo com o id. Esquema da resposta:

    {
      "msg": "Agendamento com id 3 deletado com sucesso"
    
    }

    Time de desenvolvimento