diff --git a/api/datastore/postgres/postgres.go b/api/datastore/postgres/postgres.go index 21b44105f..ffa6b962b 100644 --- a/api/datastore/postgres/postgres.go +++ b/api/datastore/postgres/postgres.go @@ -275,6 +275,10 @@ func buildFilterQuery(filter *models.RouteFilter) string { filterQueries = append(filterQueries, fmt.Sprintf("app_name = '%s'", filter.AppName)) } + if filter.Image != "" { + filterQueries = append(filterQueries, fmt.Sprintf("image = '%s'", filter.Image)) + } + for i, field := range filterQueries { if i == 0 { filterQuery = fmt.Sprintf("WHERE %s ", field) diff --git a/api/models/datastore.go b/api/models/datastore.go index be4127b57..81a63f1bd 100644 --- a/api/models/datastore.go +++ b/api/models/datastore.go @@ -32,5 +32,6 @@ func ApplyAppFilter(app *App, filter *AppFilter) bool { func ApplyRouteFilter(route *Route, filter *RouteFilter) bool { return (filter.Path == "" || route.Path == filter.Path) && - (filter.AppName == "" || route.AppName == filter.AppName) + (filter.AppName == "" || route.AppName == filter.AppName) && + (filter.Image == "" || route.Image == filter.Image) } diff --git a/api/models/route.go b/api/models/route.go index 627ac8b1f..9c3c392e5 100644 --- a/api/models/route.go +++ b/api/models/route.go @@ -64,4 +64,5 @@ func (r *Route) Validate() error { type RouteFilter struct { Path string AppName string + Image string } diff --git a/api/server/routes_list.go b/api/server/routes_list.go index 5f45ed8b2..dc1423952 100644 --- a/api/server/routes_list.go +++ b/api/server/routes_list.go @@ -21,6 +21,10 @@ func handleRouteList(c *gin.Context) { AppName: appName, } + if img := c.Query("image"); img != "" { + filter.Image = img + } + routes, err := Api.Datastore.GetRoutes(filter) if err != nil { log.WithError(err).Error(models.ErrRoutesGet)