Loja de itens medievais, no formato de uma API, utilizando Typescript.
Desenvolvida as camadas da aplicação (Models, Service e Controllers) em seu código e, por meio dessa aplicação, será possível realizar as operações básicas que se pode fazer em um banco de dados utilizando o MySQL - Criação, Leitura, Atualização e Exclusão - CRUD
🐳 Rodando no Docker vs Localmente
Rode os serviços
node
edb
com o comandodocker-compose up -d
.
- Lembre-se de parar o
mysql
se estiver usando localmente na porta padrão (3306
), ou adapte, caso queria fazer uso da aplicação em containers - Esses serviços irão inicializar um container chamado
trybesmith
e outro chamadotrybesmith_db
. - A partir daqui você pode rodar o container
trybesmith
via CLI ou abri-lo no VS Code.
Use o comando
docker exec -it trybesmith bash
.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
Instale as dependências com
npm install
⚠ Atenção ⚠ Caso opte por utilizar o Docker, TODOS os comandos disponíveis no package.json
(npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comando docker exec
citado acima.
Instale as dependências com
npm install
🏦 Conexão com o Banco
A conexão do banco local deverá conter os seguintes parâmetros:
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,
}); // sua conexão NÃO deve ter o database, este deve ser especificado em cada query
export default connection;
As variáveis de ambiente serão salvas em um arquivo .env. Para segurança, o arquivo se encontra na lista .gitignore para não ser salvo. Use o template .envexample removendo o example
do nome e preenchendo as informações necessárias conforme suas configurações do MySql.
host: process.env.MYSQL_HOST
user: process.env.MYSQL_USER
password: process.env.MYSQL_PASSWORD
Caso prefira usar Docker, não se esqueça de preencher essas mesmas informações nas linhas 36,37,38,52 do arquivo docker-compose.yml