cal mem repo
This commit is contained in:
parent
9f98a8a9da
commit
8f5390243d
|
@ -0,0 +1,60 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sync"
|
||||
|
||||
"go-mod.ewintr.nl/planner/item"
|
||||
)
|
||||
|
||||
type Memory struct {
|
||||
events map[string]item.Event
|
||||
mutex sync.RWMutex
|
||||
}
|
||||
|
||||
func NewMemory() *Memory {
|
||||
return &Memory{
|
||||
events: make(map[string]item.Event),
|
||||
}
|
||||
}
|
||||
|
||||
func (r *Memory) Find(id string) (item.Event, error) {
|
||||
r.mutex.RLock()
|
||||
defer r.mutex.RUnlock()
|
||||
|
||||
event, exists := r.events[id]
|
||||
if !exists {
|
||||
return item.Event{}, errors.New("event not found")
|
||||
}
|
||||
return event, nil
|
||||
}
|
||||
|
||||
func (r *Memory) FindAll() ([]item.Event, error) {
|
||||
r.mutex.RLock()
|
||||
defer r.mutex.RUnlock()
|
||||
|
||||
events := make([]item.Event, 0, len(r.events))
|
||||
for _, event := range r.events {
|
||||
events = append(events, event)
|
||||
}
|
||||
return events, nil
|
||||
}
|
||||
|
||||
func (r *Memory) Store(e item.Event) error {
|
||||
r.mutex.Lock()
|
||||
defer r.mutex.Unlock()
|
||||
|
||||
r.events[e.ID] = e
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *Memory) Delete(id string) error {
|
||||
r.mutex.Lock()
|
||||
defer r.mutex.Unlock()
|
||||
|
||||
if _, exists := r.events[id]; !exists {
|
||||
return errors.New("event not found")
|
||||
}
|
||||
delete(r.events, id)
|
||||
return nil
|
||||
}
|
|
@ -2,6 +2,7 @@ package main
|
|||
|
||||
import (
|
||||
"slices"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"go-mod.ewintr.nl/planner/item"
|
||||
|
@ -9,6 +10,7 @@ import (
|
|||
|
||||
type Memory struct {
|
||||
items map[string]item.Item
|
||||
mutex sync.RWMutex
|
||||
}
|
||||
|
||||
func NewMemory() *Memory {
|
||||
|
@ -18,12 +20,18 @@ func NewMemory() *Memory {
|
|||
}
|
||||
|
||||
func (m *Memory) Update(item item.Item) error {
|
||||
m.mutex.Lock()
|
||||
defer m.mutex.Unlock()
|
||||
|
||||
m.items[item.ID] = item
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Memory) Updated(kinds []item.Kind, timestamp time.Time) ([]item.Item, error) {
|
||||
m.mutex.RLock()
|
||||
defer m.mutex.RUnlock()
|
||||
|
||||
result := make([]item.Item, 0)
|
||||
|
||||
for _, i := range m.items {
|
||||
|
|
Loading…
Reference in New Issue