delete.go 940 字节
Newer Older
E
eoLinker API Management 已提交
1 2 3 4
package dao_service

import (
	"fmt"
Y
Your Name 已提交
5

黄孟柱 已提交
6
	"github.com/eolinker/goku-api-gateway/common/database"
E
eoLinker API Management 已提交
7 8 9 10
)

const sqlDelete = "DELETE FROM  `goku_service_config` WHERE  `name` = ? AND NOT EXISTS (SELECT * FROM `goku_balance` B WHERE B.`serviceName` =  `goku_service_config`.`name` ) "

Y
Your Name 已提交
11
//DeleteError delete error
E
eoLinker API Management 已提交
12 13
type DeleteError string

Y
Your Name 已提交
14 15
func (e DeleteError) Error() string {
	return fmt.Sprintf("can not delete :%s", string(e))
E
eoLinker API Management 已提交
16 17
}

Y
Your Name 已提交
18
//Delete 删除服务发现
Y
Your Name 已提交
19
func Delete(names []string) error {
E
eoLinker API Management 已提交
20

Y
Your Name 已提交
21 22
	tx, err := database.GetConnection().Begin()
	if err != nil {
E
eoLinker API Management 已提交
23 24 25 26
		return err
	}

	stmt, e := tx.Prepare(sqlDelete)
Y
Your Name 已提交
27
	if e != nil {
E
eoLinker API Management 已提交
28 29 30 31 32 33

		return e
	}

	defer stmt.Close()

Y
Your Name 已提交
34 35 36
	for _, name := range names {
		r, e := stmt.Exec(name)
		if e != nil {
E
eoLinker API Management 已提交
37 38 39
			tx.Rollback()
			return e
		}
Y
Your Name 已提交
40 41
		rowCount, err := r.RowsAffected()
		if err != nil {
E
eoLinker API Management 已提交
42 43 44
			tx.Rollback()
			return e
		}
Y
Your Name 已提交
45
		if rowCount == 0 {
E
eoLinker API Management 已提交
46 47 48 49 50 51 52
			tx.Rollback()
			return DeleteError(name)
		}
	}

	return tx.Commit()

Y
Your Name 已提交
53
}