api/model_datasource.go (64 lines of code) (raw):
package api
import (
"fmt"
"net/url"
"github.com/aliyun/aliyun-pai-featurestore-go-sdk/v2/constants"
"github.com/aliyun/aliyun-tablestore-go-sdk/tablestore"
)
type Datasource struct {
DatasourceId int `json:"datasource_id,omitempty"`
Type string `json:"type"`
Name string `json:"name"`
Region string `json:"region,omitempty"`
WorkspaceId string `json:"workspace_id"`
VpcAddress string `json:"vpc_address,omitempty"`
PublicAddress string `json:"public_address,omitempty"`
FdbVpcAddress string `json:"fdb_vpc_address,omitempty"`
Project string `json:"project,omitempty"`
Database string `json:"database,omitempty"`
Token string `json:"token,omitempty"`
Pwd string `json:"pwd,omitempty"`
User string `json:"user,omitempty"`
RdsInstanceId string `json:"rds_instance_id,omitempty"`
Ak Ak `json:"-"`
TestMode bool `json:"-"`
HologresPrefix string `json:"-"`
}
func (d *Datasource) GenerateDSN(datasourceType string) (DSN string) {
if datasourceType == constants.Datasource_Type_Hologres {
if d.TestMode {
if d.Ak.SecurityToken != "" {
DSN = fmt.Sprintf("postgres://%s%s:%s@%s/%s?sslmode=disable&connect_timeout=10&options=sts_token=%s", d.HologresPrefix,
d.Ak.AccesskeyId, d.Ak.AccesskeySecret, d.PublicAddress, d.Database, url.QueryEscape(d.Ak.SecurityToken))
} else {
DSN = fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable&connect_timeout=10",
d.Ak.AccesskeyId, d.Ak.AccesskeySecret, d.PublicAddress, d.Database)
}
} else {
if d.Ak.SecurityToken != "" {
DSN = fmt.Sprintf("postgres://%s%s:%s@%s/%s?sslmode=disable&connect_timeout=10&options=sts_token=%s", d.HologresPrefix,
d.Ak.AccesskeyId, d.Ak.AccesskeySecret, d.VpcAddress, d.Database, url.QueryEscape(d.Ak.SecurityToken))
} else {
DSN = fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable&connect_timeout=10",
d.Ak.AccesskeyId, d.Ak.AccesskeySecret, d.VpcAddress, d.Database)
}
}
}
return
}
func (d *Datasource) NewTableStoreClient() (client *tablestore.TableStoreClient) {
if d.TestMode {
if d.Ak.SecurityToken != "" {
client = tablestore.NewClientWithConfig(d.PublicAddress, d.RdsInstanceId, d.Ak.AccesskeyId, d.Ak.AccesskeySecret, d.Ak.SecurityToken, nil)
} else {
client = tablestore.NewClient(d.PublicAddress, d.RdsInstanceId, d.Ak.AccesskeyId, d.Ak.AccesskeySecret)
}
} else {
if d.Ak.SecurityToken != "" {
client = tablestore.NewClientWithConfig(d.VpcAddress, d.RdsInstanceId, d.Ak.AccesskeyId, d.Ak.AccesskeySecret, d.Ak.SecurityToken, nil)
} else {
client = tablestore.NewClient(d.VpcAddress, d.RdsInstanceId, d.Ak.AccesskeyId, d.Ak.AccesskeySecret)
}
}
return
}