1818
1919'use strict' ;
2020
21- var todos = require ( './' ) ;
21+ var todos = require ( '../../server/todos.js' ) ;
22+
2223var inquirer = require ( 'inquirer' ) ;
2324var actions = {
2425 add : add ,
2526 deleteCompleted : deleteCompleted ,
26- exit : process . kill ,
2727 displayTodos : displayTodos ,
28- displayTodosAndDelete : displayTodosAndDelete
28+ displayTodosAndDelete : displayTodosAndDelete ,
29+ exit : process . kill
2930} ;
3031
3132// Start the prompts.
@@ -71,19 +72,21 @@ function add() {
7172 message : 'What do you need to do?' ,
7273 name : 'text'
7374 } , function ( answers ) {
74- todos . add ( answers . text , function ( err ) {
75+ todos . insert ( {
76+ text : answers . text
77+ } , function ( err ) {
7578 if ( err ) {
76- throw new Error ( err ) ;
79+ throw err ;
7780 }
7881 init ( ) ;
7982 } ) ;
8083 } ) ;
8184}
8285
8386function displayTodos ( ) {
84- todos . getTodos ( function ( err , entities ) {
87+ todos . getAll ( function ( err , entities ) {
8588 if ( err ) {
86- throw new Error ( err ) ;
89+ throw err ;
8790 }
8891 if ( entities . length === 0 ) {
8992 console . log ( 'There are no todos!\n' ) ;
@@ -96,8 +99,8 @@ function displayTodos() {
9699 type : 'checkbox' ,
97100 choices : entities . map ( function ( entity ) {
98101 return {
99- name : entity . text ,
100- checked : entity . done ,
102+ name : entity . data . text ,
103+ checked : entity . data . done ,
101104 value : entity
102105 } ;
103106 } )
@@ -107,45 +110,55 @@ function displayTodos() {
107110 if ( answers . completed . some ( function ( completed ) {
108111 return completed . id === entity . id ;
109112 } ) ) {
110- entity . done = true ;
113+ entity . data . done = true ;
111114 } else {
112- entity . done = false ;
115+ entity . data . done = false ;
113116 }
114117 return entity ;
115118 } ) ;
116119
117- todos . update ( entities , function ( err ) {
118- if ( err ) {
119- throw new Error ( err ) ;
120- }
121- init ( ) ;
120+ var updated = 0 ;
121+ entities . forEach ( function ( entity ) {
122+ todos . update ( entity . id , entity . data , function ( err ) {
123+ if ( err ) {
124+ throw err ;
125+ }
126+ if ( ++ updated === entities . length ) {
127+ init ( ) ;
128+ }
129+ } ) ;
122130 } ) ;
123131 } ) ;
124132 } ) ;
125133}
126134
127135function displayTodosAndDelete ( ) {
128- todos . getTodos ( function ( err , entities ) {
136+ todos . getAll ( function ( err , entities ) {
129137 if ( err ) {
130- throw new Error ( err ) ;
138+ throw err ;
131139 }
132140 inquirer . prompt ( {
133141 message : 'What would you like to delete?' ,
134142 name : 'completed' ,
135143 type : 'checkbox' ,
136144 choices : entities . map ( function ( entity ) {
137145 return {
138- name : entity . text ,
146+ name : entity . data . text ,
139147 checked : false ,
140148 value : entity
141149 } ;
142150 } )
143151 } , function ( answers ) {
144- todos . delete ( answers . completed , function ( err ) {
145- if ( err ) {
146- throw new Error ( err ) ;
147- }
148- init ( ) ;
152+ var deleted = 0 ;
153+ answers . completed . forEach ( function ( todo ) {
154+ todos . delete ( todo . id , function ( err ) {
155+ if ( err ) {
156+ throw err ;
157+ }
158+ if ( ++ deleted === answers . completed . length ) {
159+ init ( ) ;
160+ }
161+ } )
149162 } ) ;
150163 } ) ;
151164 } ) ;
@@ -154,7 +167,7 @@ function displayTodosAndDelete() {
154167function deleteCompleted ( ) {
155168 todos . deleteCompleted ( function ( err ) {
156169 if ( err ) {
157- throw new Error ( err ) ;
170+ throw err ;
158171 }
159172 init ( ) ;
160173 } ) ;
0 commit comments