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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,426 changes: 2,426 additions & 0 deletions semana17/aula49 - Filtros/package-lock.json

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions semana17/aula51 - template-webservices/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
node_modules
build

.env

.vscode
21 changes: 21 additions & 0 deletions semana17/aula51 - template-webservices/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"scripts": {
"start": "tsc && node --inspect ./build/index.js",
"dev-start": "tsnd --transpile-only --ignore-watch node_modules ./src/index.ts",
"migrations": "tsnd ./src/data/migrations.ts"
},
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"knex": "^0.21.5",
"mysql": "^2.18.1"
},
"devDependencies": {
"@types/cors": "^2.8.8",
"@types/express": "^4.17.8",
"@types/node": "^14.11.2",
"ts-node-dev": "^1.0.0-pre.63",
"typescript": "^4.0.3"
}
}
13 changes: 13 additions & 0 deletions semana17/aula51 - template-webservices/src/app.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import express from 'express'
import cors from 'cors'

const app = express()

app.use(express.json())
app.use(cors())

app.listen(3003, ()=>{
console.log('Servidor rodando na porta 3003')
})

export default app
16 changes: 16 additions & 0 deletions semana17/aula51 - template-webservices/src/data/connection.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import knex from 'knex'
import dotenv from 'dotenv'

dotenv.config()

export const connection = knex({
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
}
})
29 changes: 29 additions & 0 deletions semana17/aula51 - template-webservices/src/data/migrations.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { connection } from "./connection"
import users from "./users.json"

const printError = (error: any) => { console.log(error.sqlMessage || error.message) }

const createTables = () => connection
.raw(`

CREATE TABLE IF NOT EXISTS aula51_users (
id VARCHAR(255) PRIMARY KEY,
name VARCHAR(255) NOT NULL,
nickname VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
address VARCHAR(255) NOT NULL
);
`)
.then(() => { console.log("Tabelas criadas") })
.catch(printError)

const insertUsers = () => connection("aula51_users")
.insert(users)
.then(() => { console.log("Usuários criados") })
.catch(printError)

const closeConnection = () => { connection.destroy() }

createTables()
.then(insertUsers)
.finally(closeConnection)
16 changes: 16 additions & 0 deletions semana17/aula51 - template-webservices/src/data/users.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[
{
"id" :1,
"name": "Alice",
"nickname": "Lili",
"email": "alice@gmail.com",
"address": "Avenida Portugal, 637 - Jardim Atlântico (31550-000) - Belo Horizonte, MG"
},
{
"id" :2,
"name": "Bob",
"nickname": "Robert",
"email": "bob@gmail.com",
"address": "Rua Marechal Hermes, 542 - Juvevê (80530-230) - Curitiba, PR"
}
]
38 changes: 38 additions & 0 deletions semana17/aula51 - template-webservices/src/endpoints/createUser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { Request, Response } from "express";
import { connection } from "../data/connection";
import { user } from "../types";

export default async function createUser(
req: Request,
res: Response
): Promise<void> {
try {

const { name, nickname, email, address } = req.body

if (!name || !nickname || !email || !address) {
res.statusCode = 422
throw "'name', 'nickname', 'email' e 'address' são obrigatórios"
}

const id: string = Date.now().toString()

const newUser: user = { id, name, nickname, email, address }

await connection('aula51_users').insert(newUser)

res.status(201).send("Usuário criado!")

} catch (error) {

if (typeof error === "string") {

res.send(error)
} else {

console.log(error.sqlMessage || error.message);
res.status(500).send("Ops! Um erro inesperado ocorreu =/")
}

}
}
4 changes: 4 additions & 0 deletions semana17/aula51 - template-webservices/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import app from "./app"
import createUser from './endpoints/createUser'

app.post('/users/signup', createUser)
7 changes: 7 additions & 0 deletions semana17/aula51 - template-webservices/src/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export type user = {
id: string
name: string
nickname: string
email: string
address: string
}
15 changes: 15 additions & 0 deletions semana17/aula51 - template-webservices/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"outDir": "./build",
"rootDir": "./src",
"removeComments": true,
"strict": true,
"noImplicitAny": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true
}
}