Files
Gokapi/internal/storage/filesystem/FileSystem.go
2023-04-01 01:21:12 +02:00

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