Documentation ¶
Overview ¶
sql为公司内部mysql client
Background ¶
这个库封装了http://gorm.io/
Configure ¶
rpc-go框架提供初始化全局GroupManager, 配置项如下:
[[database]] name="test1" master = "admin_user:ar46yJv34jfd@tcp(rm-2zej5vr9490158hv0.mysql.rds.aliyuncs.com)/live_serviceinfo?charset=utf8" slaves = ["admin_user:ar46yJv34jfd@tcp(rm-2zej5vr9490158hv0.mysql.rds.aliyuncs.com)/live_serviceinfo?charset=utf8"] [[database]] name="test2" master = "admin_user:ar46yJv34jfd@tcp(rm-2zej5vr9490158hv0.mysql.rds.aliyuncs.com)/live_serviceinfo?charset=utf8" slaves = ["admin_user:ar46yJv34jfd@tcp(rm-2zej5vr9490158hv0.mysql.rds.aliyuncs.com)/live_serviceinfo?charset=utf8"]
框架初始化完之后,可以使用Get函数来获取Group:
g := sql.Get("test1") if g == nil { log.Fatalf("group test1 is nil\n") }
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var (
// SQLGroupManager 是GroupManager结构体的全局变量
SQLGroupManager = newGroupManager()
)
Functions ¶
Types ¶
type Client ¶
Client继承了*gorm.DB的所有方法, 详细的使用方法请参考: http://gorm.io/docs/connecting_to_the_database.html
Example ¶
package main import ( log "github.com/yunfeiyang1916/toolkit/logging" "github.com/yunfeiyang1916/toolkit/sql" ) func main() { g := sql.Get("group1") if g == nil { log.Fatalf("group is nil") } type TabConfigSql struct { Priority float64 `gorm:"priority"` White_users string `gorm:"white_users"` Android_vers string `gorm:"android_vers"` Ios_vers string `gorm:"ios_vers"` Locations string `gorm:"locations"` Tails string `gorm:"tails"` Between string `gorm:"between"` Tabs string `gorm:"tabs"` SubTabs string `gorm:"sub_tabs"` } var all []*TabConfigSql err := g.Instance(true). Table("tab_config"). Where("id = 1"). Order("priority desc"). Find(&all).Error if err != nil { log.Fatalf("err=%+v\n", err) } }
Output:
type GlobalLogger ¶
type GlobalLogger struct { IsMaster int Database string StatLevel string LogFormat string // contains filtered or unexported fields }
func (*GlobalLogger) Print ¶
func (l *GlobalLogger) Print(message ...interface{})
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
func NewGroup ¶
func NewGroup(d SQLGroupConfig) (*Group, error)
NewGroup 初始化一个Group, 一个Group包含一个master实例和零个或多个slave实例
Example ¶
package main import ( log "github.com/yunfeiyang1916/toolkit/logging" "github.com/yunfeiyang1916/toolkit/sql" ) func main() { g, err := sql.NewGroup(sql.SQLGroupConfig{ Name: "db1", // database名称 Master: "user:password@/dbname?charset=utf8&parseTime=True&loc=Local", // master Slaves: []string{ "user:password@/dbname?charset=utf8&parseTime=True&loc=Local", // slaves }, }) if err != nil { log.Fatalf("new group error %v", err) } type AllServerPolicy struct { ServerName string `gorm:"server_name"` ServerType int `gorm:"server_type"` ServerURL string `gorm:"server_url"` SecureServerURL string `gorm:"secure_server_url"` } var all []*AllServerPolicy err = g.Master().Table("all_server_policy").Find(&all).Error if err != nil { log.Fatalf("query all error %v", err) } }
Output:
type GroupManager ¶
type GroupManager struct {
// contains filtered or unexported fields
}
GroupManager 提供了Add和Get操作, 用于管理Group
Example ¶
package main import ( "os" log "github.com/yunfeiyang1916/toolkit/logging" "github.com/yunfeiyang1916/toolkit/sql" "github.com/yunfeiyang1916/toolkit/tomlconfig" ) func main() { type groupConfig struct { Databases []sql.SQLGroupConfig `toml:"database"` } var gc groupConfig // sql_config.toml // [[database]] // name="test1" // master = "admin_user:ar46yJv34jfd@tcp(rm-2zej5vr9490158hv0.mysql.rds.aliyuncs.com)/live_serviceinfo?charset=utf8" // slaves = ["admin_user:ar46yJv34jfd@tcp(rm-2zej5vr9490158hv0.mysql.rds.aliyuncs.com)/live_serviceinfo?charset=utf8"] // // [[database]] // name="test2" // master = "admin_user:ar46yJv34jfd@tcp(rm-2zej5vr9490158hv0.mysql.rds.aliyuncs.com)/live_serviceinfo?charset=utf8" // slaves = ["admin_user:ar46yJv34jfd@tcp(rm-2zej5vr9490158hv0.mysql.rds.aliyuncs.com)/live_serviceinfo?charset=utf8"] err := tomlconfig.ParseTomlConfig("sql_config.toml", &gc) if err != nil { log.Fatalf("parse toml err %+v\n", err) } for _, d := range gc.Databases { g, err := sql.NewGroup(sql.SQLGroupConfig{ Name: d.Name, Master: d.Master, Slaves: d.Slaves, }) if err != nil { log.Errorf("init group error %v", err) os.Exit(1) } err = sql.SQLGroupManager.Add(d.Name, g) if err != nil { log.Errorf("add group error %v", err) os.Exit(1) } } }
Output:
func (*GroupManager) Get ¶
func (gm *GroupManager) Get(name string) *Group
func (*GroupManager) PartitionBy ¶
func (gm *GroupManager) PartitionBy(partiton func() (bool, string, string)) *Client
type SQLGroupConfig ¶
Source Files ¶
Click to show internal directories.
Click to hide internal directories.