2023-07-31 18:00:43 +08:00
|
|
|
// Package api2sql ...
|
|
|
|
//
|
|
|
|
// Description : api2sql ...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2023-07-31 14:21
|
|
|
|
package api2sql
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"git.zhangdeman.cn/zhangdeman/database/api2sql/define"
|
|
|
|
"git.zhangdeman.cn/zhangdeman/easymap"
|
|
|
|
"git.zhangdeman.cn/zhangdeman/util"
|
|
|
|
utilDefine "git.zhangdeman.cn/zhangdeman/util/define"
|
|
|
|
"git.zhangdeman.cn/zhangdeman/wrapper"
|
2023-07-31 21:13:17 +08:00
|
|
|
"path"
|
|
|
|
"strings"
|
2023-07-31 18:00:43 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
// InstanceManager 实例管理
|
|
|
|
InstanceManager *instanceManager
|
|
|
|
)
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
InstanceManager = &instanceManager{
|
|
|
|
instanceTable: easymap.NewNormal(true),
|
|
|
|
supportConfigFileFormat: []string{
|
|
|
|
"json",
|
|
|
|
"yml",
|
|
|
|
"yaml",
|
|
|
|
"ini",
|
|
|
|
"toml",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// instanceManager 实例管理
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 14:21 2023/7/31
|
|
|
|
type instanceManager struct {
|
|
|
|
instanceTable easymap.EasyMap // 实例存储
|
|
|
|
supportConfigFileFormat []string // 支持的配置文件格式
|
|
|
|
}
|
|
|
|
|
|
|
|
// RegisterWithConfig 基于配置进行注册
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 14:26 2023/7/31
|
|
|
|
func (im *instanceManager) RegisterWithConfig(instanceConfig *define.Database) error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// RegisterWithConfigFile 基于配置文件进行注册
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 14:32 2023/7/31
|
|
|
|
func (im *instanceManager) RegisterWithConfigFile(configFileList []string) error {
|
2023-07-31 21:13:17 +08:00
|
|
|
for _, itemFile := range configFileList {
|
|
|
|
fileType := strings.ToLower(path.Ext(itemFile))
|
|
|
|
var (
|
|
|
|
err error
|
|
|
|
databaseConfig define.Database
|
|
|
|
)
|
|
|
|
|
|
|
|
switch fileType {
|
|
|
|
case "json":
|
|
|
|
err = util.File.ReadJSONContent(itemFile, &databaseConfig)
|
|
|
|
case "yaml":
|
|
|
|
fallthrough
|
|
|
|
case "yml":
|
|
|
|
err = util.File.ReadYmlContent(itemFile, &databaseConfig)
|
|
|
|
case "ini":
|
|
|
|
err = util.File.ReadIniContent(itemFile, &databaseConfig)
|
|
|
|
case "toml":
|
|
|
|
err = util.File.ReadTomlContent(itemFile, &databaseConfig)
|
|
|
|
default:
|
|
|
|
return errors.New(fileType + " : file type is not support")
|
|
|
|
}
|
|
|
|
if nil != err {
|
|
|
|
return errors.New(itemFile + " : config parse fail => " + err.Error())
|
|
|
|
}
|
|
|
|
if err = im.RegisterWithConfig(&databaseConfig); nil != err {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
2023-07-31 18:00:43 +08:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// RegisterWithConfigDir 配置的目录
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 14:33 2023/7/31
|
|
|
|
func (im *instanceManager) RegisterWithConfigDir(configDir string) error {
|
|
|
|
var (
|
|
|
|
fileList []*utilDefine.FileInfo
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
if fileList, err = util.File.ReadDirFileList(configDir, true, false); nil != err {
|
|
|
|
return errors.New("config file list read fail : " + err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
cfgFileList := make([]string, 0)
|
|
|
|
for _, item := range fileList {
|
|
|
|
if item.IsDir {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
if wrapper.Array(im.supportConfigFileFormat).In(item) >= 0 {
|
|
|
|
// 支持此格式
|
|
|
|
cfgFileList = append(cfgFileList, item.AbsolutePath)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return im.RegisterWithConfigFile(cfgFileList)
|
|
|
|
}
|