29 lines
1.0 KiB
Go
29 lines
1.0 KiB
Go
// Package objectstore provides an S3-compatible object storage abstraction.
|
|
// It can be used by any part of the system that needs to store or retrieve
|
|
// objects from S3, GCS (via S3 interop), MinIO, R2, or other S3-compatible stores.
|
|
package objectstore
|
|
|
|
import "context"
|
|
|
|
// ObjectStore abstracts S3-compatible blob storage operations.
|
|
type ObjectStore interface {
|
|
// Put uploads data to the given key with optional tags.
|
|
// The implementation handles compression (e.g., gzip) internally.
|
|
Put(ctx context.Context, key string, data []byte, tags map[string]string) error
|
|
|
|
// Get retrieves and decompresses data for the given key.
|
|
Get(ctx context.Context, key string) ([]byte, error)
|
|
|
|
// Delete removes an object by key.
|
|
Delete(ctx context.Context, key string) error
|
|
|
|
// DeleteBatch removes multiple objects by key.
|
|
DeleteBatch(ctx context.Context, keys []string) error
|
|
|
|
// Ping checks connectivity to the storage backend.
|
|
Ping(ctx context.Context) error
|
|
|
|
// Close releases resources held by the store.
|
|
Close() error
|
|
}
|