Files
storage/storageutil/nats.go
Dmitry Fedotov 48878e8433 feat: working version
1. implemented filesystem storage, NATS object storage
and saving to Vault.
2. Test coverage is fine for filesystem and Vault
(and NATS object does not really require extensive tests)
2025-07-27 19:02:05 +03:00

37 lines
904 B
Go

package storageutil
import "github.com/nats-io/nats.go"
// CreateNatsObjectStore is a convenience function that
// connects to NATS and using provided url and creates
// new object store using bucket as bucket name.
// The object store uses NATS file storage and compression.
// If fine-tuning is required - just create the store in your
// code and pass it to the storage package.
func CreateNatsObjectStore(url string, bucket string) (nats.ObjectStore, *nats.Conn, error) {
nc, err := nats.Connect(url)
if err != nil {
return nil, nil, err
}
js, err := nc.JetStream()
if err != nil {
return nil, nil, err
}
cfg := &nats.ObjectStoreConfig{
Bucket: bucket,
Description: "tiny storage bucket",
MaxBytes: -1,
Storage: nats.FileStorage,
Compression: true,
}
store, err := js.CreateObjectStore(cfg)
if err != nil {
return nil, nil, err
}
return store, nc, nil
}