package services import ( "fmt" "github.com/google/uuid" "michaelthomson.dev/mthomson/go-todos-app/models" ) type Db interface { List() (todo []models.Todo, err error) Get(id uuid.UUID) (todo models.Todo, err error) Add(todo models.Todo) (addedTodo models.Todo, err error) Delete(id uuid.UUID) (err error) } type TodoService struct { db Db } func NewTodoService(db Db) *TodoService { return &TodoService{ db: db, } } func (ts *TodoService) AddTodo(name string) (todo models.Todo, err error) { if name == "" { return models.Todo{}, fmt.Errorf("Must provide a name") } return ts.db.Add(models.NewTodo(name, false)) } func (ts *TodoService) GetTodos() (todos []models.Todo, err error) { return ts.db.List() } func (ts *TodoService) GetTodoById(id uuid.UUID) (todo models.Todo, err error) { return ts.db.Get(id) } func (ts *TodoService) DeleteTodoById(id uuid.UUID) (err error) { return ts.db.Delete(id) }