45 lines
955 B
Go
45 lines
955 B
Go
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)
|
|
}
|