gateway.go 2.9 KB
Newer Older
Y
Your Name 已提交
1
package console_sqlite3
E
eoLinker API Management 已提交
2 3

import (
Y
Your Name 已提交
4 5 6 7
	"database/sql"

	"github.com/eolinker/goku-api-gateway/server/dao"
	entity "github.com/eolinker/goku-api-gateway/server/entity/console-entity"
E
eoLinker API Management 已提交
8 9
)

Y
Your Name 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
//GatewayDao GatewayDao
type GatewayDao struct {
	db *sql.DB
}

//NewGatewayDao new GatewayDao
func NewGatewayDao() *GatewayDao {
	return &GatewayDao{}
}

//Create create
func (d *GatewayDao) Create(db *sql.DB) (interface{}, error) {

	d.db = db

	var i dao.GatewayDao = d

	return &i, nil
}

Y
Your Name 已提交
30
//GetGatewayConfig 获取网关配置
Y
Your Name 已提交
31 32
func (d *GatewayDao) GetGatewayConfig() (map[string]interface{}, error) {
	db := d.db
E
eoLinker API Management 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
	var successCode string
	var nodeUpdatePeriod, monitorUpdatePeriod, monitorTimeout int
	sql := `SELECT successCode,nodeUpdatePeriod,monitorUpdatePeriod,monitorTimeout FROM goku_gateway WHERE id = 1;`
	err := db.QueryRow(sql).Scan(&successCode, &nodeUpdatePeriod, &monitorUpdatePeriod, &monitorTimeout)
	if err != nil {
		return nil, err
	}
	gatewayConfig := map[string]interface{}{
		"successCode":         successCode,
		"nodeUpdatePeriod":    nodeUpdatePeriod,
		"monitorUpdatePeriod": monitorUpdatePeriod,
		"monitorTimeout":      monitorTimeout,
	}
	return gatewayConfig, nil
}

Y
Your Name 已提交
49
//EditGatewayBaseConfig 编辑网关基本配置
Y
Your Name 已提交
50 51
func (d *GatewayDao) EditGatewayBaseConfig(config entity.GatewayBasicConfig) (bool, string, error) {
	db := d.db
E
eoLinker API Management 已提交
52 53 54 55 56 57 58 59 60 61 62 63
	sql := "SELECT successCode FROM goku_gateway WHERE id = 1;"
	code := ""
	err := db.QueryRow(sql).Scan(&code)
	if err != nil {
		sql = "INSERT INTO goku_gateway (id,successCode,nodeUpdatePeriod,monitorUpdatePeriod,monitorTimeout) VALUES (1,?,?,?,?)"
	} else {
		sql = "UPDATE goku_gateway SET successCode = ?,nodeUpdatePeriod = ?,monitorUpdatePeriod = ?,monitorTimeout = ? WHERE id = 1;"
	}
	stmt, err := db.Prepare(sql)
	if err != nil {
		return false, "[ERROR]Illegal SQL Statement!", err
	}
64
	defer stmt.Close()
Y
Your Name 已提交
65
	_, err = stmt.Exec(config.SuccessCode, config.NodeUpdatePeriod, config.MonitorUpdatePeriod, config.MonitorTimeout)
E
eoLinker API Management 已提交
66 67 68 69 70
	if err != nil {
		return false, "[ERROR]Fail to excute SQL Statement!", err
	}
	return true, "", nil
}
Y
Your Name 已提交
71 72

//GetGatewayInfo 获取网关信息
Y
Your Name 已提交
73 74
func (d *GatewayDao) GetGatewayInfo() (nodeStartCount, nodeStopCount, projectCount, apiCount, strategyCount int, err error) {
	db := d.db
Y
Your Name 已提交
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
	// 获取节点启动数量

	err = db.QueryRow("SELECT COUNT(0) FROM goku_node_info WHERE nodeStatus = 1;").Scan(&nodeStartCount)
	if err != nil {
		return
	}

	// 获取节点关闭数量

	err = db.QueryRow("SELECT COUNT(0) FROM goku_node_info WHERE nodeStatus = 0;").Scan(&nodeStopCount)
	if err != nil {
		return
	}
	// 获取项目数量
	err = db.QueryRow("SELECT COUNT(0) FROM goku_gateway_project;").Scan(&projectCount)
	if err != nil {
		return
	}

	// 获取api数量
	err = db.QueryRow("SELECT COUNT(0) FROM goku_gateway_api;").Scan(&apiCount)
	if err != nil {
		return
	}

	// 获取策略数量
	err = db.QueryRow("SELECT COUNT(0) FROM goku_gateway_strategy;").Scan(&strategyCount)
	if err != nil {
		return
	}
	return
}