package natsobj import ( "errors" "code.uint32.ru/tiny/storage/internal/errinternal" "github.com/nats-io/nats.go" ) var ( ErrNotFound = errinternal.ErrNotFound ) type Storage struct { store nats.ObjectStore } func New(store nats.ObjectStore) *Storage { return &Storage{store: store} } func (n *Storage) Save(key string, data []byte) error { if _, err := n.store.PutBytes(key, data); err != nil { return err } return nil } func (n *Storage) Load(key string) ([]byte, error) { b, err := n.store.GetBytes(key) if err != nil && errors.Is(err, nats.ErrObjectNotFound) { return nil, errors.Join(ErrNotFound, err) } else if err != nil { return nil, err } return b, nil } func (n *Storage) Delete(key string) error { err := n.store.Delete(key) if err != nil && errors.Is(err, nats.ErrObjectNotFound) { return nil } else if err != nil { return err } return nil }