Skip to content
Snippets Groups Projects
Commit 9266e23d authored by Charly Maeder's avatar Charly Maeder
Browse files

Add controller to get and publish open api

parent de1a4989
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
......@@ -28,7 +28,7 @@ public class OpenApiInfo {
@Field("x-catalog-id")
@JsonProperty("x-catalog-id")
UUID xCatalogId;
String xCatalogId;
public String getTitle() {
return title;
......@@ -78,11 +78,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;
}
}
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