odbclient.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package odbc
  2. import (
  3. "fmt"
  4. "strings"
  5. odb "git.wecise.com/wecise/odb-go/odb"
  6. mcfg "gitee.com/wecisecode/util/cfg"
  7. mlog "gitee.com/wecisecode/util/logger"
  8. "gitee.com/wecisecode/util/set/strset"
  9. )
  10. var Config = mcfg.MConfig()
  11. var Logger = mlog.New().WithConfig(Config, "log")
  12. var ODBClient odb.Client
  13. var ODBError error
  14. var Debug bool
  15. var Usage string
  16. var default_keyspace = `oktest`
  17. var default_odbpaths = `127.0.0.1:11001`
  18. var default_config = &odb.Config{
  19. Hosts: []string{"127.0.0.1:11001"},
  20. Keyspace: "oktest",
  21. User: fmt.Sprint("测试客户端"),
  22. Pass: "********",
  23. PoolSize: 20,
  24. Debug: false,
  25. }
  26. func config_merge(a *odb.Config, b *odb.Config) *odb.Config {
  27. if len(b.Hosts) > 0 {
  28. a.Hosts = b.Hosts
  29. }
  30. if b.Port != 0 {
  31. a.Port = b.Port
  32. }
  33. if b.Keyspace != "" {
  34. a.Keyspace = b.Keyspace
  35. }
  36. if b.User != "" {
  37. a.User = b.User
  38. }
  39. if b.Pass != "" {
  40. a.Pass = b.Pass
  41. }
  42. if b.PoolSize != 0 {
  43. a.PoolSize = b.PoolSize
  44. }
  45. if b.Debug {
  46. a.Debug = b.Debug
  47. }
  48. return a
  49. }
  50. // 参数设置为程序默认配置
  51. // 可以通过命令行,环境变量 或 与应用同名的.conf配置文件 设置
  52. // 远程连接需要在白名单中增加本地IP
  53. func ODBC(odbcfgs ...*odb.Config) odb.Client {
  54. odbcfg := config_merge(&odb.Config{}, default_config)
  55. for _, c := range odbcfgs {
  56. odbcfg = config_merge(odbcfg, c)
  57. }
  58. default_keyspace = odbcfg.Keyspace
  59. default_odbpaths = strings.Join(odbcfg.Hosts, ",")
  60. Usage = `
  61. 命令行参数:
  62. odbpath=` + default_odbpaths + ` #指定odbserver路径,默认通过环境变量ODBPATH或通过ETCD相关配置获取
  63. keyspace=` + default_keyspace + ` #指定keyspace,默认通过环境变量KEYSPACE获取
  64. debug=true #开启调试模式,输出更多信息
  65. 环境变量需求:
  66. ODBPATH=` + default_odbpaths + ` #指定odbserver路径,默认通过配置信息 odbc.odbpath 获取
  67. KEYSPACE=` + default_keyspace + ` #指定keyspace,默认通过配置信息 odbc.keyspace 获取
  68. ETCDPATH=127.0.0.1:2379 #必须设置
  69. ETCDUSER=
  70. ETCDPASS=
  71. CASSANDRAPATH=127.0.0.1
  72. CASSANDRALOOKUP=false
  73. NATSPATH=nats://user:N5JbKeT1C3uOUh317OVXjg==@127.0.0.1:4222
  74. LANG=zh_CN.utf8
  75. LC_ALL=zh_CN.utf8
  76. 可通过` + mcfg.DefaultAppName + `.conf配置运行参数:
  77. [odbc]
  78. ;指定odbserver路径
  79. odbpath=` + default_odbpaths + `
  80. ;指定keyspace
  81. keyspace=` + default_keyspace + `
  82. `
  83. Logger.SetFormat("yyyy-MM-dd HH:mm:ss.SSSSSS [pid] [level] msg", "\n")
  84. odbpaths := strset.New(strings.Split(mcfg.CommandArgs.GetString("odbpath",
  85. strings.Join(mcfg.Environs.GetStrings("ODBPATH",
  86. Config.GetStrings("odbc.odbpath", default_odbpaths)...), ",")), ",")...).List()
  87. keyspace := mcfg.CommandArgs.GetString("keyspace",
  88. mcfg.Environs.GetString("KEYSPACE", Config.GetString("odbc.keyspace", default_keyspace)))
  89. Debug = mcfg.CommandArgs.GetBool("debug", false)
  90. ODBClient, ODBError = odb.NewClient(config_merge(odbcfg, &odb.Config{
  91. Keyspace: keyspace,
  92. Hosts: odbpaths,
  93. Debug: Debug,
  94. }))
  95. if ODBError != nil {
  96. fmt.Print(Usage)
  97. panic(ODBError)
  98. }
  99. Logger.Info("odbpath :", ODBClient.Config().Hosts, ODBClient.Config().Port)
  100. Logger.Info("keyspace:", ODBClient.Config().Keyspace)
  101. Logger.Info("debug: ", Debug)
  102. return ODBClient
  103. }