Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backend aula47 #30

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
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
29 changes: 29 additions & 0 deletions semana 1 backend/aula 47/package-lock.json

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

19 changes: 19 additions & 0 deletions semana 1 backend/aula 47/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "aula47-backend",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"parte1": "tsc && node build/ex1.js",
"parte2": "tsc && node build/ex2.js",
"parte3": "tsc && node build/ex3.js",
"parte4": "tsc && node build/ex4.js",
"parte5": "tsc && node build/ex5.js",
"parte6": "tsc && node build/ex6.js",
"parte7": "tsc && node build/ex7.js"
},
"author": "luiz-bombonatti",
"license": "ISC"
}

32 changes: 32 additions & 0 deletions semana 1 backend/aula 47/src/ex1.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import axios from 'axios';

const baseUrl: string = 'https://us-central1-labenu-apis.cloudfunctions.net/labenews'


type Subscriber = {
id: string,
name: string,
email: string
}

async function getSubscribers(): Promise<any[]> {
const subscriber = await axios.get(`${baseUrl}/subscribers/all`);
return subscriber.data.map((subscriber: Subscriber) => {
return {
id: subscriber.id,
name: subscriber.name,
email: subscriber.email
}
})
}

const main = async () => {
try {
const subscribers = await getSubscribers();
console.log(subscribers);
} catch (e) {
console.log(e.response.data)
}
}

main();
35 changes: 35 additions & 0 deletions semana 1 backend/aula 47/src/ex2.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import axios from 'axios';

const baseUrl: string = 'https://us-central1-labenu-apis.cloudfunctions.net/labenews'

//a. O que muda pra mim é aonde o async entra e na escrita dela! Na função
//nomeada assincrona, o async vai no começo da função para indicar assincronicidade
//já na arrow function não é necessário indicar no começo.

type Subscriber = {
id: string,
name: string,
email: string
}

const getSubscribers = async(): Promise<Subscriber[]> => {
const subscriber = await axios.get(`${baseUrl}/subscribers/all`);
return subscriber.data.map((subscriber: Subscriber) => {
return {
id: subscriber.id,
name: subscriber.name,
email: subscriber.email
}
})
}

const main = async () => {
try {
const subscribers = await getSubscribers();
console.log(subscribers);
} catch (e) {
console.log(e.response.data)
}
}

main();
36 changes: 36 additions & 0 deletions semana 1 backend/aula 47/src/ex3.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import axios from 'axios';

const baseUrl: string = 'https://us-central1-labenu-apis.cloudfunctions.net/labenews'

//a. Não, pois a promisse receberá a tipagem do usuário
//b. A promisse é o resultado de uma função assincrona, caso não tenha indicado nela o que ela tem que retornar
//mapeamos esse processo para que possamos decidir o que receberemos.


type Subscriber = {
id: string,
name: string,
email: string
}

const getSubscribers = async(): Promise<Subscriber[]> => {
const subscriber = await axios.get(`${baseUrl}/subscribers/all`);
return subscriber.data.map((subscriber: Subscriber) => {
return {
id: subscriber.id,
name: subscriber.name,
email: subscriber.email
}
})
}

const main = async () => {
try {
const subscribers = await getSubscribers();
console.log(subscribers);
} catch (e) {
console.log(e.response.data)
}
}

main();
23 changes: 23 additions & 0 deletions semana 1 backend/aula 47/src/ex4.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import axios from 'axios';

const baseUrl: string = 'https://us-central1-labenu-apis.cloudfunctions.net/labenews';

async function createNews (title: string, content: string, date: number = Date.now()): Promise<void>{
await axios.put(`${baseUrl}/news`, {
title,
content,
date
});
}

const main = async () => {
try{
await createNews ('LUBEEEE', 'EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE');
}catch (e) {
console.log(e.response.data)
}
}



main();
42 changes: 42 additions & 0 deletions semana 1 backend/aula 47/src/ex5.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import axios from 'axios';

const baseUrl: string = 'https://us-central1-labenu-apis.cloudfunctions.net/labenews';

type Subscriber = {
id: string,
name: string,
email: string
}

