You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
920 B
Go

3 years ago
package implementations
import (
"errors"
"dymatrix.de/jspahl/todo/internal/interfaces"
)
type Item struct {
id int
message string
deleted bool
}
type User struct {
id int
}
type MemoryProvider struct {
index int
items []Item
itemsByUsers [][]*Item
}
func (prov MemoryProvider) CreateItem(item interfaces.IItem) error {
storedItem := Item{id: item.GetId(), message: item.GetMessage(), deleted: false}
prov.items = append(prov.items, storedItem)
return nil
}
func (prov MemoryProvider) UpdateItem(item interfaces.IItem) error {
storedItem, err := prov.GetItemPtr(item.GetId())
if err != nil {
return err
}
storedItem.message = item.GetMessage()
return nil
}
func (prov MemoryProvider) GetItemPtr(id int) (*Item, error) {
for i, item := range prov.items {
if item.id == id && !item.deleted {
return &prov.items[i], nil
}
}
return nil, errors.New("Item not found")
}