###### tags: `Backend`
# Aula 16/17 - Lista de Exercícios de Backend - LiveHelp 18/08/2020
## Aluno: Rafael Almeida Santos
## Em sala
### Questão 01
```javascript=
const fs = require('fs');
//criando arquivo de leitura
const stream = fs.createReadStream('./houses.csv')
const csvParser = require('csv-parser');
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const chalk = require('chalk');
//Tratamento e leitura dos dados
let conteudo = [];
//Realizando leitura e ajuste com o pipe e o csv-parser
console.log(chalk.greenBright('Iniciando leitura dos arquivos...'))
stream.pipe(csvParser()).on('data', (dadosHouse) => {
conteudo.push({
id: conteudo.length + 1,
city: dadosHouse['city'].trim(),
area: Number(dadosHouse['area']),
rooms: Number(dadosHouse['rooms']),
bathroom: Number(dadosHouse['bathroom']),
'parking spaces': Number(dadosHouse['parking spaces']),
floor: dadosHouse['floor'],
animal: Boolean(dadosHouse['animal']),
furniture: Boolean(dadosHouse['furniture']),
hoa: Number(dadosHouse['hoa'])*100,
'rent amount': Number(dadosHouse['rent amount'])*100,
'property tax': Number(dadosHouse['property tax'])*100,
'fire insurance': Number(dadosHouse['fire insurance'])*100,
total: Number(dadosHouse['total'])*100,
})
})
stream.on('end', () => {
const csvWriter = createCsvWriter({
path: 'housesOut.csv',
header: [
{id: 'id', title: 'id'},
{id: 'city', title: 'cidade'},
{id: 'area', title: 'area'},
{id: 'rooms', title: 'quartos'},
{id: 'bathroom', title: 'banheiros'},
{id: 'parking spaces', title: 'vagas_de_estacionamento'},
{id: 'floor', title: 'piso'},
{id: 'animal', title: 'animais'},
{id: 'furniture', title: 'moveis'},
{id: 'hoa', title: 'hoa'},
{id: 'rent amount', title: 'taxa_de_aluguel'},
{id: 'property tax', title: 'condominio'},
{id: 'fire insurance', title: 'seguro_incendio'},
{id: 'total', title: 'total'},
]
});
//Criando o arquivo csv
csvWriter.writeRecords(conteudo)
console.log(chalk.blueBright('Arquivo CSV gerado com sucesso!'))
})
```
## Para casa
### Questão 01
```javascript=
//Chamando bibliotecas
//Biblioteca de leitura e escrita
const fs = require('fs');
//Criando stream de leitura
const stream = fs.createReadStream("./breweries.csv");
// requisitando a bib do csv-parser para leitura mais eficiente
const csvParser = require('csv-parser')
//Requisitando a bib do csv-writer para escrever no nosso novo csv de saída
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
//Tratamento dos dados da tabela
let conteudo = [];//Variavel do tipo array que vai receber o conteudo
stream.pipe(csvParser()).on("data", (dados) => {
conteudo.push({
id: Number(dados.id),
name: (dados.name).trim().replace(/[`']/g, ''),
city: (dados.city).trim().replace(/['`]/g, ''),
state: (dados.state).trim().replace(/[`']/g, '')
});
})
//Ouvidor de evento que vai atuar quando a leitura stream terminar
stream.on('end', () => {
const csvWriter = createCsvWriter({
path: 'breweriesOut.csv',
header: [
{id: 'id', title: 'id'},
{id: 'name', title: 'nome_da_cervejaria'},
{id: 'city', title: 'cidade'},
{id: 'state', title: 'estado'},
]
})
//Criando o arquivo csv
csvWriter.writeRecords(conteudo)
})
```
### Questão 02
```javascript=
// Passo 01 Instalar pacotes csv-writer e csv-parser
//Passo 02 Chamar bibliotecas
const fs = require('fs');
const stream = fs.createReadStream("./beers.csv");
const csvParser = require("csv-parser");
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
//Passo 03 criar stream de leitura de csv
//Passo 04 Formatar dados csv
let conteudo = [];
//Ativo método pipe, passando como argumento meu csvParser executando(função)
// coloco tudo isso ouvindo o evento 'data' e passo uma callback que recebe
//dadosCervejas
stream.pipe(csvParser()).on('data', (dadosCervejas) => {
conteudo.push({
id: Number(dadosCervejas.id),
abv: Number(dadosCervejas.abv).toFixed(4),
ibu: Number(dadosCervejas.ibu),
national_id: Number(dadosCervejas.national_id),
name: dadosCervejas.name.trim().replace(/['`]/g, ''),
"style": dadosCervejas["style"].trim(),
brewery_id: Number(dadosCervejas.brewery_id),
ounces: Number(dadosCervejas.ounces)
})
})
//Passo05 escrever no csv novo
stream.on('end', () => {
const csvWriter = createCsvWriter({
path: 'cervejasOut.csv',
header: [
{id: 'id', title: 'id'},
{id: 'abv', title: 'abv'},
{id: 'ibu', title: 'ibu'},
{id: 'national_id', title: 'id_nacional'},
{id: 'name', title: 'nome'},
{id: 'style', title: 'estilo'},
{id: 'brewery_id', title: 'id_cervejaria'},
{id: 'ounces', title: 'peso_oncas'}
]
});
//Escrevendo arquivo
csvWriter.writeRecords(conteudo);
})
```