Storage

Functions

Public API reference for the Storage extension

Extension Entry Points

FunctionDescription
NewExtension(opts ...ConfigOption) forge.ExtensionCreate the storage extension with functional options
NewExtensionWithConfig(config Config) forge.ExtensionCreate the storage extension with a complete config
DefaultConfig() ConfigReturns the default configuration

DI Helpers -- Manager

FunctionDescription
GetManager(c forge.Container) (*StorageManager, error)Resolve the storage manager from the container
MustGetManager(c forge.Container) *StorageManagerSame but panics on error
GetManagerFromApp(app forge.App) (*StorageManager, error)Resolve the storage manager from an app
MustGetManagerFromApp(app forge.App) *StorageManagerSame but panics on error

DI Helpers -- Default Backend

FunctionDescription
GetDefault(c forge.Container) (Storage, error)Resolve the default Storage backend
MustGetDefault(c forge.Container) StorageSame but panics on error
GetDefaultFromApp(app forge.App) (Storage, error)Resolve the default backend from an app
MustGetDefaultFromApp(app forge.App) StorageSame but panics on error

DI Helpers -- Named Backend

FunctionDescription
GetStorage(c forge.Container, name) (Storage, error)Resolve a named backend from the container
MustGetStorage(c forge.Container, name) StorageSame but panics on error
GetBackend(c forge.Container, name) (Storage, error)Alias for GetStorage
MustGetBackend(c forge.Container, name) StorageAlias for MustGetStorage
GetNamedBackend(c forge.Container, name) (Storage, error)Alias for GetStorage
MustGetNamedBackend(c forge.Container, name) StorageAlias for MustGetStorage

Storage Interface

The core interface implemented by all backends:

MethodDescription
Upload(ctx, key, data, opts...) errorUpload an object. Options: WithContentType, WithMetadata, WithACL
Download(ctx, key) (io.ReadCloser, error)Download an object. Caller must close the reader
Delete(ctx, key) errorDelete an object
List(ctx, prefix, opts...) ([]Object, error)List objects by prefix. Options: WithLimit, WithMarker, WithRecursive
Metadata(ctx, key) (*ObjectMetadata, error)Get object metadata without downloading content
Exists(ctx, key) (bool, error)Check whether an object exists
Copy(ctx, srcKey, dstKey) errorCopy an object within the same backend
Move(ctx, srcKey, dstKey) errorMove an object (copy + delete)
PresignUpload(ctx, key, expiry) (string, error)Generate a presigned upload URL
PresignDownload(ctx, key, expiry) (string, error)Generate a presigned download URL

StorageManager Methods

The manager delegates to the default backend and provides multi-backend access:

MethodDescription
Backend(name) StorageGet a specific named backend
DefaultBackend() (Storage, error)Get the default backend
GetURL(ctx, key) stringGet a URL for the object (CDN or presigned)
HealthDetailed(ctx, checkAll) (*OverallHealth, error)Detailed health report
BackendHealth(ctx, name) (*BackendHealth, error)Health status for a specific backend
HealthCheckAll(ctx) map[string]*BackendHealthHealth status for all backends

The manager also proxies all Storage interface methods to the default backend.

Upload and List Options

Upload Options

FunctionDescription
WithContentType(contentType)Set the content type (default: application/octet-stream)
WithMetadata(metadata)Attach key-value metadata to the object
WithACL(acl)Set access control (default: private)

List Options

FunctionDescription
WithLimit(limit)Maximum objects to return (default: 1000)
WithMarker(marker)Pagination cursor for the next page
WithRecursive(recursive)Include objects in subdirectories (default: false)

How is this guide?

On this page