balance.go 3.7 KB
Newer Older
E
eoLinker API Management 已提交
1 2 3 4 5
package balance

import (
	"errors"
	"fmt"
Y
Your Name 已提交
6 7 8 9
	"time"

	dao_balance "github.com/eolinker/goku-api-gateway/server/dao/console-sqlite3/dao-balance"

黄孟柱 已提交
10 11 12
	"github.com/eolinker/goku-api-gateway/console/module/service"
	driver2 "github.com/eolinker/goku-api-gateway/server/driver"
	entity "github.com/eolinker/goku-api-gateway/server/entity/balance-entity-service"
E
eoLinker API Management 已提交
13 14
)

Y
Your Name 已提交
15
//Add 新增负载
E
eoLinker API Management 已提交
16
func Add(info *Param) (string, error) {
Y
Your Name 已提交
17 18 19
	serviceInfo, err := service.Get(info.ServiceName)
	if err != nil {
		return fmt.Sprintf("serviceName:%s", err.Error()), err
E
eoLinker API Management 已提交
20 21
	}
	switch serviceInfo.Type {
Y
Your Name 已提交
22 23 24 25 26 27 28
	case driver2.Static:
		{
			if info.Static == "" && info.StaticCluster == "" {
				return "param:static 和 staticCluster 不能同时为空", errors.New("param:static 和 staticCluster 不能同时为空")
			}
			now := time.Now().Format("2006-01-02 15:04:05")
			result, err := dao_balance.AddStatic(info.Name, info.ServiceName, info.Static, info.StaticCluster, info.Desc, now)
Y
Your Name 已提交
29

Y
Your Name 已提交
30
			return result, err
E
eoLinker API Management 已提交
31
		}
Y
Your Name 已提交
32 33 34 35 36 37 38
	case driver2.Discovery:
		{
			if info.AppName == "" {
				return "param:appName 不能为空", errors.New("param:appName 不能为空")
			}
			now := time.Now().Format("2006-01-02 15:04:05")
			result, err := dao_balance.AddDiscovery(info.Name, info.ServiceName, info.AppName, info.Desc, now)
Y
Your Name 已提交
39

Y
Your Name 已提交
40
			return result, err
E
eoLinker API Management 已提交
41 42 43 44 45 46 47
		}

	}

	return "无效serviceName", errors.New("invalid serviceName")
}

Y
Your Name 已提交
48
//Save 保存服务发现
E
eoLinker API Management 已提交
49
func Save(info *Param) (string, error) {
Y
Your Name 已提交
50 51 52
	serviceInfo, err := service.Get(info.ServiceName)
	if err != nil {
		return fmt.Sprintf("serviceName:%s", err.Error()), err
E
eoLinker API Management 已提交
53 54
	}
	switch serviceInfo.Type {
Y
Your Name 已提交
55 56 57 58 59 60 61
	case driver2.Static:
		{
			if info.Static == "" && info.StaticCluster == "" {
				return "param:static 和 staticCluster 不能同时为空", errors.New("param:static 和 staticCluster 不能同时为空")
			}
			now := time.Now().Format("2006-01-02 15:04:05")
			result, err := dao_balance.SaveStatic(info.Name, info.ServiceName, info.Static, info.StaticCluster, info.Desc, now)
Y
Your Name 已提交
62

Y
Your Name 已提交
63
			return result, err
E
eoLinker API Management 已提交
64
		}
Y
Your Name 已提交
65 66 67 68 69 70 71
	case driver2.Discovery:
		{
			if info.AppName == "" {
				return "param:appName 不能为空", errors.New("param:appName 不能为空")
			}
			now := time.Now().Format("2006-01-02 15:04:05")
			result, err := dao_balance.SaveDiscover(info.Name, info.ServiceName, info.AppName, info.Desc, now)
Y
Your Name 已提交
72

Y
Your Name 已提交
73
			return result, err
E
eoLinker API Management 已提交
74 75 76 77 78 79
		}

	}

	return "无效serviceName", errors.New("invalid serviceName")
}
Y
Your Name 已提交
80

Y
Your Name 已提交
81
//Get 通过负载名称获取负载信息
E
eoLinker API Management 已提交
82 83 84 85 86 87
func Get(name string) (*Info, error) {
	b, e := dao_balance.Get(name)
	if e != nil {
		return nil, e
	}

Y
Your Name 已提交
88
	return ReadInfo(b), nil
E
eoLinker API Management 已提交
89
}
Y
Your Name 已提交
90

Y
Your Name 已提交
91
//Search 关键字获取负载列表
Y
Your Name 已提交
92
func Search(keyworkd string) ([]*Info, error) {
E
eoLinker API Management 已提交
93
	var entities []*entity.Balance
Y
Your Name 已提交
94 95
	if keyworkd == "" {
		es, e := dao_balance.GetAll()
E
eoLinker API Management 已提交
96 97 98 99
		if e != nil {
			return nil, e
		}
		entities = es
Y
Your Name 已提交
100 101
	} else {
		es, e := dao_balance.Search(keyworkd)
E
eoLinker API Management 已提交
102 103 104 105 106 107 108 109 110 111 112 113 114
		if e != nil {
			return nil, e
		}
		entities = es
	}

	infos := make([]*Info, 0, len(entities))

	for _, ent := range entities {
		infos = append(infos, ReadInfo(ent))
	}
	return infos, nil
}
Y
Your Name 已提交
115

Y
Your Name 已提交
116
//GetAll 获取所有负载列表
E
eoLinker API Management 已提交
117 118 119 120 121 122 123 124 125 126 127 128 129 130
func GetAll() ([]*Info, error) {

	entities, e := dao_balance.GetAll()
	if e != nil {
		return nil, e
	}
	infos := make([]*Info, 0, len(entities))

	for _, ent := range entities {
		infos = append(infos, ReadInfo(ent))
	}
	return infos, nil
}

Y
Your Name 已提交
131
//Delete 删除负载
E
eoLinker API Management 已提交
132 133
func Delete(name string) (string, error) {
	result, err := dao_balance.Delete(name)
Y
Your Name 已提交
134

E
eoLinker API Management 已提交
135 136 137
	return result, err
}

Y
Your Name 已提交
138
//GetBalancNames 获取负载名称列表
E
eoLinker API Management 已提交
139 140 141 142
func GetBalancNames() (bool, []string, error) {
	return dao_balance.GetBalanceNames()
}

Y
Your Name 已提交
143
//BatchDeleteBalance 批量删除负载
E
eoLinker API Management 已提交
144 145
func BatchDeleteBalance(balanceNames []string) (string, error) {
	result, err := dao_balance.BatchDelete(balanceNames)
Y
Your Name 已提交
146

E
eoLinker API Management 已提交
147 148
	return result, err
}