From b759407c43d148ec3eb8380dfd08fa8e9f023f5c Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 17 Mar 2021 01:05:05 +0100 Subject: [PATCH] refs #16, created first draft of endpoint interfaces based on ER-diagram --- README.md | 7 +- fda-container-managing-service/api/pom.xml | 2 +- fda-container-managing-service/pom.xml | 3 +- .../rest-service/pom.xml | 6 +- .../DatabaseContainerController.java | 2 +- .../services/pom.xml | 4 +- fda-database-managing-service/Dockerfile | 2 +- fda-database-managing-service/api/pom.xml | 2 +- .../java/at/tuwien/dto/CreateDatabaseDTO.java | 18 ----- .../tuwien/dto/database/DatabaseBriefDto.java | 12 +++ .../dto/database/DatabaseChangeDto.java | 12 +++ .../dto/database/DatabaseCreateDto.java | 29 +++++++ .../at/tuwien/dto/database/DatabaseDto.java | 14 ++++ .../at/tuwien/dto/table/TableBriefDto.java | 12 +++ .../at/tuwien/dto/table/TableCreateDto.java | 17 +++++ .../java/at/tuwien/dto/table/TableDto.java | 17 +++++ .../dto/table/columns/AbstractColumnDto.java | 9 +++ .../table/columns/CategoricalColumnDto.java | 14 ++++ .../dto/table/columns/NominalColumnDto.java | 12 +++ .../dto/table/columns/NumericColumnDto.java | 26 +++++++ .../tuwien/dto/table/columns/SiUnitDto.java | 5 ++ .../gateways/pom.xml | 4 +- .../clients/FdaContainerManagingClient.java | 6 +- fda-database-managing-service/pom.xml | 3 +- .../rest-service/pom.xml | 4 +- .../tuwien/controller/DatabaseController.java | 55 -------------- .../tuwien/endpoints/DatabaseController.java | 75 +++++++++++++++++++ .../at/tuwien/endpoints/TableController.java | 74 ++++++++++++++++++ .../services/pom.xml | 6 +- .../main/java/at/tuwien/entity/Auditable.java | 37 +++++++++ .../main/java/at/tuwien/entity/Database.java | 34 +++++++++ .../src/main/java/at/tuwien/entity/Table.java | 22 ++++++ .../src/main/java/at/tuwien/entity/View.java | 24 ++++++ .../tuwien/repository/DatabaseRepository.java | 7 ++ .../at/tuwien/service/DatabaseService.java | 4 +- 35 files changed, 480 insertions(+), 100 deletions(-) delete mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/CreateDatabaseDTO.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseBriefDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseChangeDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseCreateDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableBriefDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableCreateDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/AbstractColumnDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/CategoricalColumnDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/NominalColumnDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/NumericColumnDto.java create mode 100644 fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/SiUnitDto.java delete mode 100644 fda-database-managing-service/rest-service/src/main/java/at/tuwien/controller/DatabaseController.java create mode 100644 fda-database-managing-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseController.java create mode 100644 fda-database-managing-service/rest-service/src/main/java/at/tuwien/endpoints/TableController.java create mode 100644 fda-database-managing-service/services/src/main/java/at/tuwien/entity/Auditable.java create mode 100644 fda-database-managing-service/services/src/main/java/at/tuwien/entity/Database.java create mode 100644 fda-database-managing-service/services/src/main/java/at/tuwien/entity/Table.java create mode 100644 fda-database-managing-service/services/src/main/java/at/tuwien/entity/View.java create mode 100644 fda-database-managing-service/services/src/main/java/at/tuwien/repository/DatabaseRepository.java diff --git a/README.md b/README.md index caadd4a9c6..b51e7f1907 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,12 @@ docker-compose build ## Develop -The endpoints are documented with Swagger 2.1 and OpenAPI 3.0. The current specification for the front-end is obtainable programatically from [http://fda-container-managing-service/swagger-resources](http://localhost:9091/swagger-resources). +The endpoints are documented with Swagger 2.1 and OpenAPI 3.0. The current specification for the front-end is obtainable programatically from `http://localhost:<port>/swagger-resources` -For easy visualization use OpenAPI at [http://fda-container-managing-service/swagger-ui/](http://localhost:9091/swagger-ui/) +For easy visualization use OpenAPI at: + +- [http://fda-container-managing-service/swagger-ui/](http://localhost:9091/swagger-ui/) +- [http://fda-database-managing-service/swagger-ui/](http://localhost:9092/swagger-ui/) ## Deployment diff --git a/fda-container-managing-service/api/pom.xml b/fda-container-managing-service/api/pom.xml index 91f5fdb591..20bce4c285 100644 --- a/fda-container-managing-service/api/pom.xml +++ b/fda-container-managing-service/api/pom.xml @@ -10,7 +10,7 @@ </parent> <artifactId>api</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <name>fda-container-managing-service-api</name> <properties> diff --git a/fda-container-managing-service/pom.xml b/fda-container-managing-service/pom.xml index 6487cae9e5..0cb1ad2abb 100644 --- a/fda-container-managing-service/pom.xml +++ b/fda-container-managing-service/pom.xml @@ -10,7 +10,7 @@ <groupId>at.tuwien</groupId> <artifactId>fda-container-managing-service</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <name>fda-container-managing-service</name> <description>Demo project for Spring Boot</description> @@ -22,7 +22,6 @@ </modules> <properties> - <global.version>0.0.1-SNAPSHOT</global.version> <java.version>11</java.version> <spring-cloud.version>Hoxton.SR8</spring-cloud.version> <mapstruct.version>1.4.2.Final</mapstruct.version> diff --git a/fda-container-managing-service/rest-service/pom.xml b/fda-container-managing-service/rest-service/pom.xml index 8f358e49ab..829b177a90 100644 --- a/fda-container-managing-service/rest-service/pom.xml +++ b/fda-container-managing-service/rest-service/pom.xml @@ -10,7 +10,7 @@ </parent> <artifactId>rest-service</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <name>fda-container-managing-service-rest-service</name> <properties> @@ -22,12 +22,12 @@ <dependency> <groupId>at.tuwien</groupId> <artifactId>services</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>at.tuwien</groupId> <artifactId>api</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> diff --git a/fda-container-managing-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseContainerController.java b/fda-container-managing-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseContainerController.java index e6ec3fb703..8b06ed879a 100644 --- a/fda-container-managing-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseContainerController.java +++ b/fda-container-managing-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseContainerController.java @@ -83,7 +83,7 @@ public class DatabaseContainerController { } @DeleteMapping("/container/{id}") - @ApiOperation(value = "Delete a database container.") + @ApiOperation(value = "Delete a database container") public ResponseEntity deleteDatabaseContainer(@RequestParam String id) throws ContainerNotFoundException, DockerClientException { containerService.remove(id); return ResponseEntity.status(HttpStatus.OK) diff --git a/fda-container-managing-service/services/pom.xml b/fda-container-managing-service/services/pom.xml index 70ccec7ee9..7262a64da2 100644 --- a/fda-container-managing-service/services/pom.xml +++ b/fda-container-managing-service/services/pom.xml @@ -10,7 +10,7 @@ </parent> <artifactId>services</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <name>fda-container-managing-service-services</name> <properties> @@ -22,7 +22,7 @@ <dependency> <groupId>at.tuwien</groupId> <artifactId>api</artifactId> - <version>${project.version}</version> + <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> diff --git a/fda-database-managing-service/Dockerfile b/fda-database-managing-service/Dockerfile index ab1af5623e..a6133933e5 100644 --- a/fda-database-managing-service/Dockerfile +++ b/fda-database-managing-service/Dockerfile @@ -11,7 +11,7 @@ COPY ./gateways ./gateways COPY ./rest-service ./rest-service COPY ./services ./services -RUN mvn -q clean package > /dev/null +RUN mvn -q clean package -DskipTests ###### SECOND STAGE ###### FROM openjdk:11-jre-slim as runtime diff --git a/fda-database-managing-service/api/pom.xml b/fda-database-managing-service/api/pom.xml index 1d09d21b37..e3fbd72fce 100644 --- a/fda-database-managing-service/api/pom.xml +++ b/fda-database-managing-service/api/pom.xml @@ -10,7 +10,7 @@ </parent> <artifactId>api</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <name>fda-database-managing-service-api</name> <properties> diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/CreateDatabaseDTO.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/CreateDatabaseDTO.java deleted file mode 100644 index cb6f870caf..0000000000 --- a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/CreateDatabaseDTO.java +++ /dev/null @@ -1,18 +0,0 @@ -package at.tuwien.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -@Getter -@Setter -@NoArgsConstructor -public class CreateDatabaseDTO { - - @JsonProperty("ContainerName") - private String containerName; - @JsonProperty("DatabaseName") - private String dbName; - -} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseBriefDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseBriefDto.java new file mode 100644 index 0000000000..d1a45515af --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseBriefDto.java @@ -0,0 +1,12 @@ +package at.tuwien.dto.database; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class DatabaseBriefDto { + + private Long id; + +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseChangeDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseChangeDto.java new file mode 100644 index 0000000000..475b428a92 --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseChangeDto.java @@ -0,0 +1,12 @@ +package at.tuwien.dto.database; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class DatabaseChangeDto { + + private Long databaseId; + +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseCreateDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseCreateDto.java new file mode 100644 index 0000000000..7f8efa6264 --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseCreateDto.java @@ -0,0 +1,29 @@ +package at.tuwien.dto.database; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class DatabaseCreateDto { + + /* container hash */ + private String containerId; + + private String name; + + private String engine; + + private String owner; + + private String creator; + + private String publisher; + + private String publicationYear; + + private String ResourceType; + + private String description; + +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseDto.java new file mode 100644 index 0000000000..0359f5786f --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/database/DatabaseDto.java @@ -0,0 +1,14 @@ +package at.tuwien.dto.database; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class DatabaseDto extends DatabaseBriefDto { + + private String name; + + private String containerId; + +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableBriefDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableBriefDto.java new file mode 100644 index 0000000000..a8fde192c7 --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableBriefDto.java @@ -0,0 +1,12 @@ +package at.tuwien.dto.table; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class TableBriefDto { + + private Long id; + +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableCreateDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableCreateDto.java new file mode 100644 index 0000000000..6b1ef254db --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableCreateDto.java @@ -0,0 +1,17 @@ +package at.tuwien.dto.table; + +import at.tuwien.dto.table.columns.AbstractColumnDto; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class TableCreateDto { + + private String name; + + private AbstractColumnDto[] columns; + + private String description; + +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableDto.java new file mode 100644 index 0000000000..b75ae0f12d --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/TableDto.java @@ -0,0 +1,17 @@ +package at.tuwien.dto.table; + +import at.tuwien.dto.table.columns.AbstractColumnDto; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class TableDto extends TableBriefDto { + + private String name; + + private AbstractColumnDto[] columns; + + private String description; + +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/AbstractColumnDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/AbstractColumnDto.java new file mode 100644 index 0000000000..ffa09be7f2 --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/AbstractColumnDto.java @@ -0,0 +1,9 @@ +package at.tuwien.dto.table.columns; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public abstract class AbstractColumnDto { +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/CategoricalColumnDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/CategoricalColumnDto.java new file mode 100644 index 0000000000..21e355b238 --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/CategoricalColumnDto.java @@ -0,0 +1,14 @@ +package at.tuwien.dto.table.columns; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class CategoricalColumnDto extends AbstractColumnDto { + + private Long totalCategories; + + private String[] categories; + +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/NominalColumnDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/NominalColumnDto.java new file mode 100644 index 0000000000..ec80607f83 --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/NominalColumnDto.java @@ -0,0 +1,12 @@ +package at.tuwien.dto.table.columns; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class NominalColumnDto extends AbstractColumnDto { + + private Long maxLength; + +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/NumericColumnDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/NumericColumnDto.java new file mode 100644 index 0000000000..b14f128a3e --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/NumericColumnDto.java @@ -0,0 +1,26 @@ +package at.tuwien.dto.table.columns; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class NumericColumnDto extends AbstractColumnDto { + + private Long maxLength; + + private SiUnitDto siUnit; + + private Double min; + + private Double max; + + private Double mean; + + private Double median; + + private Double standardDeviation; + + private Object histogram; + +} diff --git a/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/SiUnitDto.java b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/SiUnitDto.java new file mode 100644 index 0000000000..8a776c6fff --- /dev/null +++ b/fda-database-managing-service/api/src/main/java/at/tuwien/dto/table/columns/SiUnitDto.java @@ -0,0 +1,5 @@ +package at.tuwien.dto.table.columns; + +public enum SiUnitDto { + SECOND, METER, KILOGRAM, AMPERE, KELVIN, MOLE, CANDELA +} diff --git a/fda-database-managing-service/gateways/pom.xml b/fda-database-managing-service/gateways/pom.xml index 003e4d8680..a142493776 100644 --- a/fda-database-managing-service/gateways/pom.xml +++ b/fda-database-managing-service/gateways/pom.xml @@ -10,7 +10,7 @@ </parent> <artifactId>gateways</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <name>fda-database-managing-service-gateways</name> <properties> @@ -22,7 +22,7 @@ <dependency> <groupId>at.tuwien</groupId> <artifactId>api</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> diff --git a/fda-database-managing-service/gateways/src/main/java/at/tuwien/clients/FdaContainerManagingClient.java b/fda-database-managing-service/gateways/src/main/java/at/tuwien/clients/FdaContainerManagingClient.java index ba94a6fc7f..d5e4051ac0 100644 --- a/fda-database-managing-service/gateways/src/main/java/at/tuwien/clients/FdaContainerManagingClient.java +++ b/fda-database-managing-service/gateways/src/main/java/at/tuwien/clients/FdaContainerManagingClient.java @@ -1,6 +1,6 @@ package at.tuwien.clients; -import at.tuwien.dto.CreateDatabaseDTO; +import at.tuwien.dto.database.DatabaseCreateDto; import at.tuwien.model.Database; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,14 +20,14 @@ public class FdaContainerManagingClient { @Autowired private WebClient.Builder webClientBuilder; - public boolean createDatabaseContainer(CreateDatabaseDTO dto) { + public boolean createDatabaseContainer(DatabaseCreateDto dto) { LOGGER.debug("request fda-container-managing service for createDatabaseContainer"); ClientResponse clientResponse = webClientBuilder .build() .post() .uri("http://fda-container-managing/at.tuwien.api/createDatabaseContainer") .contentType(MediaType.APPLICATION_JSON) - .body(Mono.just(dto), CreateDatabaseDTO.class) + .body(Mono.just(dto), DatabaseCreateDto.class) .exchange() .block(); diff --git a/fda-database-managing-service/pom.xml b/fda-database-managing-service/pom.xml index 5c7d147aa2..2e63b889d3 100644 --- a/fda-database-managing-service/pom.xml +++ b/fda-database-managing-service/pom.xml @@ -10,7 +10,7 @@ <groupId>at.tuwien</groupId> <artifactId>fda-database-managing-service</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <name>fda-database-managing-service</name> <description>Demo project for Spring Boot</description> @@ -23,7 +23,6 @@ </modules> <properties> - <global.version>0.0.1-SNAPSHOT</global.version> <java.version>11</java.version> <spring-cloud.version>Hoxton.SR8</spring-cloud.version> <mapstruct.version>1.4.2.Final</mapstruct.version> diff --git a/fda-database-managing-service/rest-service/pom.xml b/fda-database-managing-service/rest-service/pom.xml index b6d550946a..fb89aa38b4 100644 --- a/fda-database-managing-service/rest-service/pom.xml +++ b/fda-database-managing-service/rest-service/pom.xml @@ -10,14 +10,14 @@ </parent> <artifactId>rest-service</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <name>fda-database-managing-service-rest-services</name> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>services</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> diff --git a/fda-database-managing-service/rest-service/src/main/java/at/tuwien/controller/DatabaseController.java b/fda-database-managing-service/rest-service/src/main/java/at/tuwien/controller/DatabaseController.java deleted file mode 100644 index 39afb24610..0000000000 --- a/fda-database-managing-service/rest-service/src/main/java/at/tuwien/controller/DatabaseController.java +++ /dev/null @@ -1,55 +0,0 @@ -package at.tuwien.controller; - -import at.tuwien.dto.CreateDatabaseDTO; -import at.tuwien.model.Database; -import at.tuwien.service.DatabaseService; -import io.swagger.annotations.ApiOperation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequestMapping("/database") -public class DatabaseController { - private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseController.class); - - private DatabaseService service; - - @Autowired - public DatabaseController(DatabaseService service) { - this.service = service; - } - - @PostMapping("/createDatabase") - @ApiOperation(value = "creating a new database") - public ResponseEntity createDatabase(@RequestBody CreateDatabaseDTO dto) { -// LOGGER.debug("creating new database"); -// boolean succeed = service.createDatabase(dto); -// if (succeed) { -// return Response -// .status(Response.Status.CREATED) -// .entity("Database container successfully created and started!") -// .type(MediaType.APPLICATION_JSON) -// .build(); -// } -// return Response -// .status(Response.Status.INTERNAL_SERVER_ERROR) -// .type(MediaType.APPLICATION_JSON) -// .build(); - return null; - } - - - @GetMapping("/listDatabases") - public List<Database> listDatabases() { -// LOGGER.debug("getting a list of created databases"); -// return service.findAllCreatedDatabases(); - return null; - } - - -} diff --git a/fda-database-managing-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseController.java b/fda-database-managing-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseController.java new file mode 100644 index 0000000000..ba47aad845 --- /dev/null +++ b/fda-database-managing-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseController.java @@ -0,0 +1,75 @@ +package at.tuwien.endpoints; + +import at.tuwien.dto.database.DatabaseBriefDto; +import at.tuwien.dto.database.DatabaseCreateDto; +import at.tuwien.dto.database.DatabaseChangeDto; +import at.tuwien.dto.database.DatabaseDto; +import at.tuwien.service.DatabaseService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api") +public class DatabaseController { + + private final DatabaseService databaseService; + + @Autowired + public DatabaseController(DatabaseService databaseService) { + this.databaseService = databaseService; + } + + @GetMapping("/database") + @ApiOperation(value = "List all databases", notes = "Currently a container supports only databases of the same image, e.g. there is one PostgreSQL engine running with multiple databases inside a container.") + public ResponseEntity<List<DatabaseBriefDto>> findAll() { +// LOGGER.debug("getting a list of created databases"); +// return service.findAllCreatedDatabases(); + return null; + } + + @PostMapping("/database") + @ApiOperation(value = "Creates a new database", notes = "Creates a new database in a container") + public ResponseEntity<DatabaseDto> create(@RequestBody DatabaseCreateDto dto) { +// LOGGER.debug("creating new database"); +// boolean succeed = service.createDatabase(dto); +// if (succeed) { +// return Response +// .status(Response.Status.CREATED) +// .entity("Database container successfully created and started!") +// .type(MediaType.APPLICATION_JSON) +// .build(); +// } +// return Response +// .status(Response.Status.INTERNAL_SERVER_ERROR) +// .type(MediaType.APPLICATION_JSON) +// .build(); + return ResponseEntity.status(HttpStatus.CREATED) + .build(); + } + + @GetMapping("/database/{id}") + @ApiOperation(value = "Get all informations about a database") + public ResponseEntity<DatabaseDto> findById(@RequestParam String id) { + return null; + } + + @PutMapping("/database/{id}") + @ApiOperation(value = "Change the state of a database") + public ResponseEntity<DatabaseDto> modify(@RequestParam String id, @RequestBody DatabaseChangeDto changeDto) { + return ResponseEntity.status(HttpStatus.ACCEPTED) + .build(); + } + + @DeleteMapping("/database/{id}") + @ApiOperation(value = "Delete a database") + public ResponseEntity delete(@RequestParam String id) { + return ResponseEntity.status(HttpStatus.OK) + .build(); + } + +} diff --git a/fda-database-managing-service/rest-service/src/main/java/at/tuwien/endpoints/TableController.java b/fda-database-managing-service/rest-service/src/main/java/at/tuwien/endpoints/TableController.java new file mode 100644 index 0000000000..7a4349b995 --- /dev/null +++ b/fda-database-managing-service/rest-service/src/main/java/at/tuwien/endpoints/TableController.java @@ -0,0 +1,74 @@ +package at.tuwien.endpoints; + +import at.tuwien.dto.database.DatabaseChangeDto; +import at.tuwien.dto.database.DatabaseCreateDto; +import at.tuwien.dto.table.TableBriefDto; +import at.tuwien.dto.table.TableDto; +import at.tuwien.model.Database; +import at.tuwien.service.DatabaseService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/database/{id}") +public class TableController { + + private final DatabaseService databaseService; + + @Autowired + public TableController(DatabaseService databaseService) { + this.databaseService = databaseService; + } + + @GetMapping("/table") + @ApiOperation(value = "List all database tables") + public ResponseEntity<List<TableBriefDto>> findAll(@RequestParam String id) { + return null; + } + + @PostMapping("/table") + @ApiOperation(value = "Creates a new database table", notes = "Creates a new database table in a container") + public ResponseEntity create(@RequestParam String id, @RequestBody DatabaseCreateDto dto) { +// LOGGER.debug("creating new database"); +// boolean succeed = service.createDatabase(dto); +// if (succeed) { +// return Response +// .status(Response.Status.CREATED) +// .entity("Database container successfully created and started!") +// .type(MediaType.APPLICATION_JSON) +// .build(); +// } +// return Response +// .status(Response.Status.INTERNAL_SERVER_ERROR) +// .type(MediaType.APPLICATION_JSON) +// .build(); + return ResponseEntity.status(HttpStatus.CREATED) + .build(); + } + + @GetMapping("/table/{tid}") + @ApiOperation(value = "Get all informations about a database table") + public ResponseEntity<TableDto> findById(@RequestParam String id, @RequestParam String tid) { + return null; + } + + @PutMapping("/table/{tid}") + @ApiOperation(value = "Change the state of a database table") + public ResponseEntity<?> modify(@RequestParam String id, @RequestParam String tid, @RequestBody DatabaseChangeDto changeDto) { + return ResponseEntity.status(HttpStatus.ACCEPTED) + .build(); + } + + @DeleteMapping("/table/{tid}") + @ApiOperation(value = "Delete a database table") + public ResponseEntity delete(@RequestParam String id, @RequestParam String tid) { + return ResponseEntity.status(HttpStatus.OK) + .build(); + } + +} diff --git a/fda-database-managing-service/services/pom.xml b/fda-database-managing-service/services/pom.xml index 932e1c4e09..4a4429affe 100644 --- a/fda-database-managing-service/services/pom.xml +++ b/fda-database-managing-service/services/pom.xml @@ -10,20 +10,20 @@ </parent> <artifactId>services</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <name>fda-database-managing-service-services</name> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>gateways</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> <dependency> <groupId>at.tuwien</groupId> <artifactId>api</artifactId> - <version>${global.version}</version> + <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> diff --git a/fda-database-managing-service/services/src/main/java/at/tuwien/entity/Auditable.java b/fda-database-managing-service/services/src/main/java/at/tuwien/entity/Auditable.java new file mode 100644 index 0000000000..db1840b0f3 --- /dev/null +++ b/fda-database-managing-service/services/src/main/java/at/tuwien/entity/Auditable.java @@ -0,0 +1,37 @@ +package at.tuwien.entity; + +import lombok.*; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.time.Instant; + +@EqualsAndHashCode(onlyExplicitlyIncluded = true) +@ToString(onlyExplicitlyIncluded = true) +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public abstract class Auditable { + + @Id + @EqualsAndHashCode.Include + @ToString.Include + @GeneratedValue(generator = "sequence-per-entity") + @GenericGenerator( + name = "sequence-per-entity", + strategy = "enhanced-sequence", + parameters = @Parameter(name = "prefer_sequence_per_entity", value = "true") + ) + private Long id; + + @Column(nullable = false, updatable = false) + @CreatedDate + private Instant created; + + @Column + @LastModifiedDate + private Instant lastModified; +} \ No newline at end of file diff --git a/fda-database-managing-service/services/src/main/java/at/tuwien/entity/Database.java b/fda-database-managing-service/services/src/main/java/at/tuwien/entity/Database.java new file mode 100644 index 0000000000..065825050f --- /dev/null +++ b/fda-database-managing-service/services/src/main/java/at/tuwien/entity/Database.java @@ -0,0 +1,34 @@ +package at.tuwien.entity; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import java.util.List; + +@Entity +@Data +@EqualsAndHashCode(callSuper = true, onlyExplicitlyIncluded = true) +@ToString(callSuper = true, onlyExplicitlyIncluded = true) +public class Database extends Auditable { + + @Column(nullable = false) + private String containerId; + + @Column(nullable = false) + private String name; + + @Column(nullable = false) + private Boolean isPublic; + + @OneToOne + private View view; + + @OneToMany + private List<Table> tables; + +} diff --git a/fda-database-managing-service/services/src/main/java/at/tuwien/entity/Table.java b/fda-database-managing-service/services/src/main/java/at/tuwien/entity/Table.java new file mode 100644 index 0000000000..713b170236 --- /dev/null +++ b/fda-database-managing-service/services/src/main/java/at/tuwien/entity/Table.java @@ -0,0 +1,22 @@ +package at.tuwien.entity; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import java.util.List; + +@Entity +@Data +@EqualsAndHashCode(callSuper = true, onlyExplicitlyIncluded = true) +@ToString(callSuper = true, onlyExplicitlyIncluded = true) +public class Table extends Auditable { + + @OneToOne + private Database database; + +} diff --git a/fda-database-managing-service/services/src/main/java/at/tuwien/entity/View.java b/fda-database-managing-service/services/src/main/java/at/tuwien/entity/View.java new file mode 100644 index 0000000000..fc9a313977 --- /dev/null +++ b/fda-database-managing-service/services/src/main/java/at/tuwien/entity/View.java @@ -0,0 +1,24 @@ +package at.tuwien.entity; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.OneToMany; +import java.util.List; + +@Entity +@Data +@EqualsAndHashCode(callSuper = true, onlyExplicitlyIncluded = true) +@ToString(callSuper = true, onlyExplicitlyIncluded = true) +public class View extends Auditable { + + @Column + private String name; + + @OneToMany + private List<Database> databases; + +} diff --git a/fda-database-managing-service/services/src/main/java/at/tuwien/repository/DatabaseRepository.java b/fda-database-managing-service/services/src/main/java/at/tuwien/repository/DatabaseRepository.java new file mode 100644 index 0000000000..917cf3f68f --- /dev/null +++ b/fda-database-managing-service/services/src/main/java/at/tuwien/repository/DatabaseRepository.java @@ -0,0 +1,7 @@ +package at.tuwien.repository; + +import at.tuwien.entity.Database; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface DatabaseRepository extends JpaRepository<Database, Long> { +} diff --git a/fda-database-managing-service/services/src/main/java/at/tuwien/service/DatabaseService.java b/fda-database-managing-service/services/src/main/java/at/tuwien/service/DatabaseService.java index 2a781ddf0f..bd836421d8 100644 --- a/fda-database-managing-service/services/src/main/java/at/tuwien/service/DatabaseService.java +++ b/fda-database-managing-service/services/src/main/java/at/tuwien/service/DatabaseService.java @@ -1,7 +1,7 @@ package at.tuwien.service; import at.tuwien.clients.FdaContainerManagingClient; -import at.tuwien.dto.CreateDatabaseDTO; +import at.tuwien.dto.database.DatabaseCreateDto; import at.tuwien.model.Database; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,7 +18,7 @@ public class DatabaseService { this.client = client; } - public boolean createDatabase(CreateDatabaseDTO dto) { + public boolean createDatabase(DatabaseCreateDto dto) { return client.createDatabaseContainer(dto); } -- GitLab