Refactor 'GET .../schemas/{subject}/versions' to get all schema data as well

This commit is contained in:
Ildar Almakaev 2021-02-11 15:47:32 +03:00
parent 24e5d4dc5c
commit 83f9cd78f1
4 changed files with 12 additions and 7 deletions

View file

@ -58,7 +58,12 @@ public class SchemaRegistryService {
.orElse(Mono.error(new NotFoundException("No such cluster")));
}
public Flux<Integer> getSchemaSubjectVersions(String clusterName, String schemaName) {
public Flux<SchemaSubject> getAllVersionsBySubject(String clusterName, String subject) {
Flux<Integer> versions = getSubjectVersions(clusterName, subject);
return versions.flatMap(version -> getSchemaSubjectByVersion(clusterName, subject, version));
}
private Flux<Integer> getSubjectVersions(String clusterName, String schemaName) {
return clustersStorage.getClusterByName(clusterName)
.map(cluster -> webClient.get()
.uri(cluster.getSchemaRegistry() + URL_SUBJECT_VERSIONS, schemaName)

View file

@ -121,8 +121,9 @@ public class MetricsRestController implements ApiClustersApi {
}
@Override
public Mono<ResponseEntity<Flux<Integer>>> getSchemaVersions(String clusterName, String subjectName, ServerWebExchange exchange) {
return Mono.just(ResponseEntity.ok(schemaRegistryService.getSchemaSubjectVersions(clusterName, subjectName)));
public Mono<ResponseEntity<Flux<SchemaSubject>>> getAllVersionsBySubject(String clusterName, String subjectName, ServerWebExchange exchange) {
Flux<SchemaSubject> schemas = schemaRegistryService.getAllVersionsBySubject(clusterName, subjectName);
return Mono.just(ResponseEntity.ok(schemas));
}
@Override

View file

@ -89,7 +89,6 @@ class SchemaRegistryServiceTests extends AbstractBaseTest {
Assertions.assertNotNull(actualSchemaSubject.getVersion());
Assertions.assertNotNull(actualSchemaSubject.getCompatibilityLevel());
Assertions.assertEquals("\"string\"", actualSchemaSubject.getSchema());
});
}

View file

@ -414,8 +414,8 @@ paths:
get:
tags:
- /api/clusters
summary: get all version of schema from Schema Registry service
operationId: getSchemaVersions
summary: get all version of subject from Schema Registry service
operationId: getAllVersionsBySubject
parameters:
- name: clusterName
in: path
@ -435,7 +435,7 @@ paths:
schema:
type: array
items:
type: integer
$ref: '#/components/schemas/SchemaSubject'
/api/clusters/{clusterName}/schemas/{subject}/latest:
get: