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
14 changes: 14 additions & 0 deletions semana17/aula51/package-lock.json

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

9 changes: 7 additions & 2 deletions semana17/aula51/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
"scripts": {
"start": "tsc && node ./build/index.js",
"dev": "tsnd ./src/index.ts",
"test": "echo \"Error: no test specified\" && exit 1"
"test": "echo \"Error: no test specified\" && exit 1",
"addressInfo": "tsnd ./src/services/getAddressInfo.ts",
"migrations": "tsnd ./src/data/migrations.ts",
"mail": "tsnd ./src/endpoints/sendEmail.ts"
},
"keywords": [],
"author": "",
Expand All @@ -17,14 +20,16 @@
"dotenv": "^10.0.0",
"express": "^4.17.1",
"knex": "^0.95.8",
"mysql": "^2.18.1"
"mysql": "^2.18.1",
"nodemailer": "^6.6.3"
},
"devDependencies": {
"@types/axios": "^0.14.0",
"@types/cors": "^2.8.12",
"@types/express": "^4.17.13",
"@types/knex": "^0.16.1",
"@types/node": "^16.4.5",
"@types/nodemailer": "^6.4.4",
"ts-node-dev": "^1.1.8",
"typescript": "^4.3.5"
}
Expand Down
13 changes: 12 additions & 1 deletion semana17/aula51/request.rest
Original file line number Diff line number Diff line change
@@ -1 +1,12 @@
GET http://localhost:3003/
GET http://localhost:3003/address

###

POST http://localhost:3003/address
Content-Type: application/json

{
"nome": "Bolsa de cocô",
"cep": "70150-903",
"numero": 1
}
24 changes: 12 additions & 12 deletions semana17/aula51/src/app.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import express from "express";
import cors from "cors";
import {AddressInfo} from "net";
import express from "express"
import cors from "cors"
import {AddressInfo} from "net"

const app = express();
app.use(express.json());
app.use(cors());
app.use(express.json())
app.use(cors())

