narasiahli-be/config/config/minio.config.go

56 lines
1.5 KiB
Go

package config
import (
"context"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"log"
)
// MinioSetup struct
type MinioStorage struct {
Cfg *Config
}
func NewMinio(cfg *Config) *MinioStorage {
minioSetup := &MinioStorage{
Cfg: cfg,
}
return minioSetup
}
func (_minio *MinioStorage) ConnectMinio() (*minio.Client, error) {
ctx := context.Background()
endpoint := _minio.Cfg.ObjectStorage.MinioStorage.Endpoint
accessKeyID := _minio.Cfg.ObjectStorage.MinioStorage.AccessKeyID
secretAccessKey := _minio.Cfg.ObjectStorage.MinioStorage.SecretAccessKey
useSSL := _minio.Cfg.ObjectStorage.MinioStorage.UseSSL
bucketName := _minio.Cfg.ObjectStorage.MinioStorage.BucketName
location := _minio.Cfg.ObjectStorage.MinioStorage.Location
// Initialize minio client object.
minioClient, errInit := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
Secure: useSSL,
})
if errInit != nil {
log.Fatalln(errInit)
}
err := minioClient.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{Region: location})
if err != nil {
// Check to see if we already own this bucket (which happens if you run this twice)
exists, errBucketExists := minioClient.BucketExists(ctx, bucketName)
if errBucketExists == nil && exists {
log.Printf("We already own %s\n", bucketName)
} else {
log.Fatalln(err)
}
} else {
log.Printf("Successfully created %s\n", bucketName)
}
return minioClient, errInit
}