Implement Connectors sorting / backend (#2291)
Co-authored-by: Artem Kazlanzhy <akazlanzhy@provectus.com>
This commit is contained in:
parent
37f1d2254e
commit
2b5dd270e2
2 changed files with 46 additions and 1 deletions
|
@ -3,13 +3,16 @@ package com.provectus.kafka.ui.controller;
|
||||||
import com.provectus.kafka.ui.api.KafkaConnectApi;
|
import com.provectus.kafka.ui.api.KafkaConnectApi;
|
||||||
import com.provectus.kafka.ui.model.ConnectDTO;
|
import com.provectus.kafka.ui.model.ConnectDTO;
|
||||||
import com.provectus.kafka.ui.model.ConnectorActionDTO;
|
import com.provectus.kafka.ui.model.ConnectorActionDTO;
|
||||||
|
import com.provectus.kafka.ui.model.ConnectorColumnsToSortDTO;
|
||||||
import com.provectus.kafka.ui.model.ConnectorDTO;
|
import com.provectus.kafka.ui.model.ConnectorDTO;
|
||||||
import com.provectus.kafka.ui.model.ConnectorPluginConfigValidationResponseDTO;
|
import com.provectus.kafka.ui.model.ConnectorPluginConfigValidationResponseDTO;
|
||||||
import com.provectus.kafka.ui.model.ConnectorPluginDTO;
|
import com.provectus.kafka.ui.model.ConnectorPluginDTO;
|
||||||
import com.provectus.kafka.ui.model.FullConnectorInfoDTO;
|
import com.provectus.kafka.ui.model.FullConnectorInfoDTO;
|
||||||
import com.provectus.kafka.ui.model.NewConnectorDTO;
|
import com.provectus.kafka.ui.model.NewConnectorDTO;
|
||||||
|
import com.provectus.kafka.ui.model.SortOrderDTO;
|
||||||
import com.provectus.kafka.ui.model.TaskDTO;
|
import com.provectus.kafka.ui.model.TaskDTO;
|
||||||
import com.provectus.kafka.ui.service.KafkaConnectService;
|
import com.provectus.kafka.ui.service.KafkaConnectService;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
@ -68,10 +71,16 @@ public class KafkaConnectController extends AbstractController implements KafkaC
|
||||||
public Mono<ResponseEntity<Flux<FullConnectorInfoDTO>>> getAllConnectors(
|
public Mono<ResponseEntity<Flux<FullConnectorInfoDTO>>> getAllConnectors(
|
||||||
String clusterName,
|
String clusterName,
|
||||||
String search,
|
String search,
|
||||||
|
ConnectorColumnsToSortDTO orderBy,
|
||||||
|
SortOrderDTO sortOrder,
|
||||||
ServerWebExchange exchange
|
ServerWebExchange exchange
|
||||||
) {
|
) {
|
||||||
|
var comparator = sortOrder == null || sortOrder.equals(SortOrderDTO.ASC)
|
||||||
|
? getConnectorsComparator(orderBy)
|
||||||
|
: getConnectorsComparator(orderBy).reversed();
|
||||||
return Mono.just(ResponseEntity.ok(
|
return Mono.just(ResponseEntity.ok(
|
||||||
kafkaConnectService.getAllConnectors(getCluster(clusterName), search)));
|
kafkaConnectService.getAllConnectors(getCluster(clusterName), search).sort(comparator))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -142,4 +151,22 @@ public class KafkaConnectController extends AbstractController implements KafkaC
|
||||||
getCluster(clusterName), connectName, pluginName, requestBody)
|
getCluster(clusterName), connectName, pluginName, requestBody)
|
||||||
.map(ResponseEntity::ok);
|
.map(ResponseEntity::ok);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Comparator<FullConnectorInfoDTO> getConnectorsComparator(ConnectorColumnsToSortDTO orderBy) {
|
||||||
|
var defaultComparator = Comparator.comparing(FullConnectorInfoDTO::getName);
|
||||||
|
if (orderBy == null) {
|
||||||
|
return defaultComparator;
|
||||||
|
}
|
||||||
|
switch (orderBy) {
|
||||||
|
case CONNECT:
|
||||||
|
return Comparator.comparing(FullConnectorInfoDTO::getConnect);
|
||||||
|
case TYPE:
|
||||||
|
return Comparator.comparing(FullConnectorInfoDTO::getType);
|
||||||
|
case STATUS:
|
||||||
|
return Comparator.comparing(fullConnectorInfoDTO -> fullConnectorInfoDTO.getStatus().getState());
|
||||||
|
case NAME:
|
||||||
|
default:
|
||||||
|
return defaultComparator;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1267,6 +1267,16 @@ paths:
|
||||||
required: false
|
required: false
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
|
- name: orderBy
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/ConnectorColumnsToSort'
|
||||||
|
- name: sortOrder
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/SortOrder'
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
description: OK
|
description: OK
|
||||||
|
@ -2009,6 +2019,14 @@ components:
|
||||||
- REPLICATION_FACTOR
|
- REPLICATION_FACTOR
|
||||||
- SIZE
|
- SIZE
|
||||||
|
|
||||||
|
ConnectorColumnsToSort:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- NAME
|
||||||
|
- CONNECT
|
||||||
|
- TYPE
|
||||||
|
- STATUS
|
||||||
|
|
||||||
SortOrder:
|
SortOrder:
|
||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
|
|
Loading…
Add table
Reference in a new issue