Skip to content

Instantly share code, notes, and snippets.

View cfigueiroa's full-sized avatar

Caio Figueirôa cfigueiroa

View GitHub Profile
@cfigueiroa
cfigueiroa / Context API.md
Last active November 22, 2022 01:38 — forked from luanalessa/Context API.md
fix small typo

Context API



🏁 Context API

Context API é uma maneira super bacana de passar estados pelos componentes sem precisar utilizar props, permitindo a atualização desse estado em qualquer parte da sua aplicação. Claro que em algumas situações é mais adequado o uso das props, mas , à medida que vamos aumentando àrvore de elementos, pode ficar bem chatinho transportar essas informações sem o uso de um gerenciador de estado global. E caso você não tenha notado esse é o trabalho da Context API. 😅

Routes and Controllers

Router e Controllers fazem parte da arquitetura em camadas do back-end. Esse padrão de arquitetura possui algumas outras camadas, mas vamos falar como criar as duas primeiras camadas do back-end:

  • Criando Routers

Quanto mais sua aplicação cresce, maior é a necessidade para uma organização. A primeira tarefa é definir as rotas que a sua aplicação vai ter e para isso você vai precisar de uma pasta chamada "routes" dentro da sua src

image

SELECT * FROM produtos LIMIT 5;
SELECT * FROM clientes LIMIT 3;
SELECT * FROM produtos WHERE nome = 'Televisão 43"';
INSERT INTO produtos (nome, preco) VALUES ('Macbook Pro 13"', 1700000);
DELETE from clientes WHERE nome = 'Orlando Pequeno Jesus';
UPDATE produtos SET preco = 8000 WHERE nome = 'Pelúcia Strange Planet com Gatinho';
UPDATE produtos SET preco = 980000 WHERE nome = 'Violão Lava ME 2';
UPDATE clientes SET cpf = '04652651298' WHERE nome = 'Lucca Santarém Branco';
-- 9
-- -- 1
-- conectando no banco de dados e comandos básicos
-- sudo -i -u postgres
-- psql
-- \!clear
-- \l
-- \c padaria_sucesso
-- \dt
--
-- 1
SELECT
users.id,
users.name,
cities.name
FROM
users
JOIN cities ON cities.id = users.id
WHERE
cities.name = 'Alegre';
-- 1
SELECT COUNT("endDate") AS "currentExperiences" FROM experiences;
-- SELECT COUNT(*) AS "currentExperiences" FROM experiences WHERE "endDate" IS NOT NULL;
-- 2
SELECT "userId" AS id, COUNT(*) AS educations FROM educations GROUP BY "userId" ORDER BY id ASC;
-- 3
SELECT users.name as writer, COUNT(*) as "testimonialCount" from testimonials JOIN users ON users.id = testimonials."writerId" GROUP BY users.name ORDER BY users.name ASC;
-- 4
SELECT MIN(jobs.salary) AS "maximumSalary", roles.name AS "role" FROM roles JOIN jobs ON roles.id = jobs."roleId" WHERE jobs.active = true GROUP BY roles.name ORDER BY "maximumSalary";
-- CREATE DATABASE pratica_integridade_e_consistencia;
CREATE TYPE customer_phone_type AS ENUM ('landline', 'mobile');
CREATE TYPE transaction_type AS ENUM ('deposit', 'withdraw');
CREATE TABLE
customers (
id SERIAL PRIMARY KEY,
full_name VARCHAR(255) NOT NULL,
cpf VARCHAR(11) NOT NULL UNIQUE,
await new Promise(function (resolve) {
setTimeout(function () {
resolve();
}, 1000);
});
// ... Can be shortened to:
await new Promise(function (resolve) {
setTimeout(resolve, 1000);
-- 1. Busque produtos quaisquer, limitados a 5;
SELECT
*
FROM
produtos
LIMIT
5;
-- 2. Busque clientes quaisquer da loja, limitados a 3;
SELECT
@cfigueiroa
cfigueiroa / main.ts
Created June 14, 2023 16:47
solucao1
// 1 - Crie uma interface UserData para o formulário abaixo
// 2 - Crie uma variável global UserData no window, ela será um objeto qualquer
// 3 - Adicione um evento de keyup ao formulário
// 4 - Quando o evento ocorrer adicione a {[id]: value} ao UserData
// 5 - Salve UserData no localStorage
// 6 - Crie uma User Type Guard, para verificar se o valor de localStorage é compatível com UserData
// 7 - Ao refresh da página, preencha os valores de localStorage (caso seja UserData) no formulário e em /window.UserData
const app = document.getElementById("app");