'use strict'; const Task = require('./task'); class MemTaskService { constructor() { this.tasks = [ Task.withId('1', 'Task 1'), Task.withId('2', 'Task 2') ]; } getTasks() { return Promise.resolve(this.clone(this.tasks)); } getTask(id) { for (let task of this.tasks) { if (task._id === id) { return Promise.resolve(this.clone(task)); } } return Promise.reject(`no task with id: ${id}`) } addTask(task) { task._id = this.getNewId(); this.tasks.push(task); return Promise.resolve(this.clone(task)); } deleteTask(id) { var task = null; for (let i=0; i < this.tasks.length; i++) { if (this.tasks[i]._id === id) { this.tasks.splice(i, 1); return Promise.resolve(); } } return Promise.reject(`no task with id: ${id}`) } clone(what) { return JSON.parse(JSON.stringify(what)); } getNewId() { return (Math.random() + 'A').substr(2); } } module.exports = MemTaskService;