yjp 1 anno fa
parent
commit
098be7e949
8 ha cambiato i file con 175 aggiunte e 17 eliminazioni
  1. 0 4
      client/data_source.go
  2. 126 0
      demo/demo.go
  3. 3 2
      go.mod
  4. 2 0
      go.sum
  5. 0 11
      sdk/db_operations.go
  6. 8 0
      sdk/instance.go
  7. 4 0
      sdk/options.go
  8. 32 0
      sdk/sdk.go

+ 0 - 4
client/data_source.go

@@ -8,10 +8,6 @@ import (
 	"strconv"
 )
 
-const (
-	DataSourceTypeDatabase = "database"
-)
-
 const (
 	createDataSourceUrl = "/ds/api/v1/dataSource/create"
 	deleteDataSourceUrl = "/ds/api/v1/dataSource/delete"

+ 126 - 0
demo/demo.go

@@ -0,0 +1,126 @@
+package main
+
+import (
+	"git.sxidc.com/go-tools/utils/strutils"
+	"git.sxidc.com/service-supports/ds-sdk/sdk"
+	"math/rand"
+)
+
+const (
+	token         = "IpTTwAQweh/BP51fz5CzWKQFaXHvZe6ewvk6yOcAOkU="
+	baseUrl       = "http://localhost:10000"
+	namespace     = "ns-sdk-demo"
+	dataSource    = "ds-sdk-demo"
+	dataContainer = "dc-sdk-demo"
+	sql           = "delete-sdk-demo"
+)
+
+var (
+	dataSourceMap = map[string]any{
+		"type":                 "postgres",
+		"user_name":            "test",
+		"password":             "123456",
+		"address":              "localhost",
+		"port":                 "30432",
+		"database":             "test",
+		"max_connections":      40,
+		"max_idle_connections": 10,
+	}
+
+	dataContainerMap = map[string]any{
+		"table_name": "test.classes",
+		"columns": []map[string]any{
+			{
+				"name":        "id",
+				"type":        "varchar(32)",
+				"comment":     "id",
+				"primary_key": true,
+			},
+			{
+				"name":     "name",
+				"type":     "varchar(128)",
+				"comment":  "班名",
+				"not_null": true,
+			},
+			{
+				"name":    "student_num",
+				"type":    "integer",
+				"comment": "学生数量",
+				"default": 60,
+			},
+		},
+	}
+
+	sqlSpecMap = map[string]any{
+		"transaction": true,
+		"clauses":     `- DELETE FROM test.classes WHERE id = '{{ .id }}'`,
+	}
+)
+
+func main() {
+	classID := strutils.SimpleUUID()
+	className := strutils.SimpleUUID()
+	studentNum := rand.Int31n(100)
+
+	err := sdk.InitInstance(token, baseUrl, namespace, &sdk.DataSourceOption{
+		Name: dataSource,
+		Type: sdk.DataSourceTypeDatabase,
+		Spec: dataSourceMap,
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	defer func() {
+		err := sdk.DestroyInstance()
+		if err != nil {
+			panic(err)
+		}
+	}()
+
+	err = sdk.GetInstance().CreateDataContainer(dataContainer, dataContainerMap)
+	if err != nil {
+		panic(err)
+	}
+
+	err = sdk.GetInstance().GetDBOperations().Table("test.classes").Create(map[string]any{
+		"id":          classID,
+		"name":        className,
+		"student_num": studentNum,
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	tableRow, err := sdk.GetInstance().GetDBOperations().
+		Table("test.classes").
+		Where("id = ?", classID).
+		Row()
+	if err != nil {
+		panic(err)
+	}
+
+	if tableRow["id"] != classID || tableRow["name"] != className || tableRow["student_num"] != int32(studentNum) {
+		panic("数据查询错误")
+	}
+
+	err = sdk.GetInstance().CreateSQL(sql, sqlSpecMap)
+	if err != nil {
+		panic(err)
+	}
+
+	_, err = sdk.GetInstance().ExecuteSql(sql, map[string]any{"id": classID})
+	if err != nil {
+		panic(err)
+	}
+
+	err = sdk.GetInstance().DeleteSQL(sql)
+	if err != nil {
+		panic(err)
+	}
+
+	err = sdk.GetInstance().DeleteDataContainer(dataContainer)
+	if err != nil {
+		panic(err)
+	}
+}

+ 3 - 2
go.mod

@@ -5,13 +5,14 @@ go 1.22.0
 require (
 	git.sxidc.com/go-tools/api_binding v1.3.23
 	git.sxidc.com/go-tools/utils v1.5.1
-	git.sxidc.com/service-supports/fserr v0.3.2
+	git.sxidc.com/service-supports/fslog v0.5.9
+	github.com/mitchellh/mapstructure v1.5.0
 	gorm.io/driver/postgres v1.5.7
 	gorm.io/gorm v1.25.9
 )
 
 require (
-	git.sxidc.com/service-supports/fslog v0.5.9 // indirect
+	git.sxidc.com/service-supports/fserr v0.3.2 // indirect
 	git.sxidc.com/service-supports/websocket v1.3.1 // indirect
 	github.com/bytedance/sonic v1.10.0 // indirect
 	github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect

+ 2 - 0
go.sum

@@ -71,6 +71,8 @@ github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
 github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
 github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
 github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
+github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=

+ 0 - 11
sdk/db_operations.go

@@ -1,11 +0,0 @@
-package sdk
-
-import "git.sxidc.com/service-supports/ds-sdk/db_operations"
-
-func NewDBOperations(dbConfig *db_operations.DBConfig) (db_operations.DBOperations, error) {
-	return db_operations.NewOperations(dbConfig)
-}
-
-func DestroyDBOperations(dbOps db_operations.DBOperations) error {
-	return db_operations.DestroyOperation(dbOps.(*db_operations.Operations))
-}

+ 8 - 0
sdk/instance.go

@@ -95,3 +95,11 @@ func initDataSource(c *client.Client, options *Options) error {
 func initDBOperations(dataSourceSpec map[string]any) (db_operations.DBOperations, error) {
 	return db_operations.NewOperationsFromMap(dataSourceSpec)
 }
+
+func DestroyInstance() error {
+	if sdkInstance == nil {
+		return nil
+	}
+
+	return db_operations.DestroyOperation(sdkInstance.dbOperations.(*db_operations.Operations))
+}

+ 4 - 0
sdk/options.go

@@ -12,6 +12,10 @@ func WithTimeout(timeout time.Duration) Option {
 	}
 }
 
+const (
+	DataSourceTypeDatabase = "database"
+)
+
 type DataSourceOption struct {
 	Name string
 	Type string

+ 32 - 0
sdk/sdk.go

@@ -72,6 +72,38 @@ func (s *SDK) ExecuteRawSql(sql string) ([]map[string]any, error) {
 	return results, nil
 }
 
+func (s *SDK) CreateSQL(name string, spec map[string]any) error {
+	if strutils.IsStringEmpty(name) {
+		return errors.New("没有传递SQL资源名称")
+	}
+
+	options := s.options
+
+	err := s.client.CreateSql(options.token, options.baseUrl,
+		options.namespace, options.dataSource.Name, name, spec)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (s *SDK) DeleteSQL(name string) error {
+	if strutils.IsStringEmpty(name) {
+		return errors.New("没有传递SQL资源名称")
+	}
+
+	options := s.options
+
+	err := s.client.DeleteSql(options.token, options.baseUrl,
+		options.namespace, options.dataSource.Name, name)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
 func (s *SDK) ExecuteSql(name string, executeParams map[string]any) ([]map[string]any, error) {
 	if strutils.IsStringEmpty(name) {
 		return nil, errors.New("没有传递SQL资源名称")