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)
}
}
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)
}
}
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)
}
}
}
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.