add NewGroup function
This commit is contained in:
parent
eaa5b37e0b
commit
40c50e573d
|
@ -8,6 +8,7 @@ import (
|
|||
"database/sql"
|
||||
"io"
|
||||
"reflect"
|
||||
"strings"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
|
@ -20,6 +21,36 @@ type GroupEngine struct {
|
|||
count uint64
|
||||
}
|
||||
|
||||
func NewGroupEngine(driverName string, dataSourceNames string) (*GroupEngine, error) {
|
||||
conns := strings.Split(dataSourceNames, ";")
|
||||
engines := make([]*Engine, len(conns))
|
||||
for i, _ := range conns {
|
||||
engine, err := NewEngine(driverName, conns[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
engines[i] = engine
|
||||
}
|
||||
ge := &GroupEngine{
|
||||
engines: engines,
|
||||
count: uint64(len(engines)),
|
||||
}
|
||||
return ge, nil
|
||||
}
|
||||
|
||||
func NewGroup(Master *Engine, Slaves []*Engine, policy int) (*GroupEngine, error) {
|
||||
engines := make([]*Engine, 0)
|
||||
engines = append(engines, Master)
|
||||
for i, _ := range Slaves {
|
||||
engines = append(engines, Slaves[i])
|
||||
}
|
||||
ge := &GroupEngine{
|
||||
engines: engines,
|
||||
count: uint64(len(engines)),
|
||||
}
|
||||
return ge, nil
|
||||
}
|
||||
|
||||
func (ge *GroupEngine) Master() *Engine {
|
||||
return ge.engines[0]
|
||||
}
|
||||
|
@ -36,6 +67,13 @@ func (ge *GroupEngine) GetEngine(i int) *Engine {
|
|||
return ge.engines[i]
|
||||
}
|
||||
|
||||
func (ge *GroupEngine) GetSlaves() []*Engine {
|
||||
if len(ge.engines) == 1 {
|
||||
return ge.engines
|
||||
}
|
||||
return ge.engines[1:]
|
||||
}
|
||||
|
||||
func (ge *GroupEngine) slave(n int) int {
|
||||
if n <= 1 {
|
||||
return 0
|
||||
|
|
17
xorm.go
17
xorm.go
|
@ -9,7 +9,6 @@ import (
|
|||
"os"
|
||||
"reflect"
|
||||
"runtime"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
|
@ -55,22 +54,6 @@ func init() {
|
|||
regDrvsNDialects()
|
||||
}
|
||||
|
||||
func NewGroupEngine(driverName string, dataSourceNames string) (*GroupEngine, error) {
|
||||
conns := strings.Split(dataSourceNames, ";")
|
||||
engines := make([]*Engine, len(conns))
|
||||
for i, _ := range conns {
|
||||
engine, err := NewEngine(driverName, conns[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
engines[i] = engine
|
||||
}
|
||||
ge := &GroupEngine{
|
||||
engines: engines,
|
||||
}
|
||||
return ge, nil
|
||||
}
|
||||
|
||||
// NewEngine new a db manager according to the parameter. Currently support four
|
||||
// drivers
|
||||
func NewEngine(driverName string, dataSourceName string) (*Engine, error) {
|
||||
|
|
Loading…
Reference in New Issue