const server = app.listen(process.env.PORT || 3003, () => {
if(server) {
const adress= server.address() as AddressInfo;
console.log(`Server running on http://localhost:${adress.port}`);
} else {
console.error(`Servidor não iniciado`)
}
const server = app.listen(process.env.PORT || 3003, ():void => {
if(server){
const address = server.address() as AddressInfo;
console.log(`Server running on http://localhost:${address.port}`)
return;
}
console.error('Servidor não inciado!')
})

export default app
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
import knex from "knex"
import dotenv from "dotenv";

import dotenv from "dotenv"

dotenv.config()

const connection = knex ({
client: "mysql",
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,
multiStatements: true
port: 3306,
multipleStatements: true
}
})

export default connection;
export default connection
38 changes: 38 additions & 0 deletions semana17/aula51/src/data/migrations.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import connection from "./connection";
import users from './users.json'

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

const createTables = async():Promise<any> => {
try {
const criaTabela = await connection.raw(`
CREATE TABLE IF NOT EXISTS aula51_users (
id VARCHAR(255) PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
cep VARCHAR(255) NOT NULL,
logradouro VARCHAR(255) NOT NULL,
numero INT NOT NULL,
complemento VARCHAR(255),
bairro VARCHAR(255) NOT NULL,
localidade VARCHAR(255) NOT NULL,
uf VARCHAR(255) NOT NULL
)
`)
if(criaTabela){
return console.log('Tabela criada!')
}
} catch (error) {
printError
}
}

const insertEndereco = async () => await connection('aula51_users')
.insert(users)
.then(() => {console.log("Endereço adicionado!") })
.catch(printError)

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

createTables()
.then(insertEndereco)
.finally(closeConnection)
2 changes: 1 addition & 1 deletion semana17/aula51/src/data/selectAllAdresses.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import connection from "../connection"
import connection from "./connection"

export default async function selectAllUsers(): Promise<any> {
const result = await connection.raw (
Expand Down
13 changes: 13 additions & 0 deletions semana17/aula51/src/data/users.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[
{
"id": 1,
"nome": "AA",
"cep": "05424-150",
"logradouro": "Rua Pais Leme",
"numero": 25,
"complemento": "lado ímpar",
"bairro": "Pinheiros",
"localidade": "São Paulo",
"uf": "SP"
}
]
44 changes: 44 additions & 0 deletions semana17/aula51/src/endpoints/createUser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { user } from "../types";
import { Request, Response } from "express"
import { getAddressInfo } from "../services/getAddressInfo";
import connection from "../data/connection";
import transporter from "../services/mailTransporter";

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

const {nome, cep, numero, complemento} = req.body

if (!nome || !cep || !numero) {
res.status(422).send({error: "nome, cep e número são obrigatórios"})
}

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

const {logradouro, bairro, localidade, uf}: any = await getAddressInfo(cep)

const newUser:user = {id, nome, cep, logradouro, numero, complemento, bairro, localidade, uf}
await connection('aula51_users').insert(newUser)


// const mailInfo = await transporter.sendMail({
// from: `<${process.env.NODEMAILER_USER}>`,
// to: email
// })

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


} catch (error) {

if (res.status(200)) {
res.status(500).send({error: "Erro interno do servidor"})
} else {
res.send({error: error.sqlMessage || error.message})
}

}
}
6 changes: 3 additions & 3 deletions semana17/aula51/src/endpoints/getAllAdresses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import {Request, Response} from "express"
import selectAllUsers from "../data/selectAllAdresses"


export const getAllAdresses = async (req:Request, res: Response): Promise<void> => {
export const getAllAddresses = async (req:Request, res: Response): Promise<void> => {
try {
const allAdresses = await selectAllUsers()
res.status(200).send(allAdresses)
const allAddresses = await selectAllUsers()
res.status(200).send(allAddresses)
} catch (error) {
console.log(error)
}
Expand Down
25 changes: 25 additions & 0 deletions semana17/aula51/src/endpoints/sendEmail.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import transporter from "../services/mailTransporter"


const sendEmail = async():Promise<any> => {
try {
const mailInfo= await transporter.sendMail({
from: `<${process.env.NODEMAILER_USER}>`,
to: "g6e8k2i3m1o7e5d9@labenualunos.slack.com",
subject:"Desafio aula 51",
text:` o objeto foi: sendMail({
from: {process.env.NODEMAILER_USER},
to: g6e8k2i3m1o7e5d9@labenualunos.slack.com,
subject:Desafio aula 51,
text:`
})

console.log(mailInfo)
} catch (error) {
console.log(error)
}

}

sendEmail()

7 changes: 4 additions & 3 deletions semana17/aula51/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import app from "./app"
import { getAllAdresses } from "./endpoints/getAllAdresses"
// INSERIMOS DADOS NA TABELA COM O COMANDO INSERT INTO aula_51 (`id`, `zipcode`, `street`, `number`, `neighbourhood`, `city`, `state`) VALUES (1, '30330-010', 'rua dos bobos', 0, "Sao Pedro", "BH", "MG");
import createUser from "./endpoints/createUser"
import { getAllAddresses } from "./endpoints/getAllAdresses"


app.get ('/address', getAllAdresses)
app.get ('/address', getAllAddresses)
app.post('/address', createUser)
39 changes: 39 additions & 0 deletions semana17/aula51/src/services/getAddressInfo.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import axios from "axios"
import { addressInfo } from "../types"

export const getAddressInfo = async (
zipcode: string
): Promise<addressInfo | null > => {
try {

const result = await axios.get(`https://viacep.com.br/ws/${zipcode}/json/`)
const {cep, logradouro, bairro, localidade, uf} = result.data

const endereco ={
cep,
logradouro,
bairro,
localidade,
uf
}

return endereco
} catch (error) {
console.log(error.response ? error.response.data : error.message)
return null
}

}
const address = async() => {
const cep = '70150-900'
const result = await getAddressInfo(cep)
return console.log(result)
}
address()

// getAddressInfo('70150-900')
// .then(console.log)
// .catch(console.log)



24 changes: 0 additions & 24 deletions semana17/aula51/src/services/getAdressInfo.ts

This file was deleted.

16 changes: 16 additions & 0 deletions semana17/aula51/src/services/mailTransporter.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import nodemailer from 'nodemailer';
import dotenv from "dotenv"

dotenv.config()

const transporter = nodemailer.createTransport({
service: 'Gmail',
secure: false,
auth: {
user:process.env.NODEMAILER_USER,
pass: process.env.NODEMAILER_PASS
},
tls: {ciphers: "SSLv3"}
})

export default transporter
Loading