kis-flow/config/kis_conn_config.go
2024-04-16 15:11:23 +08:00

49 lines
1.6 KiB
Go

package config
import (
"fmt"
"github.com/aceld/kis-flow/common"
)
// KisConnConfig describes the KisConnector strategy configuration
type KisConnConfig struct {
KisType string `yaml:"kistype"` // Configuration type
CName string `yaml:"cname"` // Unique descriptive identifier
AddrString string `yaml:"addrs"` // Base storage medium address
Type common.KisConnType `yaml:"type"` // Storage medium engine type: "Mysql", "Redis", "Kafka", etc.
Key string `yaml:"key"` // Identifier for a single storage: Key name for Redis, Table name for Mysql, Topic name for Kafka, etc.
Params map[string]string `yaml:"params"` // Custom parameters in the configuration information
// NsFuncionID bound to storage reading
Load []string `yaml:"load"`
Save []string `yaml:"save"`
}
// NewConnConfig creates a KisConnector strategy configuration object, used to describe a KisConnector information
func NewConnConfig(cName string, addr string, t common.KisConnType, key string, param map[string]string) *KisConnConfig {
strategy := new(KisConnConfig)
strategy.CName = cName
strategy.AddrString = addr
strategy.Type = t
strategy.Key = key
strategy.Params = param
return strategy
}
// WithFunc binds Connector to Function
func (cConfig *KisConnConfig) WithFunc(fConfig *KisFuncConfig) error {
switch common.KisMode(fConfig.FMode) {
case common.S:
cConfig.Save = append(cConfig.Save, fConfig.FName)
case common.L:
cConfig.Load = append(cConfig.Load, fConfig.FName)
default:
return fmt.Errorf("Wrong KisMode %s", fConfig.FMode)
}
return nil
}