Skip to content
Snippets Groups Projects
Commit 38343df4 authored by Baptiste Toulemonde's avatar Baptiste Toulemonde
Browse files

Merge branch 'describe_repository_api' into 'master'

Describe repository api

See merge request !3
parents d741df74 a9310064
No related branches found
No related tags found
1 merge request!3Describe repository api
package com.smartharvester.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.smartharvester.dao.CatalogDaoRepository;
import com.smartharvester.dao.OpenApiDaoRepository;
import com.smartharvester.dao.UserDaoRepository;
import com.smartharvester.exception.ResourceNotFoundException;
import com.smartharvester.model.login.response.MessageResponse;
import com.smartharvester.model.openapi.OpenApi;
import com.smartharvester.model.user.Catalog;
import com.smartharvester.model.user.SmartHarvesterUser;
import com.smartharvester.service.UserDaoSevice;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import javax.validation.Valid;
@CrossOrigin(origins = "*")
@RestController
@Tag(name = "SmartHarvester publication", description = "Publication management")
@RequestMapping("/harvester/publication")
public class SmartHarvesterPublicationController {
@Autowired
private OpenApiDaoRepository openApiDaoRepository;
@Autowired
private CatalogDaoRepository catalogDoaRepository;
/**
* Method to get openAPI publication by this catolog id.
*
* @return Open API object.
*/
@GetMapping("/catalogs/{catId}")
public ResponseEntity<OpenApi> getPublication(@PathVariable("catId") String catId) {
return Optional.ofNullable(openApiDaoRepository.findByUUID(catId))
.map(openApi -> ResponseEntity.ok().body(openApi)).orElseGet(() -> ResponseEntity.notFound().build());
}
@PostMapping("/publish")
public ResponseEntity<?> registerUser(@Valid @RequestBody OpenApi openApi) {
String catId = openApi.getInfo().getxCatalogId();
if (catalogDoaRepository.findByCatId(catId) == null) {
return ResponseEntity
.badRequest()
.body(new MessageResponse("Error: Catalog not found!",HttpStatus.NOT_FOUND));
}
if (openApiDaoRepository.existsByCatalogId(catId)) {
openApiDaoRepository.delete(openApiDaoRepository.findByUUID(catId));
}
openApiDaoRepository.save(openApi);
return ResponseEntity.ok(new MessageResponse("Publication registered successfully!",HttpStatus.OK));
}
}
\ No newline at end of file
......@@ -2,6 +2,8 @@ package com.smartharvester.dao;
import com.smartharvester.model.openapi.OpenApi;
import org.springframework.data.mongodb.repository.ExistsQuery;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;
......@@ -17,5 +19,7 @@ public interface OpenApiDaoRepository extends MongoRepository<OpenApi, Integer>
@Query(value = "{'info.x-catalog-id' : ?0 }")
OpenApi findByUUID(String uudi);
@ExistsQuery("{'info.x-catalog-id' : ?0}")
Boolean existsByCatalogId(String uudi);
}
\ No newline at end of file
......@@ -10,6 +10,8 @@ public class OpenApiInfo {
String title;
String version;
String description;
@Field("x-format")
@JsonProperty("x-format")
String xFormat;
......@@ -28,7 +30,7 @@ public class OpenApiInfo {
@Field("x-catalog-id")
@JsonProperty("x-catalog-id")
UUID xCatalogId;
String xCatalogId;
public String getTitle() {
return title;
......@@ -38,6 +40,14 @@ public class OpenApiInfo {
this.title = title;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
public String getVersion() {
return version;
}
......@@ -78,11 +88,11 @@ public class OpenApiInfo {
this.xPageParam = xPageParam;
}
public UUID getxCatalogId() {
public String getxCatalogId() {
return xCatalogId;
}
public void setxCatalogId(UUID xCatalogId) {
public void setxCatalogId(String xCatalogId) {
this.xCatalogId = xCatalogId;
}
}
package com.smartharvester.model.openapi;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.springframework.data.mongodb.core.mapping.Field;
public class OpenApiSchema {
......@@ -16,6 +18,7 @@ public class OpenApiSchema {
this.type = type;
}
@JsonProperty("default")
public String getDefaultValue() {
return defaultValue;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment