// 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" "path" "strings" ) 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 { 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 } } 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) }