From 7cca5c593984a370fd29be176c90c1c36740c1b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Sat, 11 Jun 2022 18:25:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AF=BB=E5=8F=96=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client.go | 80 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 30 deletions(-) diff --git a/client.go b/client.go index 3e608b4..9912839 100644 --- a/client.go +++ b/client.go @@ -8,6 +8,7 @@ package mysql import ( + "errors" "fmt" "path/filepath" "strings" @@ -67,45 +68,64 @@ func (c *client) BatchAddWithConfigDir(cfgDir string) error { // Author : go_developer@163.com<白茶清欢> // // Date : 14:39 2022/6/9 -func (c *client) getMysqlCfgFileList(cfgDir string) ([]cfgFile, error) { +func (c *client) getMysqlCfgFileList(cfgDir string) ([]*cfgFile, error) { filepathNames, _ := filepath.Glob(filepath.Join(cfgDir, "*")) - cfgFileList := make([]cfgFile, 0) + cfgFileList := make([]*cfgFile, 0) for i := range filepathNames { - fileArr := strings.Split(filepathNames[i], ".") - if len(fileArr) < 2 { - // 获取不到类型 - continue - } - fileType := strings.ToLower(fileArr[len(fileArr)-1]) var ( - err error + err error + cfgInfo *cfgFile ) - cfgInfo := cfgFile{ - Path: filepathNames[i], - Type: FileTypeYaml, - Config: Mysql{}, - } - switch fileType { - case FileTypeYaml: - fallthrough - case FileTypeYml: - cfgInfo.Type = FileTypeYaml - if err = util.File.ReadYmlContent(filepathNames[i], &cfgInfo); nil != err { - return nil, fmt.Errorf("%s 配置文件解析失败, 原因 : %s", cfgInfo.Path, err.Error()) - } - case FileTypeJson: - cfgInfo.Type = FileTypeJson - if err = util.File.ReadJSONContent(filepathNames[i], &cfgInfo); nil != err { - return nil, fmt.Errorf("%s 配置文件解析失败, 原因 : %s", cfgInfo.Path, err.Error()) - } - default: - // 不是JSON , 也不是YML, 跳过 - continue + if cfgInfo, err = c.getCfg(filepathNames[i]); nil != err { + return nil, err } + cfgFileList = append(cfgFileList, cfgInfo) } return cfgFileList, nil } +// getCfg 读取配置 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 18:05 2022/6/11 +func (c *client) getCfg(cfgPath string) (*cfgFile, error) { + result := &cfgFile{ + Path: cfgPath, + Type: "", + Config: Mysql{}, + } + fileArr := strings.Split(cfgPath, ".") + if len(fileArr) < 2 { + // 获取不到类型 + return nil, errors.New("文件格式必须是JSON或者YAML") + } + fileType := strings.ToLower(fileArr[len(fileArr)-1]) + var ( + err error + cfgInfo Mysql + ) + switch fileType { + case FileTypeYaml: + fallthrough + case FileTypeYml: + result.Type = FileTypeYaml + if err = util.File.ReadYmlContent(cfgPath, &result.Config); nil != err { + return nil, fmt.Errorf("%s 配置文件解析失败, 原因 : %s", cfgPath, err.Error()) + } + return result, nil + case FileTypeJson: + result.Type = FileTypeJson + if err = util.File.ReadJSONContent(cfgPath, &cfgInfo); nil != err { + return nil, fmt.Errorf("%s 配置文件解析失败, 原因 : %s", cfgPath, err.Error()) + } + return result, nil + default: + // 不是JSON , 也不是YML, 跳过 + return nil, nil + } +} + // GetDBClient 获取db client // // Author : go_developer@163.com<白茶清欢>