const fs = require('fs'); class ComplotDB{ constructor(){ this.filename = "./database/complot_db.json"; this.actors = []; this.actions = []; this.reasons = []; this.sentences = []; this.sources = []; this.welcome = []; this.readFile(); } addSentence(sentence){ this.sentences.push(sentence); this.saveFile(); } addSource(source){ this.sources.push(source); this.saveFile(); } addActor(actor){ this.actors.push(actor); this.saveFile(); } addAction(action){ this.actions.push(action); this.saveFile(); } addReason(reason){ this.reasons.push(reason); this.saveFile(); } getAllActors(){ return this.actors; } getAllActions(){ return this.actions; } getAllReasons(){ return this.reasons; } getAllWelcome(){ return this.welcome; } #getRandomItem(liste){ return liste[Math.floor(Math.random()*liste.length)]; } getRandomActor(){ return this.#getRandomItem(this.actors); } getRandomAction(){ return this.#getRandomItem(this.actions); } getRandomReason(){ return this.#getRandomItem(this.reasons); } getRandomSource(){ return this.#getRandomItem(this.sources); } getRandomSentence(){ return this.#getRandomItem(this.sentences); } getRandomWelcome(){ return this.#getRandomItem(this.welcome); } #enumListString(list){ let string = ''; for(let i = 0; i < list.length; i++){ string += `${i} - ${list[i]}\n`; } string += "\n"; return string; } listToString(list, title){ let content = `======== ${title} =========\n`; content += this.#enumListString(list); return content; } actorToString(){ return this.listToString(this.actors, 'Actors'); } actionToString(){ return this.listToString(this.actions, 'Action'); } reasonToString(){ return this.listToString(this.reasons, 'Reasons'); } sourceToString(){ return this.listToString(this.sources, 'Sources'); } sentenceToString(){ return this.listToString(this.sentences, 'Sentences'); } toString(){ return 'See Base du bot...'; } readFile(){ fs.readFile(this.filename, (err, data)=>{ if (err){ console.log("ERROR READ FILE", err); throw err; } const json = JSON.parse(data); this.actors = json.actors ? json.actors : []; this.reasons = json.reasons ? json.reasons : []; this.actions = json.actions ? json.actions : []; this.sources = json.sources ? json.sources : []; this.sentences = json.sentences ? json.sentences : []; this.welcome = json.welcome ? json.welcome : []; }); } saveFile(){ let data = JSON.stringify({ actors: this.actors, actions: this.actions, reasons: this.reasons, sources : this.sources, sentences : this.sentences, welcome: this.welcome, }); fs.writeFile(this.filename, data, (err)=>{ if(err){ console.log("SAVE FILE ERROR", err); } }); } } const instance = new ComplotDB(); module.exports = instance;