You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by ju...@apache.org on 2020/07/12 12:33:39 UTC
[incubator-apisix-dashboard] branch master updated: fix: return all
objects when search route & upstream (#311)
This is an automated email from the ASF dual-hosted git repository.
juzhiyuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-apisix-dashboard.git
The following commit(s) were added to refs/heads/master by this push:
new 4ee67f9 fix: return all objects when search route & upstream (#311)
4ee67f9 is described below
commit 4ee67f947b0b88a1cd6dbd6a4c7d00b4d81aa81f
Author: kv <gx...@163.com>
AuthorDate: Sun Jul 12 20:33:02 2020 +0800
fix: return all objects when search route & upstream (#311)
* fix: route search
* fix: upstream search
---
api/route/route.go | 32 ++++++++++++++++++++++++--------
api/route/upstream.go | 29 ++++++++++++++++++++++++++++-
2 files changed, 52 insertions(+), 9 deletions(-)
diff --git a/api/route/route.go b/api/route/route.go
index 29bae16..db09f4f 100644
--- a/api/route/route.go
+++ b/api/route/route.go
@@ -79,6 +79,7 @@ func listRoute(c *gin.Context) {
if size == 0 {
size = 10
}
+ db = db.Table("routes")
isSearch := true
if name, exist := c.GetQuery("name"); exist {
db = db.Where("name like ? ", "%"+name+"%")
@@ -103,18 +104,14 @@ func listRoute(c *gin.Context) {
// search
if isSearch {
if search, exist := c.GetQuery("search"); exist {
- db = db.Where("name like ? ", "%"+search+"%").
- Or("description like ? ", "%"+search+"%").
- Or("hosts like ? ", "%"+search+"%").
- Or("uris like ? ", "%"+search+"%").
- Or("upstream_nodes like ? ", "%"+search+"%")
+ s := "%" + search + "%"
+ db = db.Where("name like ? or description like ? or hosts like ? or uris like ? or upstream_nodes like ? ", s, s, s, s, s)
}
}
- // todo params check
// mysql
routeList := []service.Route{}
var count int
- if err := db.Order("priority, update_time desc").Table("routes").Offset((page - 1) * size).Limit(size).Find(&routeList).Count(&count).Error; err != nil {
+ if err := db.Order("priority, update_time desc").Table("routes").Offset((page - 1) * size).Limit(size).Find(&routeList).Error; err != nil {
e := errno.FromMessage(errno.RouteRequestError, err.Error())
logger.Error(e.Msg)
c.AbortWithStatusJSON(http.StatusBadRequest, e.Response())
@@ -126,6 +123,12 @@ func listRoute(c *gin.Context) {
response.Parse(&r)
responseList = append(responseList, *response)
}
+ if err := db.Count(&count).Error; err != nil {
+ e := errno.FromMessage(errno.RouteRequestError, err.Error())
+ logger.Error(e.Msg)
+ c.AbortWithStatusJSON(http.StatusInternalServerError, e.Response())
+ return
+ }
result := &service.ListResponse{Count: count, Data: responseList}
resp, _ := json.Marshal(result)
c.Data(http.StatusOK, service.ContentType, resp)
@@ -241,7 +244,20 @@ func updateRoute(c *gin.Context) {
func findRoute(c *gin.Context) {
rid := c.Param("rid")
- // todo params check
+ var count int
+ if err := conf.DB().Table("routes").Where("id=?", rid).Count(&count).Error; err != nil {
+ e := errno.FromMessage(errno.RouteRequestError, err.Error()+" route ID: "+rid)
+ logger.Error(e.Msg)
+ c.AbortWithStatusJSON(http.StatusInternalServerError, e.Response())
+ return
+ } else {
+ if count < 1 {
+ e := errno.FromMessage(errno.RouteRequestError, " route ID: "+rid+" not exist")
+ logger.Error(e.Msg)
+ c.AbortWithStatusJSON(e.Status, e.Response())
+ return
+ }
+ }
// find from apisix
request := &service.ApisixRouteRequest{}
if response, err := request.FindById(rid); err != nil {
diff --git a/api/route/upstream.go b/api/route/upstream.go
index 7433aa7..ac319a2 100644
--- a/api/route/upstream.go
+++ b/api/route/upstream.go
@@ -161,6 +161,22 @@ func createUpstream(c *gin.Context) {
func findUpstream(c *gin.Context) {
uid := c.Param("uid")
+ upstream := &service.UpstreamDao{}
+ var count int
+ if err := conf.DB().Table("upstreams").Where("id=?", uid).Count(&count).Error; err != nil {
+ e := errno.FromMessage(errno.UpstreamRequestError, err.Error()+" upstream ID: "+uid)
+ logger.Error(e.Msg)
+ c.AbortWithStatusJSON(http.StatusBadRequest, e.Response())
+ return
+ } else {
+ if count < 1 {
+ e := errno.FromMessage(errno.UpstreamRequestError, " upstream ID: "+uid+" not exist")
+ logger.Error(e.Msg)
+ c.AbortWithStatusJSON(e.Status, e.Response())
+ return
+ }
+ }
+ conf.DB().Table("upstreams").Where("id=?", uid).First(&upstream)
// find from apisix
aur := &service.ApisixUpstreamRequest{Id: uid}
if resp, err := aur.FindById(); err != nil {
@@ -188,9 +204,14 @@ func listUpstream(c *gin.Context) {
size = 10
}
db := conf.DB()
+ db = db.Table("upstreams")
+ if search, exist := c.GetQuery("search"); exist {
+ s := "%" + search + "%"
+ db = db.Where("name like ? or description like ? or nodes like ? ", s, s, s)
+ }
upstreamList := []service.UpstreamDao{}
var count int
- if err := db.Order("update_time desc").Table("upstreams").Offset((page - 1) * size).Limit(size).Find(&upstreamList).Count(&count).Error; err != nil {
+ if err := db.Order("update_time desc").Offset((page - 1) * size).Limit(size).Find(&upstreamList).Error; err != nil {
e := errno.FromMessage(errno.RouteRequestError, err.Error())
logger.Error(e.Msg)
c.AbortWithStatusJSON(http.StatusInternalServerError, e.Response())
@@ -203,6 +224,12 @@ func listUpstream(c *gin.Context) {
responseList = append(responseList, response)
}
}
+ if err := db.Count(&count).Error; err != nil {
+ e := errno.FromMessage(errno.UpstreamRequestError, err.Error())
+ logger.Error(e.Msg)
+ c.AbortWithStatusJSON(http.StatusInternalServerError, e.Response())
+ return
+ }
result := &service.ListResponse{Count: count, Data: responseList}
resp, _ := json.Marshal(result)
c.Data(http.StatusOK, service.ContentType, resp)