parent
ee3004130e
commit
ff91b9782b
8 changed files with 5 additions and 264 deletions
@ -1,45 +0,0 @@ |
||||
package random |
||||
|
||||
import ( |
||||
"context" |
||||
"git.diulo.com/mogfee/kit/selector" |
||||
"math/rand" |
||||
) |
||||
|
||||
type Option func(o *options) |
||||
|
||||
type options struct { |
||||
} |
||||
type Balancer struct { |
||||
} |
||||
|
||||
func New(opts ...Option) selector.Selector { |
||||
return NewBuilder(opts...).Build() |
||||
} |
||||
func (b *Balancer) Pick(ctx context.Context, nodes []selector.WeightedNode) (selector.WeightedNode, selector.DoneFunc, error) { |
||||
if len(nodes) == 0 { |
||||
return nil, nil, selector.ErrNoAvailable |
||||
} |
||||
cut := rand.Intn(len(nodes)) |
||||
selected := nodes[cut] |
||||
d := selected.Pick() |
||||
return selected, d, nil |
||||
} |
||||
|
||||
func NewBuilder(opts ...Option) selector.Builder { |
||||
var option options |
||||
for _, opt := range opts { |
||||
opt(&option) |
||||
} |
||||
return &selector.DefaultBuilder{ |
||||
Balancer: &Builder{}, |
||||
Node: &direct.Builder{}, |
||||
} |
||||
} |
||||
|
||||
// Builder is random builder
|
||||
type Builder struct{} |
||||
|
||||
func (b *Builder) Builder() selector.Balancer { |
||||
return &Balancer{} |
||||
} |
@ -1,55 +0,0 @@ |
||||
package selector_test |
||||
|
||||
import ( |
||||
"context" |
||||
"git.diulo.com/mogfee/kit/registry" |
||||
"git.diulo.com/mogfee/kit/selector" |
||||
"git.diulo.com/mogfee/kit/selector/filter" |
||||
"git.diulo.com/mogfee/kit/selector/random" |
||||
"gopkg.in/go-playground/assert.v1" |
||||
"testing" |
||||
) |
||||
|
||||
func TestSelect(t *testing.T) { |
||||
t.Run("没有可用服务", func(t *testing.T) { |
||||
s := random.New() |
||||
_, _, err := s.Select(context.Background()) |
||||
assert.Equal(t, err, selector.ErrNoAvailable) |
||||
}) |
||||
t.Run("正常访问", func(t *testing.T) { |
||||
s := random.New() |
||||
s.Apply(nodes) |
||||
selected, _, err := s.Select(context.Background()) |
||||
assert.Equal(t, err, nil) |
||||
assert.Equal(t, selected.Address(), nodes[0].Address()) |
||||
|
||||
selected, _, err = s.Select(context.Background()) |
||||
assert.Equal(t, err, nil) |
||||
assert.Equal(t, selected.Address(), nodes[1].Address()) |
||||
}) |
||||
|
||||
t.Run("获取v2版本", func(t *testing.T) { |
||||
s := random.New() |
||||
s.Apply(nodes) |
||||
selected, _, err := s.Select(context.Background(), selector.WithNodeFilter(filter.Version("v2.0.0"))) |
||||
assert.Equal(t, err, nil) |
||||
assert.Equal(t, selected.Address(), nodes[1].Address()) |
||||
}) |
||||
} |
||||
|
||||
var nodes = []selector.Node{ |
||||
selector.NewNode("http", "127.0.0.1:8080", ®istry.ServiceInstance{ |
||||
ID: "127.0.0.1:8080", |
||||
Name: "hello", |
||||
Version: "v1.0.0", |
||||
Metadata: map[string]string{"weight": "10"}, |
||||
Endpoints: []string{"127.0.0.1:8080"}, |
||||
}), |
||||
selector.NewNode("http", "127.0.0.1:9090", ®istry.ServiceInstance{ |
||||
ID: "127.0.0.1:9090", |
||||
Name: "hello", |
||||
Version: "v2.0.0", |
||||
Metadata: map[string]string{"weight": "10"}, |
||||
Endpoints: []string{"127.0.0.1:9090"}, |
||||
}), |
||||
} |
@ -1,22 +0,0 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"fmt" |
||||
"github.com/spf13/cobra" |
||||
) |
||||
|
||||
func main() { |
||||
Cmd := &cobra.Command{ |
||||
Use: "model", |
||||
} |
||||
mysqlCmd := &cobra.Command{ |
||||
Use: "mysql", |
||||
RunE: func(cmd *cobra.Command, args []string) error { |
||||
fmt.Println("aaa") |
||||
return nil |
||||
}, |
||||
} |
||||
|
||||
Cmd.AddCommand(mysqlCmd) |
||||
Cmd.Execute() |
||||
} |
@ -1 +0,0 @@ |
||||
package command |
@ -1,11 +0,0 @@ |
||||
package main |
||||
|
||||
import "git.diulo.com/mogfee/kit/tools/model/sql/gen" |
||||
|
||||
func main() { |
||||
filenmae := "/Users/mogfee/web/sendmail_server_new/sendmail.sch.sql" |
||||
err := gen.NewGenerator().StartFromDDL(filenmae, false, true, "sendmail") |
||||
if err != nil { |
||||
panic(err) |
||||
} |
||||
} |
@ -1,52 +0,0 @@ |
||||
package gen |
||||
|
||||
import "git.diulo.com/mogfee/kit/mysql/ddl" |
||||
|
||||
type ( |
||||
defaultGenerator struct { |
||||
dir string |
||||
pkg string |
||||
ignoreColumns []string |
||||
} |
||||
code struct { |
||||
importsCode string |
||||
varsCode string |
||||
typesCode string |
||||
newCode string |
||||
insertCode string |
||||
findCode string |
||||
updateCode string |
||||
deleteCode string |
||||
cacheExtra string |
||||
tableName string |
||||
} |
||||
codeTuple struct { |
||||
modelCode string |
||||
modelCustomCode string |
||||
} |
||||
) |
||||
|
||||
func NewGenerator() *defaultGenerator { |
||||
return &defaultGenerator{} |
||||
} |
||||
|
||||
func (g *defaultGenerator) StartFromDDL(filename string, withCache, strict bool, database string) error { |
||||
modelList, err := g.genFromDDL(filename, withCache, strict, database) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
return g.createFile(modelList) |
||||
} |
||||
|
||||
func (g *defaultGenerator) genFromDDL(filename string, cache bool, strict bool, database string) ( |
||||
map[string]*codeTuple, error) { |
||||
m := make(map[string]*codeTuple) |
||||
err := ddl.Parser(filename, func(table *ddl.Table) error { |
||||
code, err := g.genModel(e, cache) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
|
||||
}) |
||||
return m, err |
||||
} |
@ -1,71 +0,0 @@ |
||||
package parser |
||||
|
||||
import ( |
||||
"git.diulo.com/mogfee/kit/mysql/ddl" |
||||
) |
||||
|
||||
const timeImport = "time.Time" |
||||
|
||||
type ( |
||||
Table struct { |
||||
Name string |
||||
Db string |
||||
PrimaryKey Primary |
||||
UniqueIndex map[string][]*Field |
||||
Fields []*Field |
||||
} |
||||
Primary struct { |
||||
Field |
||||
AutoIncrement bool |
||||
} |
||||
Field struct { |
||||
NameOriginal string |
||||
Name string |
||||
DateType string |
||||
Comment string |
||||
SeqInIndex int |
||||
OrdinalPosition int |
||||
ContainsPQ bool |
||||
} |
||||
KeyType int |
||||
) |
||||
|
||||
func parseNameOriginal(ts []*ddl.Table) (nameOriginals [][]string) { |
||||
var columns []string |
||||
for _, t := range ts { |
||||
columns = []string{} |
||||
for _, c := range t.Columns { |
||||
columns = append(columns, c.Name) |
||||
} |
||||
nameOriginals = append(nameOriginals, columns) |
||||
} |
||||
return nameOriginals |
||||
} |
||||
|
||||
func Parse(filename, database string, strict bool) ([]*Table, error) { |
||||
list := make([]*Table, 0) |
||||
err := ddl.Parser(filename, func(table *ddl.Table) error { |
||||
|
||||
list = append(list, &Table{ |
||||
Name: table.Name, |
||||
Db: "", |
||||
PrimaryKey: Primary{ |
||||
Field: Field{ |
||||
NameOriginal: "", |
||||
Name: "", |
||||
DateType: "", |
||||
Comment: "", |
||||
SeqInIndex: 0, |
||||
OrdinalPosition: 0, |
||||
ContainsPQ: false, |
||||
}, |
||||
AutoIncrement: false, |
||||
}, |
||||
UniqueIndex: nil, |
||||
Fields: nil, |
||||
}) |
||||
|
||||
return nil |
||||
}) |
||||
return list, err |
||||
} |
Loading…
Reference in new issue