import { Injectable } from '../domain/di/injectable' ; import { TodoRepository } from '../domain/todo/todo-repository' ; import { Todo } from '../domain/todo/todo' ; import { Id } from '../domain/todo/id' ; import { TodoNotFoundError } from '../domain/todo/todo-not-found-error' ; @ Injectable ( ) export class TodoInMemoryRepository implements TodoRepository { private readonly todos = new Map < Id , Todo > ( ) ; findAll ( ) { return Array . from ( this . todos . values ( ) ) ; } update ( id , todo ) { const oldTodo = this . todos . get ( id ) ; if ( oldTodo === undefined ) { throw new TodoNotFoundError ( ) ; } const updatedTodo = { ... oldTodo , ... todo } ; this . todos . set ( id , updatedTodo ) ; } create ( todo ) { this . todos . set ( todo . id , todo ) ; } }