mirror of
https://github.com/Forceu/Gokapi.git
synced 2026-01-07 09:29:33 -06:00
47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package filesystem
|
|
|
|
import (
|
|
"github.com/forceu/gokapi/internal/storage/filesystem/interfaces"
|
|
"github.com/forceu/gokapi/internal/storage/filesystem/localstorage"
|
|
"github.com/forceu/gokapi/internal/storage/filesystem/s3filesystem"
|
|
"github.com/forceu/gokapi/internal/storage/filesystem/s3filesystem/aws"
|
|
"log"
|
|
)
|
|
|
|
var dataFilesystem interfaces.System
|
|
var s3FileSystem interfaces.System
|
|
|
|
// ActiveStorageSystem is a driver for the storage system that is in use currently. Can be either
|
|
// the local filesystem or S3, depending on the configuration
|
|
var ActiveStorageSystem interfaces.System
|
|
|
|
// Init initializes the filesystems and must be called on start
|
|
func Init(pathData string) {
|
|
dataFilesystem = localstorage.GetDriver()
|
|
dataFilesystem.Init(localstorage.Config{
|
|
DataPath: pathData,
|
|
})
|
|
ActiveStorageSystem = dataFilesystem
|
|
}
|
|
|
|
// SetAws sets the AWS filesystem as the default storage
|
|
func SetAws() {
|
|
if aws.IsIncludedInBuild {
|
|
s3FileSystem = s3filesystem.GetDriver()
|
|
ok := s3FileSystem.Init(s3filesystem.Config{Bucket: aws.GetDefaultBucketName()})
|
|
if !ok && !isUnitTesting {
|
|
log.Println("Unable to set AWS S3 as filesystem")
|
|
return
|
|
}
|
|
ActiveStorageSystem = s3FileSystem
|
|
}
|
|
}
|
|
|
|
// SetLocal sets the local filesystem as the default storage
|
|
func SetLocal() {
|
|
ActiveStorageSystem = dataFilesystem
|
|
}
|
|
|
|
// isUnitTesting is only set to true when testing, to avoid login with aws
|
|
var isUnitTesting = false
|