/knexjs-masterclass

A simple API built in RocketSeat's masterclass to learn about the package Knex.js.

Primary LanguageJavaScript

Youtube Masterclass Knex.js

Video: https://youtu.be/U7GjS3FuSkA

Doc: https://www.notion.so/Masterclass-Knex-45d9705a634a4c2b80ac1599585163a6


👀 Pra quem é destinado essa Masterclass?

Iniciantes que conhecem o básico de SQL, Javascript, Node.js, Express e HTTP

Não querem mais escrever SQL na unha

Querem dar o próximo passo no conhecimento, criação e manutenção de banco de dados.

❓ O que, pra que e por que?

  • Query Builder
  • Construtor de queries SQL com Javascript
  • Callback style or Promise style
  • Multiplas plataformas (PostgreSQL, MySQL, SQLite3...)
  • Agilidade
  • Ajuda em todos os cenários? Não , mas ainda assim você pode escrever raw queries
  • SQL Raw pode ser perigoso se não for feito com cuidado, pode ser feio, e de difícil manutenção
  • Knex vs SQL Raw
knex('users').where('id', 1)

select * from `users` where `id` = 1

👟 Praticar

Vamos criar uma API que irá ter CRUD de usuários e projetos desses usuários.

O que preciso para começar?

  • Nodejs

  • PostgreSQL

  • VSCode

  • Insomnia ou Postman

  • Revisar um pouco de SQL

  • Create Table

  • Instalar: npm i knex pg express nodemon

  • Create and Config ./knexfile.js with npx knex init

  • Create and Config ./src/database/index.js

  • Log in to local postgres: psql -U postgres

  • Create user migration npx knex migrate:make migration_name

  • Create user seed npx knex seed:make seed_name

  • Run Migration and Seeds migrate:latest seed:run

  • Usando o Knex

  • Select

  • Insert

  • Update

  • Delete

  • Add error handling

  • Separar Rotas e criar controllers

  • Create projects table (Relacionamento com users)

  • Criar migration e seed

  • Join User Projects

  • Paginação de Projetos

  • Soft Delete (user)

  • Procedures & Triggers (updated_at)

💧 Code/Drops

-- create database
CREATE DATABASE knex_test;

-- create table
CREATE TABLE users (
	id serial unique,
	name text not null
);

-- select all users
SELECT * FROM users;

-- add user
INSERT INTO users (name) values ('Mayk');

-- update user
UPDATE users SET name = 'Maykão' WHERE id = '1';

-- delete user
DELETE FROM users WHERE id = '1';

-- create table
CREATE TABLE projects (
	id serial unique,
	user_id integer references users(id),
	title text not null
);

-- select all projects
SELECT * FROM projects;

-- add project to user
INSERT INTO projects (user_id, title) values ('1', 'Meu Projeto');

-- relation user with project
SELECT projects.*, users.name 
FROM projects
JOIN users ON projects.user_id = users.id;

-- drop
DROP TABLE users;
DROP TABLE projects;
DROP DATABASE knex_test;

🚀 Próximos passos ?

🔗 Referências

http://knexjs.org

https://devhints.io/knex

https://github.com/robmclarty/knex-express-project-sample

https://www.postgresqltutorial.com/psql-commands

https://www.postgresql.org/docs/12/sql-createtrigger.html

https://stackoverflow.com/questions/36728899/knex-js-auto-update-trigger/48028011#48028011

https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Status

https://www.postman.com/

https://insomnia.rest/

https://code.visualstudio.com/

https://www.postgresql.org/download/


Feito com ♥ by Rocketseat 👋 Entre na nossa comunidade!