Nesse projeto desenvolvido na Trybe, o objetivo era desenvolver um CRUD (Create, Read, Update e Delete) de itens medievais, no formato de uma API em estilo REST, utilizando Typescript e criar alguns endpoints que irão ler e escrever em um banco de dados através do MySQL.
- Declarar variáveis e funções com tipagens Typescript;
- Construir uma API Node Express utilizando o Typescript;
- Integração de API com banco de dados MySQL, respeitando ainda as tipagens.
Essa API, possui alguns endpoints (seguindo os princípios do REST) que estão conectados ao banco de dados, sempre pensando no modelo de negócio. Nessa API o usuário irá fazer o login e caso não tenha cadastro ainda, cadastrar-se através do Endpoint "POST /users". Caso as autentificações estejam corretas e ele exista no banco de dados, um token de autentificação será cedido ao usuário e esterá permitido cadastrar um novo produto ou pedido, bem como listá-los.
- Clone o repositório através da chave SSH
git clone git@github.com:Warywise/typescript-crud-products-api.git
- Acesse o diretório do repositório que você acabou de clonar:
cd typescript-crud-products-api
- Instale as dependências
npm install
- Crie, na raíz do projeto, um arquivo
.env
contendo as seguintes variáveis:
MYSQL_HOST=localhost
MYSQL_USER=myuser
MYSQL_PASSWORD=mypassword
- Conexão com o banco de dados local
A conexão do banco local é feita através do arquivo "./src/models/connection.ts":
import dotenv from 'dotenv';
import mysql from 'mysql2/promise';
dotenv.config();
const connection = mysql.createPool({
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
});
export default connection;
host: process.env.MYSQL_HOST
user: process.env.MYSQL_USER
password: process.env.MYSQL_PASSWORD
O banco terá três tabelas: pessoas usuárias, pedidos e produtos.
DROP SCHEMA IF EXISTS MySchema;
CREATE SCHEMA MySchema;
CREATE TABLE MySchema.Users (
id INTEGER AUTO_INCREMENT PRIMARY KEY NOT NULL,
username TEXT NOT NULL,
classe TEXT NOT NULL,
level INTEGER NOT NULL,
password TEXT NOT NULL
);
CREATE TABLE MySchema.Orders (
id INTEGER AUTO_INCREMENT PRIMARY KEY NOT NULL,
userId INTEGER,
FOREIGN KEY (userId) REFERENCES MySchema.Users (id)
);
CREATE TABLE MySchema.Products (
id INTEGER AUTO_INCREMENT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
amount TEXT NOT NULL,
orderId INTEGER,
FOREIGN KEY (orderId) REFERENCES MySchema.Orders (id)
);
- Inicie o projeto
npm start
npm run dev
caso queria rodar o projeto através do nodemon
- Acesse as rotas através de softwares como Postman e Insomnia através do endereço:
http://localhost:3000
- Rotas/Endpoints disponíveis:
POST
/#POST
/usersPOST
/productsGET
/productsPOST
/ordersGET
/ordersGET
/orders/:id