Files
storage/internal/natsobj/nats_store.go

50 lines
893 B
Go
Raw Permalink Normal View History

2025-07-06 22:59:08 +03:00
package natsobj
import (
"errors"
"code.uint32.ru/tiny/storage/internal/errinternal"
2025-07-06 22:59:08 +03:00
"github.com/nats-io/nats.go"
)
var (
ErrNotFound = errinternal.ErrNotFound
)
2025-07-06 22:59:08 +03:00
type Storage struct {
store nats.ObjectStore
}
func New(store nats.ObjectStore) *Storage {
return &Storage{store: store}
2025-07-06 22:59:08 +03:00
}
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 {
2025-07-06 22:59:08 +03:00
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 {
2025-07-06 22:59:08 +03:00
return err
}
return nil
}