postgres and such
This commit is contained in:
@@ -3,15 +3,16 @@ package services
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/gofrs/uuid/v5"
|
||||
"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)
|
||||
List() ([]models.Todo, error)
|
||||
Get(id uuid.UUID) (models.Todo, error)
|
||||
Add(todo models.Todo) error
|
||||
Delete(id uuid.UUID) error
|
||||
Update(id uuid.UUID, name string, done bool) error
|
||||
}
|
||||
|
||||
type TodoService struct {
|
||||
@@ -24,11 +25,33 @@ func NewTodoService(db Db) *TodoService {
|
||||
}
|
||||
}
|
||||
|
||||
func (ts *TodoService) AddTodo(name string) (todo models.Todo, err error) {
|
||||
func (ts *TodoService) AddTodo(name string) (models.Todo, error) {
|
||||
if name == "" {
|
||||
return models.Todo{}, fmt.Errorf("Must provide a name")
|
||||
}
|
||||
return ts.db.Add(models.NewTodo(name, false))
|
||||
|
||||
id, err := uuid.NewV4()
|
||||
if err != nil {
|
||||
return models.Todo{}, err
|
||||
}
|
||||
|
||||
err = ts.db.Add(models.NewTodo(id, name, false))
|
||||
|
||||
if err != nil {
|
||||
return models.Todo{}, err
|
||||
}
|
||||
|
||||
return ts.db.Get(id)
|
||||
}
|
||||
|
||||
func (ts *TodoService) UpdateTodo(id uuid.UUID, name string, done bool) (models.Todo, error) {
|
||||
err := ts.db.Update(id, name, done)
|
||||
|
||||
if err != nil {
|
||||
return models.Todo{}, err
|
||||
}
|
||||
|
||||
return ts.db.Get(id)
|
||||
}
|
||||
|
||||
func (ts *TodoService) GetTodos() (todos []models.Todo, err error) {
|
||||
|
||||
Reference in New Issue
Block a user