curso node leer y guardar en un archivo

estructura de proyecto:

db/data.json
por-hacer/por-hacer.php
app.js

/*********** por-hacer.php **********/

const fs = require('fs');

let listadoPorHacer=[];

const cargarDB = () =>{
try {
//
listadoPorHacer=require("../db/data.json");
} catch(e) {
// al inicio cuando el archivo esta vacio nos da una exception, entonces la variable
// la ponemos como una arreglo vacio
listadoPorHacer=[];
}


}

const crear=(descripcion)=>{

    cargarDB();

let porHacer = {
descripcion:descripcion,
completado:false
}

listadoPorHacer.push(porHacer);

guardarDB();

return porHacer;
}

const guardarDB=()=>{
let data=JSON.stringify(listadoPorHacer);
fs.writeFile('db/data.json', data, (err) => {
      if (err) throw new Error('No se pudo grabar',err);
     // console.log('The file has been saved!');
    });
}

const actualizar=(descripcion,completado=true)=>{

    cargarDB();

let index = listadoPorHacer.findIndex(tarea=>tarea.descripcion===descripcion);

if(index>=0){
listadoPorHacer[index].completado=completado;
    guardarDB();
        return true;
}


return false;
}

module.exports = {
crear, getListado, actualizar
}


/**************************   app.js ******************************/
const { crear, getListado, actualizar } = require('./por-hacer/por-hacer.js');


let comando =argv._[0];

switch (comando) {
case 'listar': let listado = getListado(); for(let elemento of listado){ console.log(elemento.descripcion +' estado: '+elemento.completado); } break; case 'crear': crear(argv.descripcion); break;
case 'actualizar':
console.log("actualizar");
break;
default:
console.log("comando no reconocido");
break;
}


vamos a agregarle la tarea de borrar entonces en app.js

case 'borrar':
    if(borrar(argv.descripcion,argv)){
    console.log('Borrado OK')
    }else{
    console.log("Fallo en el borrado");
}
break;

y en por-hacer.js

const borrar=(descripcion)=>{

    cargarDB();

let index = listadoPorHacer.findIndex(tarea=>tarea.descripcion===descripcion);

if(index>=0){
listadoPorHacer.splice(index,1);//elimina en la posicion index 1 elemento
    guardarDB();
        return true;
}


return false;
}
//recordar exportarla
module.exports = {
crear, getListado, actualizar, borrar
}

y en app.js
agregarla a la lista de funciones que necesito

const { crear, getListado, actualizar,borrar } = require('./por-hacer/por-hacer.js');

en yargs.js agregar la definicion de la tarea

.command('borrar','borra una tarea',{
    descripcion:descripcion
})


para ejecutar

node app.js borrar "nombre de tarea a borrar"

No hay comentarios:

Publicar un comentario

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable