makeshift/pkg/storage/memory.go

53 lines
1,001 B
Go

package storage
import (
"fmt"
"git.towk2.me/towk/makeshift/internal/kwargs"
)
type MemoryStorage struct {
Data map[string]any `json:"data"`
}
func (ms *MemoryStorage) Init() error {
ms.Data = map[string]any{}
return nil
}
func (ms *MemoryStorage) Cleanup() error {
return nil
}
func (ms *MemoryStorage) SetKWArgs(kw *kwargs.KWArgs) error {
ms.Data[kwargs.RESERVED_KEY] = kw
return nil
}
func (ms *MemoryStorage) GetKWArgs() (*kwargs.KWArgs, error) {
kw, err := ms.Get(kwargs.RESERVED_KEY)
if err != nil {
return nil, err
}
return kw.(*kwargs.KWArgs), err
}
func (ms *MemoryStorage) Get(k string) (any, error) {
v, ok := ms.Data[k]
if ok {
return v, nil
}
return nil, fmt.Errorf("value '%s' does not exist", k)
}
func (ms *MemoryStorage) Set(k string, v any) error {
if k == kwargs.RESERVED_KEY {
return fmt.Errorf("cannot set reserved key '%s' (use SetKWArgs() instead)", k)
}
ms.Data[k] = v
return nil
}
func (ms *MemoryStorage) GetData() any {
return ms.Data
}