package db import ( "fmt" "github.com/google/uuid" "michaelthomson.dev/mthomson/go-todos-app/models" ) type TodosStore struct { Todos []models.Todo } func (ts *TodosStore) List() (todo []models.Todo, err error) { return ts.Todos, nil } func (ts *TodosStore) Get(id uuid.UUID) (todo models.Todo, err error) { index := -1 for i, todo := range ts.Todos { if id == todo.Id { index = i } } if index == -1 { return models.Todo{}, fmt.Errorf("Could not find todo by id %q", id) } ts.Todos = append(ts.Todos[:index], ts.Todos[index + 1:]...) return ts.Todos[index], nil } func (ts *TodosStore) Add(todo models.Todo) (addedTodo models.Todo, err error) { ts.Todos = append(ts.Todos, todo) return todo, nil } func (ts *TodosStore) Delete(id uuid.UUID) (err error) { index := -1 for i, todo := range ts.Todos { if id == todo.Id { index = i } } if index == -1 { return fmt.Errorf("Could not find todo by id %q", id) } ts.Todos = append(ts.Todos[:index], ts.Todos[index + 1:]...) return nil } func NewTodoStore() TodosStore { return TodosStore{ Todos: []models.Todo{}, } }