refactor code structure (#1738)
This commit is contained in:
@@ -3,12 +3,11 @@ package resource
|
||||
import (
|
||||
"errors"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/client-go/informers"
|
||||
"kubesphere.io/kubesphere/pkg/api"
|
||||
"kubesphere.io/kubesphere/pkg/apiserver/query"
|
||||
"kubesphere.io/kubesphere/pkg/informers"
|
||||
"kubesphere.io/kubesphere/pkg/models/resources/v1alpha3"
|
||||
"kubesphere.io/kubesphere/pkg/models/resources/v1alpha3/deployment"
|
||||
"sort"
|
||||
)
|
||||
|
||||
var ErrResourceNotSupported = errors.New("resource is not supported")
|
||||
@@ -17,10 +16,10 @@ type NamespacedResourceGetter struct {
|
||||
getters map[schema.GroupVersionResource]v1alpha3.Interface
|
||||
}
|
||||
|
||||
func New(informers informers.SharedInformerFactory) *NamespacedResourceGetter {
|
||||
func New(factory informers.InformerFactory) *NamespacedResourceGetter {
|
||||
getters := make(map[schema.GroupVersionResource]v1alpha3.Interface)
|
||||
|
||||
getters[schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "deployments"}] = deployment.New(informers)
|
||||
getters[schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "deployments"}] = deployment.New(factory.KubernetesSharedInformerFactory())
|
||||
|
||||
return &NamespacedResourceGetter{
|
||||
getters: getters,
|
||||
@@ -54,45 +53,6 @@ func (r *NamespacedResourceGetter) List(resource, namespace string, query *query
|
||||
return nil, ErrResourceNotSupported
|
||||
}
|
||||
|
||||
all, err := getter.List(namespace)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return getter.List(namespace, query)
|
||||
|
||||
// selected matched ones
|
||||
var filtered []interface{}
|
||||
for _, deploy := range all {
|
||||
for _, filter := range query.Filters {
|
||||
if getter.Filter(deploy, filter) {
|
||||
filtered = append(filtered, deploy)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// sort
|
||||
sort.Slice(filtered, func(i, j int) bool {
|
||||
if !query.Ascending {
|
||||
return !getter.Compare(filtered[i], filtered[j], query.SortBy)
|
||||
}
|
||||
return getter.Compare(filtered[i], filtered[j], query.SortBy)
|
||||
})
|
||||
|
||||
start, end := query.Pagination.GetPaginationSettings(len(filtered))
|
||||
if query.Pagination.IsPageAvailable(len(filtered), start) {
|
||||
var result []interface{}
|
||||
|
||||
for i := start; i < end; i++ {
|
||||
result = append(result, filtered[i])
|
||||
}
|
||||
|
||||
return &api.ListResult{
|
||||
Items: result,
|
||||
TotalItems: len(filtered),
|
||||
}, nil
|
||||
}
|
||||
|
||||
return &api.ListResult{
|
||||
Items: nil,
|
||||
TotalItems: len(filtered),
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user