Files
simrsx-be/internal/infra/minio/minio.go
2025-09-24 14:24:57 +07:00

80 lines
1.6 KiB
Go

package minio
import (
"errors"
a "github.com/karincake/apem"
lo "github.com/karincake/apem/loggero"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
var O MinioCfg = MinioCfg{}
var I *minio.Client
type MinioCfg struct {
Endpoint string
Region string
AccessKey string `yaml:"accessKey"`
SecretKey string `yaml:"secretKey"`
UseSsl bool `yaml:"useSsl"`
BucketName []string `yaml:"bucketName"`
}
type ResponsePostPolicy struct {
Url string `json:"url"`
FormData map[string]string `json:"form-data"`
}
func (c MinioCfg) GetRegion() string {
return c.Region
}
func (c MinioCfg) GetEndpoint() string {
return c.Endpoint
}
func (c MinioCfg) GetUseSsl() bool {
return c.UseSsl
}
func (c MinioCfg) GetBucketName() []string {
return c.BucketName
}
// connect db
func Connect() {
a.ParseSingleCfg(&O)
NewClient(&O)
if I == nil {
panic("minio client is nil")
}
lo.I.Println("Instantiation for object storage service using Minio, status: DONE!!")
}
func NewClient(cfg *MinioCfg) error {
// Initialize minio client object.
endpoint := cfg.Endpoint
if endpoint == "" {
return errors.New("config minio endpoint empty")
}
accessKey := cfg.AccessKey
if accessKey == "" {
return errors.New("config minio access key empty")
}
secretKey := cfg.SecretKey
if secretKey == "" {
return errors.New("config minio secret key empty")
}
useSSL := cfg.UseSsl
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKey, secretKey, ""),
Secure: useSSL,
})
if err != nil {
return err
}
I = minioClient
return nil
}