You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@seata.apache.org by te...@apache.org on 2026/06/25 12:11:18 UTC

(incubator-seata-go-samples) branch main updated: refactor: eliminate hardcoded database DSNs across all samples using util helpers (#101)

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 <19...@qq.com>
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: notifications-unsubscribe@seata.apache.org
For additional commands, e-mail: notifications-help@seata.apache.org