• v1.0.0 1a34b84ee9

    Rene Nochebuena released this 2026-05-29 10:04:21 -06:00 | 0 commits to main since this release

    v1.0.0

    code.nochebuena.dev/einherjar/storage-minio


    Architecture Decisions Resolved

    Decision Outcome
    Provider interface scope PutObject, RemoveObject, GetObject, PresignedGetObject — covers the common ops; Native() is the escape hatch
    Native() escape hatch *miniogo.Client returned directly — callers that need multipart upload or bucket management import minio-go directly
    Health check mechanism BucketExists — verifies both connectivity and bucket availability
    Health priority LevelCritical — object storage outage halts the service

    API

    import "code.nochebuena.dev/einherjar/storage-minio"
    
    // Interfaces
    type Provider interface {
        PutObject(ctx context.Context, bucket, key string, reader io.Reader, size int64, opts miniogo.PutObjectOptions) (miniogo.UploadInfo, error)
        RemoveObject(ctx context.Context, bucket, key string, opts miniogo.RemoveObjectOptions) error
        GetObject(ctx context.Context, bucket, key string, opts miniogo.GetObjectOptions) (*miniogo.Object, error)
        PresignedGetObject(ctx context.Context, bucket, key string, expires time.Duration, reqParams url.Values) (*url.URL, error)
        HandleError(err error) error
    }
    type Component interface {
        lifecycle.Component
        observability.Checkable
        observability.Identifiable
        Provider
        Native() *miniogo.Client
    }
    
    // Config
    type Config struct {
        Endpoint  string `env:"EINHERJAR_MINIO_ENDPOINT,required"`
        AccessKey string `env:"EINHERJAR_MINIO_ACCESS_KEY,required"`
        SecretKey string `env:"EINHERJAR_MINIO_SECRET_KEY,required"`
        Bucket    string `env:"EINHERJAR_MINIO_BUCKET,required"`
        UseSSL    bool   `env:"EINHERJAR_MINIO_USE_SSL"   envDefault:"false"`
        Region    string `env:"EINHERJAR_MINIO_REGION"    envDefault:"us-east-1"`
    }
    func DefaultConfig() Config
    
    // Constructor
    func New(logger logging.Logger, cfg Config) Component
    
    // Package-level error handler (also available as Provider.HandleError)
    func HandleError(err error) error
    

    Install

    go get code.nochebuena.dev/einherjar/storage-minio@v1.0.0
    

    Dependencies

    Module Version Role
    code.nochebuena.dev/einherjar/contracts v1.0.0 lifecycle.Component, observability.Checkable, logging.Logger
    code.nochebuena.dev/einherjar/core v1.0.0 xerrors
    github.com/minio/minio-go/v7 v7.1.0 MinIO/S3 client
    Downloads