const getSubscribers = async(): Promise<Subscriber[]> => {
const subscriber = await axios.get(`${baseUrl}/subscribers/all`);
return subscriber.data.map((subscriber: Subscriber) => {
return {
id: subscriber.id,
name: subscriber.name,
email: subscriber.email
}
})
}

const sendNotification = async(subscriber: Subscriber[], message: string): Promise<void> => {
for (const users of subscriber) {
await axios.post(`${baseUrl}/notifications/send`, {
subscriberId: users.id,
message: message
})
console.log('Notificação enviada para: ', users.name)
}
}

const main = async () =>{
try{
const subscribers = await getSubscribers();
await sendNotification(subscribers, "EU VENCIIIIIIII HAHAAHAHAHAHAHA")
} catch (e) {
console.log(e.response.data);
}

}

main();
46 changes: 46 additions & 0 deletions semana 1 backend/aula 47/src/ex6.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import axios from 'axios';

const baseUrl: string = 'https://us-central1-labenu-apis.cloudfunctions.net/labenews';

type Subscriber = {
id: string,
name: string,
email: string
}

const sendNotification = async(subscriber: Subscriber[], message: string): Promise<void> => {
const promisseArray = []
for (const users of subscriber) {
promisseArray.push(
await axios.post(`${baseUrl}/notifications/send`, {
subscriberId: users.id,
message: message
})
)
console.log('Notificação enviada para: ', users.name)
}
await Promise.all(promisseArray)
console.log('finish him')
}

const getSubscribers = async(): Promise<Subscriber[]> => {
const subscriber = await axios.get(`${baseUrl}/subscribers/all`);
return subscriber.data.map((subscriber: Subscriber) => {
return {
id: subscriber.id,
name: subscriber.name,
email: subscriber.email
}
})
}

const main = async () => {
try{
const subscribers = await getSubscribers();
await sendNotification(subscribers, "EU VENCIIIIIIII HAHAAHAHAHAHAHA")
} catch (e) {
console.log(e.response.data)
}
}

main();
90 changes: 90 additions & 0 deletions semana 1 backend/aula 47/src/ex7.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import axios from 'axios';

const baseUrl: string = 'https://us-central1-labenu-apis.cloudfunctions.net/labenews';

type Subscriber = {
id: string,
name: string,
email: string
}

const getSubscribers = async(): Promise<Subscriber[]> => {
const subscriber = await axios.get(`${baseUrl}/subscribers/all`);
return subscriber.data.map((subscriber: Subscriber) => {
return {
id: subscriber.id,
name: subscriber.name,
email: subscriber.email
}
})
}

async function createNews (title: string, content: string, date: number = Date.now()): Promise<void>{
await axios.put(`${baseUrl}/news`, {
title,
content,
date
});
}

const createSubscriber = async (name: string, email: string) => {
await axios.put(`${baseUrl}/subscribers`, {
name,
email
})

}

const sendNotification = async(subscriber: Subscriber[], message: string): Promise<void> => {
for (const users of subscriber) {
await axios.post(`${baseUrl}/notifications/send`, {
subscriberId: users.id,
message: message
})
console.log('Notificação enviada para: ', users.name)
}
}

const createAndSendNotifications = async () => {
try {
await createNews(
"Tamo junto e misturado",
"chacabum"
)
const users = await getSubscribers();

await sendNotification (users, "testando msginha")
} catch (e) {
console.log(e.response.data)
}
}

const getAllNofitications = async (): Promise<any> => {
const users = await getSubscribers();

const notificationsPromisses = [];

for (const user of users) {
notificationsPromisses.push(
axios.get(`${baseUrl}/subscribers/${user.id}/notifications/all`)
)
}
const result = await Promise.all(notificationsPromisses)
const dataResultForm = result.map((res) => res.data)

return dataResultForm
console.log(dataResultForm)
}


const main = async () => {
try{
await createAndSendNotifications();
await createSubscriber("Jorge da babilonia", "jorjãolegalzã[email protected]");
await getAllNofitications();
} catch (e) {
console.log(e.response.data)
}
}

main();
Loading