Installation¶
Requirements¶
- Go 1.21 or later
Install¶
Backend-Specific Dependencies¶
The core package has minimal dependencies. Cloud backends are in separate packages:
Core Backends (Included)¶
These backends have minimal or no external dependencies:
object/backend/file- Local filesystem (no external deps)object/backend/memory- In-memory storage (no external deps)object/backend/channel- Go channels (no external deps)object/backend/sftp- SSH file transfer (usespkg/sftp)object/backend/dropbox- Dropbox cloud storage
Cloud Backends (Separate Packages)¶
Cloud backends with vendor SDKs are in separate repositories:
# AWS S3 backend
go get github.com/plexusone/omni-aws/omnistorage/s3
# Google Cloud Storage
go get github.com/plexusone/omni-google/omnistorage/gcs
# Google Drive
go get github.com/plexusone/omni-google/omnistorage/drive
Compression¶
Zstandard compression is included in the core:
This uses github.com/klauspost/compress.
Import Patterns¶
Aggregator Import (Recommended)¶
Import the root package to auto-register all core backends:
import "github.com/plexusone/omnistorage-core"
// All core backends registered: channel, dropbox, file, memory, sftp
backend, _ := omnistorage.Open("file", map[string]string{"root": "/data"})
Direct Backend Usage¶
import (
"github.com/plexusone/omnistorage-core/object/backend/file"
"github.com/plexusone/omnistorage-core/object/backend/memory"
)
// Use backends directly
fileBackend := file.New(file.Config{Root: "/data"})
memBackend := memory.New()
Selective Registry Pattern¶
import (
"github.com/plexusone/omnistorage-core/object"
// Side-effect imports register only specific backends
_ "github.com/plexusone/omnistorage-core/object/backend/file"
_ "github.com/plexusone/omnistorage-core/object/backend/memory"
)
// Open by name from configuration
backend, _ := object.Open("file", map[string]string{
"root": "/data",
})
Verify Installation¶
package main
import (
"fmt"
"github.com/plexusone/omnistorage-core"
)
func main() {
backends := omnistorage.Backends()
fmt.Println("Registered backends:", backends)
// Output: Registered backends: [channel dropbox file memory sftp]
}
Next Steps¶
- Quick Start - Learn the basics
- Concepts - Understand the architecture