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