This is an automated email from the ASF dual-hosted git repository.

thunguo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-seata-go-samples.git


The following commit(s) were added to refs/heads/main by this push:
     new 2d2c9b7  refactor: eliminate hardcoded database DSNs across all 
samples using util helpers (#101)
2d2c9b7 is described below

commit 2d2c9b73fb1b3733b0433b8b960d22b5cc5b1973
Author: tachibana22 <[email protected]>
AuthorDate: Thu Jun 25 20:11:14 2026 +0800

    refactor: eliminate hardcoded database DSNs across all samples using util 
helpers (#101)
---
 at/gorm/main.go              |  9 +++------
 at/grpc/service/service.go   |  9 ++-------
 tcc/fence/service/service.go | 37 +++++++------------------------------
 util/db.go                   | 10 ++++++++++
 xa/gorm/main.go              |  9 +++------
 5 files changed, 25 insertions(+), 49 deletions(-)

diff --git a/at/gorm/main.go b/at/gorm/main.go
index e2a3e54..bb3f8fd 100644
--- a/at/gorm/main.go
+++ b/at/gorm/main.go
@@ -19,13 +19,12 @@ package main
 
 import (
        "context"
-       "database/sql"
        "time"
 
        "gorm.io/driver/mysql"
        "gorm.io/gorm"
+       "seata.apache.org/seata-go-samples/util"
        "seata.apache.org/seata-go/pkg/client"
-       sql2 "seata.apache.org/seata-go/pkg/datasource/sql"
        "seata.apache.org/seata-go/pkg/tm"
 )
 
@@ -65,11 +64,9 @@ func initConfig() {
 var gormDB *gorm.DB
 
 func initDB() {
-       sqlDB, err := sql.Open(sql2.SeataATMySQLDriver, 
"root:12345678@tcp(127.0.0.1:3306)/seata_client?multiStatements=true&interpolateParams=true")
-       if err != nil {
-               panic("init service error")
-       }
+       sqlDB := util.GetAtMySqlDb()
 
+       var err error
        gormDB, err = gorm.Open(mysql.New(mysql.Config{
                Conn: sqlDB,
        }), &gorm.Config{})
diff --git a/at/grpc/service/service.go b/at/grpc/service/service.go
index 50cc655..5e859fc 100644
--- a/at/grpc/service/service.go
+++ b/at/grpc/service/service.go
@@ -25,8 +25,7 @@ import (
 
        "google.golang.org/protobuf/types/known/wrapperspb"
        __ "seata.apache.org/seata-go-samples/at/grpc/pb"
-
-       sql2 "seata.apache.org/seata-go/pkg/datasource/sql"
+       "seata.apache.org/seata-go-samples/util"
 )
 
 var (
@@ -34,11 +33,7 @@ var (
 )
 
 func InitService() {
-       var err error
-       db, err = sql.Open(sql2.SeataATMySQLDriver, 
"root:12345678@tcp(127.0.0.1:3306)/seata_client?multiStatements=true&interpolateParams=true")
-       if err != nil {
-               panic("init service error")
-       }
+       db = util.GetAtMySqlDb()
 }
 
 type GrpcBusinessService struct {
diff --git a/tcc/fence/service/service.go b/tcc/fence/service/service.go
index 8680d2b..7fc6237 100644
--- a/tcc/fence/service/service.go
+++ b/tcc/fence/service/service.go
@@ -19,21 +19,16 @@ package service
 
 import (
        "context"
-       "database/sql"
        "fmt"
        "sync"
 
+       "seata.apache.org/seata-go-samples/util"
        "seata.apache.org/seata-go/pkg/rm/tcc"
        "seata.apache.org/seata-go/pkg/rm/tcc/fence"
        "seata.apache.org/seata-go/pkg/tm"
        "seata.apache.org/seata-go/pkg/util/log"
 )
 
-const (
-       DriverName = "mysql"
-       Url        = 
"root:root@tcp(127.0.0.1:3306)/seata?charset=utf8&parseTime=True"
-)
-
 var (
        tccService     *tcc.TCCServiceProxy
        tccServiceOnce sync.Once
@@ -59,10 +54,7 @@ func NewTestTCCServiceBusinessProxy() *tcc.TCCServiceProxy {
 }
 
 func (T TestTCCServiceBusiness) Prepare(ctx context.Context, params 
interface{}) (b bool, err error) {
-       db, err := sql.Open(DriverName, Url)
-       if err != nil {
-               return false, fmt.Errorf("database connect failed, msg :%s", 
err.Error())
-       }
+       db := util.GetTccMySqlDb()
        defer func() {
                _ = db.Close()
        }()
@@ -88,10 +80,7 @@ func (T TestTCCServiceBusiness) Prepare(ctx context.Context, 
params interface{})
 }
 
 func (T TestTCCServiceBusiness) Commit(ctx context.Context, 
businessActionContext *tm.BusinessActionContext) (b bool, err error) {
-       db, err := sql.Open(DriverName, Url)
-       if err != nil {
-               return false, fmt.Errorf("database connect failed, msg :%s", 
err.Error())
-       }
+       db := util.GetTccMySqlDb()
        defer func() {
                _ = db.Close()
        }()
@@ -117,10 +106,7 @@ func (T TestTCCServiceBusiness) Commit(ctx 
context.Context, businessActionContex
 }
 
 func (T TestTCCServiceBusiness) Rollback(ctx context.Context, 
businessActionContext *tm.BusinessActionContext) (b bool, err error) {
-       db, err := sql.Open(DriverName, Url)
-       if err != nil {
-               return false, fmt.Errorf("database connect failed, msg :%s", 
err.Error())
-       }
+       db := util.GetTccMySqlDb()
        defer func() {
                _ = db.Close()
        }()
@@ -169,10 +155,7 @@ func NewTestTCCServiceBusiness2Proxy() 
*tcc.TCCServiceProxy {
 }
 
 func (T TestTCCServiceBusiness2) Prepare(ctx context.Context, params 
interface{}) (b bool, err error) {
-       db, err := sql.Open(DriverName, Url)
-       if err != nil {
-               return false, fmt.Errorf("database connect failed, msg :%s", 
err.Error())
-       }
+       db := util.GetTccMySqlDb()
        defer func() {
                _ = db.Close()
        }()
@@ -198,10 +181,7 @@ func (T TestTCCServiceBusiness2) Prepare(ctx 
context.Context, params interface{}
 }
 
 func (T TestTCCServiceBusiness2) Commit(ctx context.Context, 
businessActionContext *tm.BusinessActionContext) (b bool, err error) {
-       db, err := sql.Open(DriverName, Url)
-       if err != nil {
-               return false, fmt.Errorf("database connect failed, msg :%s", 
err.Error())
-       }
+       db := util.GetTccMySqlDb()
        defer func() {
                _ = db.Close()
        }()
@@ -227,10 +207,7 @@ func (T TestTCCServiceBusiness2) Commit(ctx 
context.Context, businessActionConte
 }
 
 func (T TestTCCServiceBusiness2) Rollback(ctx context.Context, 
businessActionContext *tm.BusinessActionContext) (b bool, err error) {
-       db, err := sql.Open(DriverName, Url)
-       if err != nil {
-               return false, fmt.Errorf("database connect failed, msg :%s", 
err.Error())
-       }
+       db := util.GetTccMySqlDb()
        defer func() {
                _ = db.Close()
        }()
diff --git a/util/db.go b/util/db.go
index 1efff10..4ef4a1b 100644
--- a/util/db.go
+++ b/util/db.go
@@ -44,6 +44,16 @@ func GetXAMySqlDb() *sql.DB {
        return dbAt
 }
 
+func GetTccMySqlDb() *sql.DB {
+       defaultEnv()
+       dsn := 
os.ExpandEnv("${MYSQL_USERNAME}:${MYSQL_PASSWORD}@tcp(${MYSQL_HOST}:${MYSQL_PORT})/${MYSQL_DB}?charset=utf8&parseTime=True")
+       dbTcc, err := sql.Open("mysql", dsn)
+       if err != nil {
+               panic("init tcc mysql driver error")
+       }
+       return dbTcc
+}
+
 func defaultEnv() {
        if os.Getenv("MYSQL_HOST") == "" {
                _ = os.Setenv("MYSQL_HOST", "127.0.0.1")
diff --git a/xa/gorm/main.go b/xa/gorm/main.go
index a40b37b..08a4426 100644
--- a/xa/gorm/main.go
+++ b/xa/gorm/main.go
@@ -19,13 +19,12 @@ package main
 
 import (
        "context"
-       "database/sql"
        "time"
 
        "gorm.io/driver/mysql"
        "gorm.io/gorm"
+       "seata.apache.org/seata-go-samples/util"
        "seata.apache.org/seata-go/pkg/client"
-       sql2 "seata.apache.org/seata-go/pkg/datasource/sql"
        "seata.apache.org/seata-go/pkg/tm"
 )
 
@@ -72,11 +71,9 @@ func initConfig() {
 var gormDB *gorm.DB
 
 func initDB() {
-       sqlDB, err := sql.Open(sql2.SeataXAMySQLDriver, 
"root:12345678@tcp(127.0.0.1:3306)/seata_client?multiStatements=true&interpolateParams=true")
-       if err != nil {
-               panic("init service error")
-       }
+       sqlDB := util.GetXAMySqlDb()
 
+       var err error
        gormDB, err = gorm.Open(mysql.New(mysql.Config{
                Conn: sqlDB,
        }), &gorm.Config{})


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to