Browse Source

添加数据库接口

yjp 2 months ago
parent
commit
3713fa2a2d

+ 24 - 1
framework/core/infrastructure/database/data_service/data_service.go

@@ -57,7 +57,7 @@ func (executor *Executor) ExecuteRawSqlTemplate(sqlStr string, executeParams map
 		return nil, errors.New(err.Error())
 	}
 
-	tableRows, err := sdk.GetInstance().ExecuteRawSql(parsedSql, args...)
+	tableRows, _, err := sdk.GetInstance().ExecuteRawSql(parsedSql, args...)
 	if err != nil {
 		return nil, errors.New(err.Error())
 	}
@@ -69,3 +69,26 @@ func (executor *Executor) ExecuteRawSqlTemplate(sqlStr string, executeParams map
 
 	return results, nil
 }
+
+func (executor *Executor) ExecuteRawSqlWithRowsAffected(sqlStr string, args ...any) ([]sql.Result, int64, error) {
+	return executor.ExecuteRawSqlTemplateWithRowsAffected(sqlStr, nil, args...)
+}
+
+func (executor *Executor) ExecuteRawSqlTemplateWithRowsAffected(sqlStr string, executeParams map[string]any, args ...any) ([]sql.Result, int64, error) {
+	parsedSql, err := template.ParseTemplateStringToString(sqlStr, executeParams)
+	if err != nil {
+		return nil, 0, errors.New(err.Error())
+	}
+
+	tableRows, rowsAffected, err := sdk.GetInstance().ExecuteRawSql(parsedSql, args...)
+	if err != nil {
+		return nil, 0, errors.New(err.Error())
+	}
+
+	results := make([]sql.Result, len(tableRows))
+	for i, row := range tableRows {
+		results[i] = row
+	}
+
+	return results, rowsAffected, nil
+}

+ 21 - 0
framework/core/infrastructure/database/database.go

@@ -32,6 +32,27 @@ type Executor interface {
 	// - SQL执行结果
 	// - 错误
 	ExecuteRawSqlTemplate(sql string, template map[string]any, args ...any) ([]sql.Result, error)
+
+	// ExecuteRawSqlWithRowsAffected SQL执行接口,返回影响行数
+	// 参数:
+	// - sql: SQL语句,可以使用预编译,需要填充的值用?占位
+	// - values: 预编译填充值
+	// 返回值:
+	// - SQL执行结果
+	// - 影响行数
+	// - 错误
+	ExecuteRawSqlWithRowsAffected(sql string, args ...any) ([]sql.Result, int64, error)
+
+	// ExecuteRawSqlTemplateWithRowsAffected SQL模板执行接口,返回影响行数
+	// 参数:
+	// - sql: SQL语句模板,可以使用预编译,需要填充的值用?占位,可以使用Go模板构造SQL语句
+	// - template: 渲染SQL语句模板的模板参数
+	// - values: 预编译填充值
+	// 返回值:
+	// - SQL执行结果
+	// - 影响行数
+	// - 错误
+	ExecuteRawSqlTemplateWithRowsAffected(sql string, template map[string]any, args ...any) ([]sql.Result, int64, error)
 }
 
 const (

+ 24 - 0
framework/core/infrastructure/database/operations/operations.go

@@ -166,3 +166,27 @@ func (op *Operations) ExecuteRawSqlTemplate(sqlStr string, executeParams map[str
 
 	return results, nil
 }
+
+func (op *Operations) ExecuteRawSqlWithRowsAffected(sqlStr string, args ...any) ([]sql.Result, int64, error) {
+	return op.ExecuteRawSqlTemplateWithRowsAffected(sqlStr, nil, args...)
+}
+
+func (op *Operations) ExecuteRawSqlTemplateWithRowsAffected(sqlStr string, executeParams map[string]any, args ...any) ([]sql.Result, int64, error) {
+	parsedSql, err := template.ParseTemplateStringToString(sqlStr, executeParams)
+	if err != nil {
+		return nil, 0, errors.New(err.Error())
+	}
+
+	tableRows := make([]map[string]any, 0)
+	tx := op.db.Raw(parsedSql, args...).Scan(&tableRows)
+	if tx.Error != nil {
+		return nil, 0, errors.New(tx.Error.Error())
+	}
+
+	results := make([]sql.Result, len(tableRows))
+	for i, row := range tableRows {
+		results[i] = row
+	}
+
+	return results, tx.RowsAffected, nil
+}

+ 3 - 1
go.mod

@@ -4,7 +4,8 @@ go 1.22.3
 
 require (
 	git.sxidc.com/go-tools/utils v1.5.29
-	git.sxidc.com/service-supports/ds-sdk v0.10.9
+	git.sxidc.com/service-supports/ds-sdk v0.10.12
+	git.sxidc.com/service-supports/fslog v0.5.9
 	github.com/dgrijalva/jwt-go v3.2.0+incompatible
 	github.com/eclipse/paho.mqtt.golang v1.4.3
 	github.com/gin-gonic/gin v1.10.0
@@ -80,6 +81,7 @@ require (
 	golang.org/x/sys v0.20.0 // indirect
 	golang.org/x/text v0.15.0 // indirect
 	golang.org/x/tools v0.6.0 // indirect
+	google.golang.org/genproto v0.0.0-20240318140521-94a12d6c2237 // indirect
 	google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
 	google.golang.org/grpc v1.64.0 // indirect
 	google.golang.org/protobuf v1.34.1 // indirect

+ 4 - 2
go.sum

@@ -1,7 +1,9 @@
 git.sxidc.com/go-tools/utils v1.5.29 h1:OUrjzmnjxn+Anmz6FK2X5Pr4ljyrq5qNBaDs1dJLM6g=
 git.sxidc.com/go-tools/utils v1.5.29/go.mod h1:uTDb6QK5JZzK5+Fzsfeng7TwmnRDZiTY6JLYxIX94Qw=
-git.sxidc.com/service-supports/ds-sdk v0.10.9 h1:KxoGUM+rP30rP81fARPwRMwDSJFaGsk8TjdINGTDIto=
-git.sxidc.com/service-supports/ds-sdk v0.10.9/go.mod h1:+jroYm+Hb2JeMI4FMWnDROu6rTmLM2j08dnjuPAMtv4=
+git.sxidc.com/service-supports/ds-sdk v0.10.12 h1:xg8uuSBPMVcPXXx7snPhZithgqxfJSJ8AZB+f1smE1o=
+git.sxidc.com/service-supports/ds-sdk v0.10.12/go.mod h1:QS5FgT3fyPbDl4ak6BO5IF7X4B6Z2uQWpRPskYb/oto=
+git.sxidc.com/service-supports/fslog v0.5.9 h1:q2XIK2o/fk/qmByy4x5kKLC+k7kolT5LrXHcWRSffXQ=
+git.sxidc.com/service-supports/fslog v0.5.9/go.mod h1:/m03ATmmOle75qtEgvEw8a1+Dcg6iHp08M1bGFXJTBU=
 github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
 github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
 github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g=

+ 2 - 2
test/mqtt_binding_test.go

@@ -50,8 +50,8 @@ func TestMqttBinding(t *testing.T) {
 			LogSkipPaths: []string{"test/version"},
 			MqttConfig: application.MqttConfig{
 				UserName:        "admin",
-				Password:        "mtyzxhc123",
-				Address:         "localhost:1883",
+				Password:        "mtyzxhc1231",
+				Address:         "emqx.sxidc.com:28739",
 				ClientID:        "test",
 				KeepAliveSec:    60,
 				PingTimeoutSec:  60,