Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 1 addition & 0 deletions Semana13/Projeto/Labefood
Submodule Labefood added at b8b2f6
1 change: 1 addition & 0 deletions Semana16/Projeto/epps-labenu-system13
Submodule epps-labenu-system13 added at 150f9c
117 changes: 117 additions & 0 deletions Semana17/Aula1/Doulgas Florido.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Douglas Florido
## Exercicios Semana 15 Aula 3

### Exercicio 1

~~~SQL
import { v4 } from "uuid"

const id = v4();

console.log("Generated Id: ", id);
~~~~

> a) Qual a sua opinião em relação a usar strings para representar os ids? Você concorda que seja melhor do que usar números?

sim, já que Strings vc consegue inserir tanto números, quanto caracteres, dando mais de 10 números e mais de 26 letras de possibilidade , para um item apenas do id, fazendo com que seja muito mais seguro doq apenas números.

> b) A partir de hoje vamos tentar isolar, ao máximo, as nossas lógicas dentro de funções. Isso vai deixar nosso código mais organizado e aumentar a facilidade da manutenção e refatoração. Dado isso, crie uma função para gerar um id.



### Exercicio 2
~~~SQL
const userTableName = "User";

const connection = knex({
client: "mysql",
connection: {
host: process.env.DB_HOST,
port: 3306,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_SCHEMA,
},
});

const createUser = async (id: string, email: string, password: string) => {
await connection
.insert({
id,
email,
password,
})
.into(userTableName);
};
~~~

> a) Explique o código acima com as suas palavras.

O Código ele adiciona na tabela "User", que possui as seguintes colunas: "id: string, email: string, password: string"
os valores id, email, password, ou seja, as colunas possuem o mesmo nome das variáveis que ele insere

> b) Comece criando a tabela de usuários. Coloque a query que você utilizou no arquivo de respostas.

~~~SQL
CREATE TABLE User(
id VARCHAR(255) PRIMARY KEY,
email TEXT NOT NULL,
password TEXT NOT NULL
);
~~~

> c) Pela mesma justificativa do exercício anterior, crie uma função para ser responsável pela criação de usuários no banco.


### Exercicio 3

~~~SQL
import * as jwt from "jsonwebtoken";

const expiresIn = "1min"

const generateToken = (id: string): string => {
const token = jwt.sign(
{
id
},
process.env.JWT_KEY as string,
{
expiresIn
}
);
return token;
}
~~~

> a) O que a linha as string faz? Por que precisamos usar ela ali?

A Linha "as string" le a variável como String, logo se passar um number ou float, ele vem em formato de string, precisa-se passar desta forma pois todos os numeros e floats serão gravados e utilizados em forma de string, garantindo entao o formato da variavel

> b) Agora, crie a função que gere o token. Além disso, crie um type para representar o input dessa função.

### Exercicio 4

> a) Crie o endpoint que realize isso, com as funções que você implementou anteriormente

> b) Altere o seu endpoint para ele não aceitar um email vazio ou que não possua um "@"

> c) Altere o seu endpoint para ele só aceitar uma senha com 6 caracteres ou mais


















4 changes: 4 additions & 0 deletions Semana17/Aula1/template-intro-autenticacao/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
DB_HOST = 35.226.146.116
DB_USER =
DB_PASSWORD =
DB_SCHEMA =
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.idcreator = void 0;
const uuid_1 = require("uuid");
function idcreator() {
return uuid_1.v4();
}
exports.idcreator = idcreator;
console.log("Generated Id: ", idcreator);
exports.default = idcreator;
14 changes: 14 additions & 0 deletions Semana17/Aula1/template-intro-autenticacao/build/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const express_1 = __importDefault(require("express"));
const cors_1 = __importDefault(require("cors"));
const app = express_1.default();
app.use(express_1.default.json());
app.use(cors_1.default());
app.listen(3003, () => {
console.log('Servidor rodando na porta 3003');
});
exports.default = app;
20 changes: 20 additions & 0 deletions Semana17/Aula1/template-intro-autenticacao/build/connection.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const knex_1 = __importDefault(require("knex"));
const dotenv_1 = __importDefault(require("dotenv"));
dotenv_1.default.config();
const connection = knex_1.default({
client: 'mysql',
connection: {
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_SCHEMA,
port: 3306,
multipleStatements: true
}
});
exports.default = connection;
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const connection_1 = __importDefault(require("../connection"));
function createUser(req, res) {
return __awaiter(this, void 0, void 0, function* () {
try {
const { name, nickname, email, password } = req.body;
if (!name || !nickname || !email || !password) {
res.statusCode = 422;
throw new Error("Preencha os campos 'name','nickname', 'password' e 'email'");
}
const [user] = yield connection_1.default('to_do_list_users')
.where({ email });
if (user) {
res.statusCode = 409;
throw new Error('Email já cadastrado');
}
const id = Date.now().toString();
const newUser = { id, name, nickname, email, password };
yield connection_1.default('to_do_list_users')
.insert(newUser);
res.status(201).send({ newUser });
}
catch (error) {
if (res.statusCode === 200) {
res.status(500).send({ message: "Internal server error" });
}
else {
res.send({ message: error.message });
}
}
});
}
exports.default = createUser;
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const connection_1 = __importDefault(require("../connection"));
function createUser(req, res) {
return __awaiter(this, void 0, void 0, function* () {
try {
const { name, nickname } = req.body;
if (!name && !nickname) {
res.statusCode = 422;
res.statusMessage = "Informe o(s) novo(s) 'name' ou 'nickname'";
throw new Error();
}
yield connection_1.default('to_do_list_users')
.update({ name, nickname })
.where({ id: req.params.id });
res.end();
}
catch (error) {
if (res.statusCode === 200) {
res.status(500).end();
}
res.end();
}
});
}
exports.default = createUser;
10 changes: 10 additions & 0 deletions Semana17/Aula1/template-intro-autenticacao/build/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const app_1 = __importDefault(require("./app"));
const editUser_1 = __importDefault(require("./endpoints/editUser"));
const createUser_1 = __importDefault(require("./endpoints/createUser"));
app_1.default.post('/user/signup', createUser_1.default);
app_1.default.put('/user/edit/:id', editUser_1.default);
2 changes: 2 additions & 0 deletions Semana17/Aula1/template-intro-autenticacao/build/types.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
15 changes: 15 additions & 0 deletions Semana17/Aula1/template-intro-autenticacao/node_modules/.bin/atob

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions Semana17/Aula1/template-intro-autenticacao/node_modules/.bin/knex

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading