From caffdb143e77643ecf0132dfbc1f65e4d0ca5c6a Mon Sep 17 00:00:00 2001 From: John Date: Sat, 13 Oct 2018 20:43:21 +0800 Subject: [PATCH] =?UTF-8?q?g.DB/g.Config=E6=94=B9=E8=BF=9B=E5=8D=95?= =?UTF-8?q?=E4=BE=8B=E7=BC=93=E5=AD=98=E9=94=AE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/database/gdb/gdb_config.go | 8 ++++---- g/frame/gins/gins.go | 40 ++++++++++++++++++++++-------------- g/g_object.go | 4 ++-- g/os/gcfg/gcfg.go | 4 ++-- 4 files changed, 33 insertions(+), 23 deletions(-) diff --git a/g/database/gdb/gdb_config.go b/g/database/gdb/gdb_config.go index ae27208ef..f3ed7df33 100644 --- a/g/database/gdb/gdb_config.go +++ b/g/database/gdb/gdb_config.go @@ -12,7 +12,7 @@ import ( ) const ( - gDEFAULT_CONFIG_GROUP_NAME = "default" // 默认配置名称 + DEFAULT_GROUP_NAME = "default" // 默认配置名称 ) // 数据库配置包内对象 @@ -79,7 +79,7 @@ var DatabaseConfiguration = Config { // 包初始化 func init() { config.c = make(Config) - config.d = gDEFAULT_CONFIG_GROUP_NAME + config.d = DEFAULT_GROUP_NAME } // 设置当前应用的数据库配置信息,进行全局数据库配置覆盖操作 @@ -105,12 +105,12 @@ func AddConfigNode (group string, node ConfigNode) { // 添加默认链接的一台数据库服务器配置 func AddDefaultConfigNode (node ConfigNode) { - AddConfigNode(gDEFAULT_CONFIG_GROUP_NAME, node) + AddConfigNode(DEFAULT_GROUP_NAME, node) } // 添加默认链接的数据库服务器集群配置 func AddDefaultConfigGroup (nodes ConfigGroup) { - AddConfigGroup(gDEFAULT_CONFIG_GROUP_NAME, nodes) + AddConfigGroup(DEFAULT_GROUP_NAME, nodes) } // 设置默认链接的数据库链接配置项(默认是 default) diff --git a/g/frame/gins/gins.go b/g/frame/gins/gins.go index 6bac41f70..a363ace9d 100644 --- a/g/frame/gins/gins.go +++ b/g/frame/gins/gins.go @@ -83,28 +83,38 @@ func View() *gview.View { // 核心对象:Config // 配置文件目录查找依次为:启动参数cfgpath、当前程序运行目录 -func Config() *gcfg.Config { - return instances.GetOrSetFuncLock(gFRAME_CORE_COMPONENT_NAME_CONFIG, func() interface{} { - path := gcmd.Option.Get("gf.cfgpath") - if path == "" { - path = genv.Get("gf.cfgpath") +func Config(file...string) *gcfg.Config { + configFile := gcfg.DEFAULT_CONFIG_FILE + if len(file) > 0 { + configFile = file[0] + } + return instances.GetOrSetFuncLock(fmt.Sprintf("%s.%s", gFRAME_CORE_COMPONENT_NAME_CONFIG, configFile), + func() interface{} { + path := gcmd.Option.Get("gf.cfgpath") if path == "" { - path = gfile.SelfDir() + path = genv.Get("gf.cfgpath") + if path == "" { + path = gfile.SelfDir() + } } - } - config := gcfg.New(path) - // 添加基于源码的搜索目录检索地址,常用于开发环境调试,只添加入口文件目录 - if p := gfile.MainPkgPath(); gfile.Exists(p) { - config.AddPath(p) - } - return config + config := gcfg.New(path, configFile) + // 添加基于源码的搜索目录检索地址,常用于开发环境调试,只添加入口文件目录 + if p := gfile.MainPkgPath(); gfile.Exists(p) { + config.AddPath(p) + } + return config }).(*gcfg.Config) } // 数据库操作对象,使用了连接池 func Database(name...string) *gdb.Db { config := Config() - db := instances.GetOrSetFuncLock(gFRAME_CORE_COMPONENT_NAME_DATABASE, func() interface{} { + group := gdb.DEFAULT_GROUP_NAME + if len(name) > 0 { + group = name[0] + } + key := fmt.Sprintf("%s.%s", gFRAME_CORE_COMPONENT_NAME_DATABASE, group) + db := instances.GetOrSetFuncLock(key, func() interface{} { m := config.GetMap("database") if m == nil { panic(fmt.Sprintf(`incomplete configuration for database: "database" node not found in config file "%s"`, config.GetFilePath())) @@ -158,7 +168,7 @@ func Database(name...string) *gdb.Db { } // 使用gfsnotify进行文件监控,当配置文件有任何变化时,清空数据库配置缓存 gfsnotify.Add(config.GetFilePath(), func(event *gfsnotify.Event) { - instances.Remove(gFRAME_CORE_COMPONENT_NAME_DATABASE) + instances.Remove(key) }) if db, err := gdb.New(name...); err == nil { return db diff --git a/g/g_object.go b/g/g_object.go index b22e06ecc..e214d2d76 100644 --- a/g/g_object.go +++ b/g/g_object.go @@ -41,8 +41,8 @@ func View() *gview.View { // Config配置管理对象 // 配置文件目录查找依次为:启动参数cfgpath、当前程序运行目录 -func Config() *gcfg.Config { - return gins.Config() +func Config(file...string) *gcfg.Config { + return gins.Config(file...) } // 数据库操作对象,使用了连接池 diff --git a/g/os/gcfg/gcfg.go b/g/os/gcfg/gcfg.go index c13b34f44..622cfcf98 100644 --- a/g/os/gcfg/gcfg.go +++ b/g/os/gcfg/gcfg.go @@ -19,7 +19,7 @@ import ( ) const ( - gDEFAULT_CONFIG_FILE = "config.toml" // 默认的配置管理文件名称 + DEFAULT_CONFIG_FILE = "config.toml" // 默认的配置管理文件名称 ) // 配置管理对象 @@ -32,7 +32,7 @@ type Config struct { // 生成一个配置管理对象 func New(path string, file...string) *Config { - name := gDEFAULT_CONFIG_FILE + name := DEFAULT_CONFIG_FILE if len(file) > 0 { name = file[0] }