57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package storage
|
|
|
|
import (
|
|
"git.0x7f.app/WOJ/woj-server/internal/e"
|
|
"git.0x7f.app/WOJ/woj-server/internal/misc/config"
|
|
"git.0x7f.app/WOJ/woj-server/internal/misc/log"
|
|
"github.com/minio/minio-go/v7"
|
|
"github.com/minio/minio-go/v7/pkg/credentials"
|
|
"github.com/samber/do"
|
|
"go.uber.org/zap"
|
|
"time"
|
|
)
|
|
|
|
var _ Service = (*service)(nil)
|
|
|
|
type Service interface {
|
|
Upload(objectName string, expiry time.Duration) (string, e.Status)
|
|
Get(objectName string, expiry time.Duration) (string, e.Status)
|
|
|
|
HealthCheck() error
|
|
}
|
|
|
|
func NewService(i *do.Injector) (Service, error) {
|
|
conf := do.MustInvoke[config.Service](i).GetConfig()
|
|
|
|
srv := &service{
|
|
log: do.MustInvoke[log.Service](i).GetLogger("storage"),
|
|
bucket: conf.Storage.Bucket,
|
|
}
|
|
|
|
var err error
|
|
srv.client, err = minio.New(
|
|
conf.Storage.Endpoint,
|
|
&minio.Options{
|
|
Creds: credentials.NewStaticV4(conf.Storage.AccessKey, conf.Storage.SecretKey, ""),
|
|
Secure: conf.Storage.UseSSL,
|
|
},
|
|
)
|
|
|
|
if err != nil {
|
|
srv.log.Error("failed to create minio client", zap.Error(err))
|
|
return nil, err
|
|
}
|
|
|
|
return srv, nil
|
|
}
|
|
|
|
type service struct {
|
|
log *zap.Logger
|
|
client *minio.Client
|
|
bucket string
|
|
}
|
|
|
|
func (s *service) HealthCheck() error {
|
|
return nil
|
|
}
|