Browse Source

完成sdk封装

yjp 1 năm trước cách đây
mục cha
commit
19dbdb213e
3 tập tin đã thay đổi với 99 bổ sung33 xóa
  1. 2 0
      data_container.go
  2. 2 2
      options.go
  3. 95 31
      sdk.go

+ 2 - 0
data_container.go

@@ -0,0 +1,2 @@
+package ds_sdk
+

+ 2 - 2
options.go

@@ -2,7 +2,7 @@ package ds_sdk
 
 import "time"
 
-type DataSource struct {
+type DataSourceOption struct {
 	Name string
 	Type string
 	Spec map[string]any
@@ -13,7 +13,7 @@ type Options struct {
 	token      string
 	baseUrl    string
 	namespace  string
-	dataSource *DataSource
+	dataSource *DataSourceOption
 
 	// 选传
 	timeout time.Duration

+ 95 - 31
sdk.go

@@ -1,20 +1,59 @@
 package ds_sdk
 
 import (
+	"errors"
+	"git.sxidc.com/go-tools/utils/strutils"
 	"git.sxidc.com/service-supports/ds-sdk/client"
 	"strings"
 )
 
 var sdkInstance *SDK
 
-func InitInstance(token string, baseUrl string, namespace string, dataSource *DataSource, opts ...Option) error {
+func InitInstance(token string, baseUrl string, namespace string, dataSource *DataSourceOption, opts ...Option) error {
 	if sdkInstance == nil {
-		sdk, err := newSDK(token, baseUrl, namespace, dataSource, opts...)
+		options := &Options{
+			token:      token,
+			baseUrl:    baseUrl,
+			namespace:  namespace,
+			dataSource: dataSource,
+		}
+
+		for _, opt := range opts {
+			opt(options)
+		}
+
+		c := client.New(options.timeout)
+
+		namespaceInfos, err := c.GetNamespaces(token, baseUrl, namespace, 1, 1)
 		if err != nil {
 			return err
 		}
 
-		sdkInstance = sdk
+		if namespaceInfos == nil || len(namespaceInfos) == 0 {
+			err := c.CreateNamespace(token, baseUrl, namespace)
+			if err != nil && !strings.Contains(err.Error(), "已存在") {
+				return err
+			}
+		}
+
+		dataSourceInfos, err := c.GetDataSources(token, baseUrl, namespace,
+			options.dataSource.Name, options.dataSource.Type, 1, 1)
+		if err != nil {
+			return err
+		}
+
+		if dataSourceInfos == nil || len(dataSourceInfos) == 0 {
+			err := c.CreateDataSource(token, baseUrl, namespace,
+				options.dataSource.Name, options.dataSource.Type, options.dataSource.Spec)
+			if err != nil && !strings.Contains(err.Error(), "已存在") {
+				return err
+			}
+		}
+
+		sdkInstance = &SDK{
+			options: options,
+			client:  c,
+		}
 	}
 
 	return nil
@@ -29,48 +68,73 @@ type SDK struct {
 	client  *client.Client
 }
 
-func newSDK(token string, baseUrl string, namespace string, dataSource *DataSource, opts ...Option) (*SDK, error) {
-	options := &Options{
-		token:      token,
-		baseUrl:    baseUrl,
-		namespace:  namespace,
-		dataSource: dataSource,
+func (sdk *SDK) CreateDataContainer(name string, spec map[string]any) error {
+	if strutils.IsStringEmpty(name) {
+		return errors.New("没有传递数据容器名称")
 	}
 
-	for _, opt := range opts {
-		opt(options)
+	options := sdk.options
+
+	err := sdk.client.CreateDataContainer(options.token, options.baseUrl,
+		options.namespace, options.dataSource.Name, name, spec)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (sdk *SDK) DeleteDataContainer(name string) error {
+	if strutils.IsStringEmpty(name) {
+		return errors.New("没有传递数据容器名称")
 	}
 
-	c := client.New(options.timeout)
+	options := sdk.options
 
-	namespaceInfos, err := c.GetNamespaces(token, baseUrl, namespace, 1, 1)
+	err := sdk.client.DeleteDataContainer(options.token, options.baseUrl,
+		options.namespace, options.dataSource.Name, name)
 	if err != nil {
-		return nil, err
+		return err
 	}
 
-	if namespaceInfos == nil || len(namespaceInfos) == 0 {
-		err := c.CreateNamespace(token, baseUrl, namespace)
-		if err != nil && !strings.Contains(err.Error(), "已存在") {
-			return nil, err
-		}
+	return nil
+}
+
+func (sdk *SDK) GetDataContainers(name string, pageNo int, pageSize int) ([]client.DataContainerInfo, error) {
+	options := sdk.options
+
+	return sdk.client.GetDataContainers(options.token, options.baseUrl,
+		options.namespace, options.dataSource.Name, name, pageNo, pageSize)
+}
+
+func (sdk *SDK) ExecuteRawSql(sql string) ([]map[string]any, error) {
+	if strutils.IsStringEmpty(sql) {
+		return make([]map[string]any, 0), nil
 	}
 
-	dataSourceInfos, err := c.GetDataSources(token, baseUrl, namespace,
-		options.dataSource.Name, options.dataSource.Type, 1, 1)
+	options := sdk.options
+
+	results, err := sdk.client.ExecuteRawSql(options.token, options.baseUrl,
+		options.namespace, options.dataSource.Name, sql)
 	if err != nil {
 		return nil, err
 	}
 
-	if dataSourceInfos == nil || len(dataSourceInfos) == 0 {
-		err := c.CreateDataSource(token, baseUrl, namespace,
-			options.dataSource.Name, options.dataSource.Type, options.dataSource.Spec)
-		if err != nil && !strings.Contains(err.Error(), "已存在") {
-			return nil, err
-		}
+	return results, nil
+}
+
+func (sdk *SDK) ExecuteSql(name string, executeParams map[string]any) ([]map[string]any, error) {
+	if strutils.IsStringEmpty(name) {
+		return nil, errors.New("没有传递SQL资源名称")
+	}
+
+	options := sdk.options
+
+	results, err := sdk.client.ExecuteSql(options.token, options.baseUrl,
+		options.namespace, options.dataSource.Name, name, executeParams)
+	if err != nil {
+		return nil, err
 	}
 
-	return &SDK{
-		options: options,
-		client:  c,
-	}, nil
+	return results, nil
 }