From a788381eaa1c4890822e925c811ceb44af0b7113 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Sun, 18 Jan 2026 01:39:52 +0100 Subject: [PATCH] add first comic endpoints to kontor-quarkus --- kontor-quarkus/build.gradle.kts | 7 ++++-- .../kotlin/de/thpeetz/KontorApplication.kt | 8 ------ .../de/thpeetz/kontor/KontorApplication.kt | 14 +++++++++++ .../de/thpeetz/kontor/comics/domain/Comic.kt | 25 +++++++++++++++++++ .../kontor/comics/resource/ComicsResource.kt | 22 ++++++++++++++++ .../src/main/resources/application.properties | 16 ++++++++++++ 6 files changed, 82 insertions(+), 10 deletions(-) delete mode 100644 kontor-quarkus/src/main/kotlin/de/thpeetz/KontorApplication.kt create mode 100644 kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/KontorApplication.kt create mode 100644 kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/comics/domain/Comic.kt create mode 100644 kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/comics/resource/ComicsResource.kt diff --git a/kontor-quarkus/build.gradle.kts b/kontor-quarkus/build.gradle.kts index a13a787..edd8ef4 100644 --- a/kontor-quarkus/build.gradle.kts +++ b/kontor-quarkus/build.gradle.kts @@ -14,8 +14,8 @@ val quarkusPlatformArtifactId: String by project val quarkusPlatformVersion: String by project dependencies { - implementation("io.quarkus:quarkus-container-image-docker") implementation(enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")) + implementation("io.quarkus:quarkus-container-image-docker") implementation("io.quarkus:quarkus-rest-jackson") implementation("io.quarkus:quarkus-kotlin") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") @@ -23,12 +23,15 @@ dependencies { implementation("io.quarkus:quarkus-rest") implementation("io.quarkus:quarkus-smallrye-openapi") implementation("io.quarkus:quarkus-smallrye-health") + implementation("io.quarkus:quarkus-hibernate-orm-panache-kotlin") + implementation("io.quarkus:quarkus-jdbc-h2") + implementation("io.quarkus:quarkus-jdbc-postgresql") testImplementation("io.quarkus:quarkus-junit5") testImplementation("io.rest-assured:rest-assured") } group = "de.thpeetz" -version = "1.0.0-SNAPSHOT" +version = "0.2.0-SNAPSHOT" java { sourceCompatibility = JavaVersion.VERSION_21 diff --git a/kontor-quarkus/src/main/kotlin/de/thpeetz/KontorApplication.kt b/kontor-quarkus/src/main/kotlin/de/thpeetz/KontorApplication.kt deleted file mode 100644 index 9fc7082..0000000 --- a/kontor-quarkus/src/main/kotlin/de/thpeetz/KontorApplication.kt +++ /dev/null @@ -1,8 +0,0 @@ -package de.thpeetz - -import org.eclipse.microprofile.openapi.annotations.OpenAPIDefinition -import org.eclipse.microprofile.openapi.annotations.info.Info -import jakarta.ws.rs.core.Application - -@OpenAPIDefinition(info = Info(title = "Kontor", version = "0.2.0")) -class KontorApplication: Application() diff --git a/kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/KontorApplication.kt b/kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/KontorApplication.kt new file mode 100644 index 0000000..f43d1c4 --- /dev/null +++ b/kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/KontorApplication.kt @@ -0,0 +1,14 @@ +package de.thpeetz.kontor + +import jakarta.ws.rs.core.Application +import org.eclipse.microprofile.openapi.annotations.OpenAPIDefinition +import org.eclipse.microprofile.openapi.annotations.info.Info +import org.eclipse.microprofile.openapi.annotations.tags.Tag + +@OpenAPIDefinition( + info = Info( + title = "Kontor", + version = "0.2.0" + ) +) +class KontorApplication: Application() \ No newline at end of file diff --git a/kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/comics/domain/Comic.kt b/kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/comics/domain/Comic.kt new file mode 100644 index 0000000..aa4d4fd --- /dev/null +++ b/kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/comics/domain/Comic.kt @@ -0,0 +1,25 @@ +package de.thpeetz.kontor.comics.domain + +import io.quarkus.hibernate.orm.panache.kotlin.PanacheEntityBase +import jakarta.persistence.Entity +import jakarta.persistence.Id +import jakarta.persistence.Table +import org.eclipse.microprofile.openapi.annotations.media.Schema +import java.time.LocalDate +import java.time.LocalDateTime +import kotlin.properties.Delegates + +@Entity +@Table(name = "comic") +class Comic: PanacheEntityBase { + @Id + lateinit var id: String + lateinit var createdDate: LocalDateTime + lateinit var lastModifiedDate: LocalDateTime + lateinit var version: Integer + lateinit var title: String + lateinit var webLink: String + var completed: Boolean = false + var currentOrder: Boolean = false + lateinit var publisherId: String +} diff --git a/kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/comics/resource/ComicsResource.kt b/kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/comics/resource/ComicsResource.kt new file mode 100644 index 0000000..bbdeed1 --- /dev/null +++ b/kontor-quarkus/src/main/kotlin/de/thpeetz/kontor/comics/resource/ComicsResource.kt @@ -0,0 +1,22 @@ +package de.thpeetz.kontor.comics.resource + +import de.thpeetz.kontor.comics.domain.Comic +import jakarta.ws.rs.GET +import jakarta.ws.rs.Path +import jakarta.ws.rs.PathParam +import jakarta.ws.rs.Produces +import jakarta.ws.rs.core.MediaType +import org.eclipse.microprofile.openapi.annotations.tags.Tag + +@Path("/api/comics/comics") +@Produces(MediaType.APPLICATION_JSON) +@Tag(name = "comics", description = "Comics") +class ComicsResource { + + @GET + fun findAll(): List = emptyList() + + @GET + @Path("/{id}") + fun findById(@PathParam("id") id: String): Comic? = null +} \ No newline at end of file diff --git a/kontor-quarkus/src/main/resources/application.properties b/kontor-quarkus/src/main/resources/application.properties index 2432db7..8dc7e15 100644 --- a/kontor-quarkus/src/main/resources/application.properties +++ b/kontor-quarkus/src/main/resources/application.properties @@ -1 +1,17 @@ quarkus.swagger-ui.always-include=true +quarkus.datasource.db-kind=postgresql +quarkus.datasource.username=kontor +quarkus.datasource.password=kontor +quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/kontor +# dev +%dev.quarkus.datasource.db-kind=h2 +%dev.quarkus.datasource.username=sa +%dev.quarkus.datasource.password=password +%dev.quarkus.datasource.jdbc.url=jdbc:h2:mem:testdb +%dev.quarkus.hibernate-orm.database.generation=update +# test +%test.quarkus.datasource.db-kind=h2 +%test.quarkus.datasource.username=sa +%test.quarkus.datasource.password=password +%test.quarkus.datasource.jdbc.url=jdbc:h2:mem:testdb +%test.quarkus.hibernate-orm.database.generation=update