39 lines
1 KiB
Go
39 lines
1 KiB
Go
package mstore
|
|
|
|
import (
|
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/meta"
|
|
"github.com/FAU-CDI/wisski-distillery/internal/wisski/ingredient"
|
|
)
|
|
|
|
// MStore implements metadata storage for this WissKI
|
|
type MStore struct {
|
|
ingredient.Base
|
|
*meta.Storage
|
|
}
|
|
|
|
// For is a Store for the provided value
|
|
type For[Value any] meta.TypedKey[Value]
|
|
|
|
func (f For[Value]) Get(m *MStore) (value Value, err error) {
|
|
return meta.TypedKey[Value](f).Get(m.Storage)
|
|
}
|
|
|
|
func (f For[Value]) GetAll(m *MStore) (values []Value, err error) {
|
|
return meta.TypedKey[Value](f).GetAll(m.Storage)
|
|
}
|
|
|
|
func (f For[Value]) GetOrSet(m *MStore, dflt Value) (value Value, err error) {
|
|
return meta.TypedKey[Value](f).GetOrSet(m.Storage, dflt)
|
|
}
|
|
|
|
func (f For[Value]) Set(m *MStore, value Value) error {
|
|
return meta.TypedKey[Value](f).Set(m.Storage, value)
|
|
}
|
|
|
|
func (f For[Value]) SetAll(m *MStore, values ...Value) error {
|
|
return meta.TypedKey[Value](f).SetAll(m.Storage, values...)
|
|
}
|
|
|
|
func (f For[Value]) Delete(m *MStore) error {
|
|
return m.Storage.Delete(meta.Key(f))
|
|
}
|