@@ -9,7 +9,7 @@ export class TodosRepository extends Effect.Service<TodosRepository>()("api/Todo
99 Effect . map ( ( todos ) => Array . from ( HashMap . values ( todos ) ) )
1010 )
1111
12- function getById ( id : number ) : Effect . Effect < Todo , TodoNotFound > {
12+ function getById ( id : TodoId ) : Effect . Effect < Todo , TodoNotFound > {
1313 return Ref . get ( todos ) . pipe (
1414 Effect . flatMap ( HashMap . get ( id ) ) ,
1515 Effect . catchTag ( "NoSuchElementException" , ( ) => new TodoNotFound ( { id } ) )
@@ -18,20 +18,20 @@ export class TodosRepository extends Effect.Service<TodosRepository>()("api/Todo
1818
1919 function create ( text : string ) : Effect . Effect < Todo > {
2020 return Ref . modify ( todos , ( map ) => {
21- const id = TodoId . make ( HashMap . reduce ( map , 0 , ( max , todo ) => todo . id > max ? todo . id : max ) )
21+ const id = TodoId . make ( HashMap . reduce ( map , - 1 , ( max , todo ) => todo . id > max ? todo . id : max ) + 1 )
2222 const todo = new Todo ( { id, text, done : false } )
2323 return [ todo , HashMap . set ( map , id , todo ) ]
2424 } )
2525 }
2626
27- function complete ( id : number ) : Effect . Effect < Todo , TodoNotFound > {
27+ function complete ( id : TodoId ) : Effect . Effect < Todo , TodoNotFound > {
2828 return getById ( id ) . pipe (
2929 Effect . map ( ( todo ) => new Todo ( { ...todo , done : true } ) ) ,
3030 Effect . tap ( ( todo ) => Ref . update ( todos , HashMap . set ( todo . id , todo ) ) )
3131 )
3232 }
3333
34- function remove ( id : number ) : Effect . Effect < void , TodoNotFound > {
34+ function remove ( id : TodoId ) : Effect . Effect < void , TodoNotFound > {
3535 return getById ( id ) . pipe (
3636 Effect . flatMap ( ( todo ) => Ref . update ( todos , HashMap . remove ( todo . id ) ) )
3737 )
0 commit comments