diff --git a/db/db.go b/db/db.go index 0e00356..e5600d6 100644 --- a/db/db.go +++ b/db/db.go @@ -18,13 +18,18 @@ package db import ( + "context" "database/sql" "fmt" + "os" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/s3" _ "github.com/go-sql-driver/mysql" ) var handle *sql.DB +var s3client *s3.Client func Init(username, password, protocol, address, database string) error { var err error @@ -34,6 +39,15 @@ func Init(username, password, protocol, address, database string) error { return fmt.Errorf("failed to open database connection: %s", err) } + if os.Getenv("AWS_ENDPOINT_URL_S3") != "" { + cfg, err := config.LoadDefaultConfig(context.TODO()) + if err != nil { + return err + } + + s3client = s3.NewFromConfig(cfg) + } + /*conns := 64 handle.SetMaxOpenConns(conns) diff --git a/db/savedata.go b/db/savedata.go index 9f77ed8..de4f510 100644 --- a/db/savedata.go +++ b/db/savedata.go @@ -28,7 +28,6 @@ import ( "github.com/pagefaultgames/rogueserver/defs" "github.com/aws/aws-sdk-go-v2/aws" - "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3" ) @@ -110,12 +109,6 @@ func StoreSystemSaveData(uuid []byte, data defs.SystemSaveData) error { } func StoreSystemSaveDataS3(uuid []byte, data defs.SystemSaveData) error { - cfg, _ := config.LoadDefaultConfig(context.TODO()) - - client := s3.NewFromConfig(cfg, func(o *s3.Options) { - o.BaseEndpoint = aws.String(os.Getenv("AWS_ENDPOINT_URL_S3")) - }) - username, err := FetchUsernameFromUUID(uuid) if err != nil { return err @@ -128,7 +121,7 @@ func StoreSystemSaveDataS3(uuid []byte, data defs.SystemSaveData) error { return err } - _, err = client.PutObject(context.Background(), &s3.PutObjectInput{ + _, err = s3client.PutObject(context.Background(), &s3.PutObjectInput{ Bucket: aws.String(os.Getenv("S3_SYSTEM_BUCKET_NAME")), Key: aws.String(username), Body: buf, @@ -235,19 +228,10 @@ func GetSystemSaveFromS3(uuid []byte) (defs.SystemSaveData, error) { return system, err } - cfg, err := config.LoadDefaultConfig(context.TODO()) - if err != nil { - return system, err - } - - client := s3.NewFromConfig(cfg) - - s3Object := s3.GetObjectInput{ + resp, err := s3client.GetObject(context.TODO(), &s3.GetObjectInput{ Bucket: aws.String(os.Getenv("S3_SYSTEM_BUCKET_NAME")), Key: aws.String(username), - } - - resp, err := client.GetObject(context.TODO(), &s3Object) + }) if err != nil { return system, err }