summaryrefslogtreecommitdiff
path: root/gradle
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-10-26 16:19:55 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-04-04 12:48:04 +0200
commitf0c472b1792779e63fdeb97a470b46300de00050 (patch)
tree99646cf4448f4f73c2c98ede338df19a1497f9b5 /gradle
parent8f958c5a578dc11b890c96c0dc48e3e3f92a4d07 (diff)
feat(web/api): Initial API implementation in Kotlin
This change adds the initial implementation of the new API server in Kotlin, replacing the old API written in Python. The implementation uses Quarkus, RESTEasy, and Hibernate to implement the new API endpoints. The reason for replacing the old API server is unifying the build and deployment toolchains, reducing the number of technologies necessary to work with OpenDC. Furthermore, we envision bundling the entire OpenDC project into a single distributions, allowing users to launch their own deployment trivially.
Diffstat (limited to 'gradle')
-rw-r--r--gradle/libs.versions.toml27
1 files changed, 27 insertions, 0 deletions
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 4c52627d..8967b8eb 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -24,6 +24,9 @@ opentelemetry-metrics = "1.11.0-alpha"
opentelemetry-semconv = "1.11.0-alpha"
parquet = "1.12.2"
progressbar = "0.9.2"
+quarkus = "2.7.5.Final"
+quarkus-hibernate-types = "0.2.0"
+quarkus-junit5-mockk = "0.3.0"
sentry = "5.5.2"
shadow = "7.1.2"
slf4j = "1.7.32"
@@ -69,6 +72,30 @@ jackson-dataformat-csv = { module = "com.fasterxml.jackson.dataformat:jackson-da
parquet = { module = "org.apache.parquet:parquet-avro", version.ref = "parquet" }
config = { module = "com.typesafe:config", version.ref = "config" }
+# Quarkus
+quarkus-gradle = { module = "io.quarkus:gradle-application-plugin", version.ref = "quarkus" }
+quarkus-bom = { module = "io.quarkus:quarkus-bom", version.ref = "quarkus" }
+quarkus-kotlin = { module = "io.quarkus:quarkus-kotlin" }
+quarkus-resteasy-core = { module = "io.quarkus:quarkus-resteasy" }
+quarkus-resteasy-jackson = { module = "io.quarkus:quarkus-resteasy-jackson" }
+quarkus-smallrye-openapi = { module = "io.quarkus:quarkus-smallrye-openapi" }
+quarkus-security = { module = "io.quarkus:quarkus-security" }
+quarkus-oidc = { module = "io.quarkus:quarkus-oidc" }
+quarkus-hibernate-orm = { module = "io.quarkus:quarkus-hibernate-orm" }
+quarkus-hibernate-validator = { module = "io.quarkus:quarkus-hibernate-validator" }
+quarkus-hibernate-types = { module = "io.quarkiverse.hibernatetypes:quarkus-hibernate-types", version.ref = "quarkus-hibernate-types" }
+quarkus-jdbc-h2 = { module = "io.quarkus:quarkus-jdbc-h2" }
+quarkus-jdbc-postgresql = { module = "io.quarkus:quarkus-jdbc-postgresql" }
+quarkus-flyway = { module = "io.quarkus:quarkus-flyway" }
+
+# Quarkus (Testing)
+quarkus-junit5-core = { module = "io.quarkus:quarkus-junit5" }
+quarkus-junit5-mockk = { module = "io.quarkiverse.mockk:quarkus-junit5-mockk", version.ref = "quarkus-junit5-mockk" }
+quarkus-jacoco = { module = "io.quarkus:quarkus-jacoco" }
+quarkus-test-security = { module = "io.quarkus:quarkus-test-security" }
+restassured-core = { module = "io.rest-assured:rest-assured" }
+restassured-kotlin = { module = "io.rest-assured:kotlin-extensions" }
+
# HTTP client
ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" }
ktor-client-auth = { module = "io.ktor:ktor-client-auth", version.ref = "ktor" }