56 lines
1.1 KiB
JavaScript
56 lines
1.1 KiB
JavaScript
'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;
|