diff --git a/README.md b/README.md index caadd4a9c6d27684898274a2291f7b612af97abf..b51e7f19075f6f478128a5e4588d358dd9185afa 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 91f5fdb5918c9c06b185044efb37c4c8cf1bbfc4..20bce4c2855a1146efb375c0f18408aa35b5652d 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 6487cae9e57e3182566f62c9e68258b17eac5af1..0cb1ad2abb71c633e33296b1f78a8f3283e18d33 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 8f358e49abe6da17b3ffe262b57ab17369c558ca..829b177a9007b33197b311230e920b4990682fca 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 e6ec3fb703b2e0bf9978ff8eb5841a5deccd6b58..8b06ed879a3de99856b1c0002d0e944c8cd57453 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 70ccec7ee9c0383d799c5329f1e4a24d4ce58b51..7262a64da21e141f5931b77be084febfbc9837e5 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 ab1af5623eac67e420c47d291ef9fa1125dfec96..a6133933e5565fde24a77463cb96b425508f9008 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 1d09d21b37aa3636ff91d9119556e20f74de8c9b..e3fbd72fce25ad0c1821f7079289927105b0a142 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 cb6f870caf22d167322fb4834a7bfa2e9860fbd5..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..d1a45515af6d3fe94bce7fd28d955958dbf4a743 --- /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 0000000000000000000000000000000000000000..475b428a92f6ff05cd72004a52228d0e41c0cea8 --- /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 0000000000000000000000000000000000000000..7f8efa62647aaa4adf13e2b25e0343be0ec41a32 --- /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 0000000000000000000000000000000000000000..0359f5786f9fc392b7820bb4107bccf8f264af97 --- /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 0000000000000000000000000000000000000000..a8fde192c74009a677ec5e4b3bc67d3d9261042e --- /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 0000000000000000000000000000000000000000..6b1ef254dbfd8ebb82836e0c52be4009d24bbd99 --- /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 0000000000000000000000000000000000000000..b75ae0f12dbaa382bc798f0564d625e25d8cb084 --- /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 0000000000000000000000000000000000000000..ffa09be7f28af89a58139d6a43bab2173af717bc --- /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 0000000000000000000000000000000000000000..21e355b238fd2647d5cefefb6df282d261ac4439 --- /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 0000000000000000000000000000000000000000..ec80607f836d7b7fc80c768fca9d80afa06d15eb --- /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 0000000000000000000000000000000000000000..b14f128a3e433f50a9434d7436221f6c9a279aed --- /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 0000000000000000000000000000000000000000..8a776c6fff087577b7ece6ea004bc7295ab9da27 --- /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 003e4d86808437d2c80cc032ab957daf96d56040..a1424937763c41c5db1a320469b4be6c8ff4d7fc 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 ba94a6fc7f7509a5d0835c9a4de253a21c2734a6..d5e4051ac0ed71283a9dd47e9d97ddc4e715565e 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 5c7d147aa244fd4ad0ca7413f4af9e58a73015e6..2e63b889d3f152786b469a8d7ba1aaeb93265c6e 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 b6d550946a9b1d46a9ff287143e564fc9403432f..fb89aa38b440a162b462c9d1ad66edb677813f02 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 39afb246102f25742819e54e4985e6f5137bad99..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..ba47aad845c8633516f97ee3f89019bf15d185c5 --- /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 0000000000000000000000000000000000000000..7a4349b9952b63f7b47dcf2c5670a45044446392 --- /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 932e1c4e09347b085eefcaa29e5866b2005af2cf..4a4429affe6e416ac95015652a25b26865d68145 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 0000000000000000000000000000000000000000..db1840b0f3d6ab45f941907f6c0610ce506757f4 --- /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 0000000000000000000000000000000000000000..065825050f32c16da6ae5b6707aad922ce29fc34 --- /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 0000000000000000000000000000000000000000..713b17023630ee69ef8e2839e389f19087fe3b81 --- /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 0000000000000000000000000000000000000000..fc9a313977f6e8419f84558dfb7b1af86936e7af --- /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 0000000000000000000000000000000000000000..917cf3f68fd743d79fb6b56dfd7ad050ba58f21c --- /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 2a781ddf0ff937d7a4b7846aa4c2584cc53d2204..bd836421d8c05421e9057ed635e3e22cede1fe37 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); }