planner/storage/memory.go

63 lines
1.0 KiB
Go

package storage
import (
"time"
"code.ewintr.nl/planner/planner"
)
type Memory struct {
items map[string]planner.Syncable
}
func NewMemory() *Memory {
return &Memory{
items: make(map[string]planner.Syncable),
}
}
func (m *Memory) NewSince(timestamp time.Time) ([]planner.Syncable, error) {
result := make([]planner.Syncable, 0)
for _, i := range m.items {
if timestamp.IsZero() || i.Updated().After(timestamp) {
result = append(result, i)
}
}
return result, nil
}
func (m *Memory) Store(item planner.Syncable) error {
m.items[item.ID()] = item
return nil
}
/*
func (m *Memory) RemoveProject(id string) error {
if _, ok := m.items[id]; !ok {
return ErrNotFound
}
delete(m.items, id)
return nil
}
func (m *Memory) FindProject(id string) (Project, error) {
project, ok := m.items[id]
if !ok {
return Project{}, ErrNotFound
}
return project, nil
}
func (m *Memory) FindAllProjects() ([]Project, error) {
items := make([]Project, 0, len(m.items))
for _, p := range m.items {
items = append(items, p)
}
return items, nil
}
*/