2024-08-20 08:34:11 +02:00
|
|
|
package storage
|
|
|
|
|
2024-08-22 07:18:50 +02:00
|
|
|
import (
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"code.ewintr.nl/planner/planner"
|
|
|
|
)
|
2024-08-16 14:25:06 +02:00
|
|
|
|
|
|
|
type Memory struct {
|
2024-08-21 16:35:44 +02:00
|
|
|
items map[string]planner.Syncable
|
2024-08-16 14:25:06 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
func NewMemory() *Memory {
|
|
|
|
return &Memory{
|
2024-08-21 16:35:44 +02:00
|
|
|
items: make(map[string]planner.Syncable),
|
2024-08-16 14:25:06 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-08-22 07:18:50 +02:00
|
|
|
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 {
|
2024-08-21 16:35:44 +02:00
|
|
|
m.items[item.ID()] = item
|
2024-08-16 14:25:06 +02:00
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2024-08-21 16:35:44 +02:00
|
|
|
/*
|
2024-08-18 19:34:27 +02:00
|
|
|
func (m *Memory) RemoveProject(id string) error {
|
2024-08-21 16:35:44 +02:00
|
|
|
if _, ok := m.items[id]; !ok {
|
2024-08-18 19:34:27 +02:00
|
|
|
return ErrNotFound
|
|
|
|
}
|
2024-08-21 16:35:44 +02:00
|
|
|
delete(m.items, id)
|
2024-08-18 19:34:27 +02:00
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2024-08-16 14:25:06 +02:00
|
|
|
func (m *Memory) FindProject(id string) (Project, error) {
|
2024-08-21 16:35:44 +02:00
|
|
|
project, ok := m.items[id]
|
2024-08-16 14:25:06 +02:00
|
|
|
if !ok {
|
|
|
|
return Project{}, ErrNotFound
|
|
|
|
}
|
|
|
|
return project, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Memory) FindAllProjects() ([]Project, error) {
|
2024-08-21 16:35:44 +02:00
|
|
|
items := make([]Project, 0, len(m.items))
|
|
|
|
for _, p := range m.items {
|
|
|
|
items = append(items, p)
|
2024-08-16 14:25:06 +02:00
|
|
|
}
|
2024-08-21 16:35:44 +02:00
|
|
|
return items, nil
|
2024-08-16 14:25:06 +02:00
|
|
|
}
|
2024-08-21 16:35:44 +02:00
|
|
|
*/
|