---
# System prepended metadata

title: Aula 16/17 - Lista de Exercícios de Backend - LiveHelp 18/08/2020
tags: [Backend]

---

###### 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);
})
```