- Node e MySQL
npm i express mysql2 sequelize
npm i nodemon sequelize-cli --save-dev
npm i bcryptjs body-parser cors dotenv express-validator hpp jsonwebtoken swagger-autogen swagger-ui-express xss-clean
npm i jest supertest --save-dev
- Pensando em deploy e continuidade do projeto, essa opção é super interessante, já que garante uma melhor gestão de ambientes e versionamento de código.
npx sequelize-cli init
- Created "src/config/database.js"
- Successfully created models folder at "/home/user/projetos/crud/models".
- Successfully created migrations folder at "/home/user/projetos/crud/src/database/migrations".
- Successfully created seeders folder at "/home/user/projetos/crud/seeders".
Obs. 1: Como o sequelize não reconhece, por padrão, o arquivo config/database.js (ele espera um json), existe a necessidade de criação do arquivo .sequelizerc, na raiz do projeto, a fim de apontar o caminho dos arquivos de configuração
Obs. 2: Setup finalizado para trabalhar com sequelize, sequelize-cli e seeders e migrations, esse último pensando em trabalhar com o conceito de Code First, ao invés de DDL
npx sequelize-cli db:create
npx sequelize-cli migration:generate --name users
Executando a migration. Esse comando criará a tabela configurada no arquivo gerado após a execução do passo anterior
npx sequelize-cli db:migrate
npx sequelize-cli db:migrate:undo
Pensando que já existe um banco em produção, e que o conceito de administração é feito pelo código, através das migrations, caso haja a necessidade de edições dos Models, será necessário criar uma nova migration.
Obs.: Esse comando deve ser executado após rodar novamente o comando de criação da migration criada anteriormente, pois ele atualizará uma tabela existente
npx sequelize-cli migration:generate --name alter-users-contato
npx sequelize-cli db:migrate
npx jest --init
✔ Would you like to use Jest when running "test" script in "package.json"? … yes
✔ Would you like to use Typescript for the configuration file? … no
✔ Choose the test environment that will be used for testing › node
✔ Do you want Jest to add coverage reports? … no
✔ Which provider should be used to instrument code for coverage? › v8
✔ Automatically clear mock calls, instances, contexts and results before every test? … yes
npm test
- Para correção do erro de requisição na página, cole no description de cada rota o seguinte:
{ "200": { "description": "OK" } }