gte/internal/storage/memory.go

70 lines
1.2 KiB
Go
Raw Normal View History

2021-06-25 09:14:27 +02:00
package storage
import (
"time"
"git.ewintr.nl/gte/internal/task"
)
// Memory is an in memory implementation of LocalRepository
type Memory struct {
tasks []*task.Task
latestSync time.Time
}
func NewMemory() *Memory {
return &Memory{
tasks: []*task.Task{},
}
}
func (m *Memory) LatestSync() (time.Time, error) {
return m.latestSync, nil
}
func (m *Memory) SetTasks(tasks []*task.Task) error {
nTasks := []*task.Task{}
for _, t := range tasks {
nt := *t
nt.Message = nil
nTasks = append(nTasks, &nt)
}
m.tasks = nTasks
m.latestSync = time.Now()
return nil
}
func (m *Memory) FindAllInFolder(folder string) ([]*task.Task, error) {
tasks := []*task.Task{}
for _, t := range m.tasks {
if t.Folder == folder {
tasks = append(tasks, t)
}
}
return tasks, nil
}
func (m *Memory) FindAllInProject(project string) ([]*task.Task, error) {
tasks := []*task.Task{}
for _, t := range m.tasks {
if t.Project == project {
tasks = append(tasks, t)
}
}
return tasks, nil
}
2021-07-10 12:30:38 +02:00
func (m *Memory) FindById(id string) (*task.Task, error) {
for _, t := range m.tasks {
if t.Id == id {
return t, nil
}
}
return &task.Task{}, ErrTaskNotFound
}