Skip to content

Commit c4a7a3c

Browse files
authored
Support Springdoc (#5)
- added two endpoints + springdoc dependencies
1 parent c6807b0 commit c4a7a3c

File tree

9 files changed

+64
-46
lines changed

9 files changed

+64
-46
lines changed

backend/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ kotlin {
1212
dependencies {
1313
// implementation("org.springframework.boot:spring-boot-starter-data-jpa")
1414
implementation("org.springframework.boot:spring-boot-starter-webflux")
15+
implementation("io.projectreactor.kotlin:reactor-kotlin-extensions")
16+
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json")
1517
}
1618
}
1719
}

backend/src/jvmMain/kotlin/com/saveourtool/template/backend/BackendController.kt

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.saveourtool.template.backend.controller
2+
3+
import com.saveourtool.template.backend.model.Request
4+
import org.springframework.web.bind.annotation.GetMapping
5+
import org.springframework.web.bind.annotation.PostMapping
6+
import org.springframework.web.bind.annotation.RequestBody
7+
import org.springframework.web.bind.annotation.RequestMapping
8+
import org.springframework.web.bind.annotation.RestController
9+
import reactor.core.publisher.Flux
10+
import reactor.core.publisher.Mono
11+
import reactor.kotlin.core.publisher.toFlux
12+
13+
/**
14+
* @since 2024-02-26
15+
*/
16+
@RestController
17+
@RequestMapping("/requests")
18+
class BackendController {
19+
private val requests = mutableListOf<Request>()
20+
21+
/**
22+
* @param request a new [Request]
23+
*/
24+
@PostMapping("/new")
25+
fun newEntity(
26+
@RequestBody request: Mono<Request>,
27+
): Mono<Unit> = request.map { requests.add(it) }
28+
29+
/**
30+
* @return all [Request]s
31+
*/
32+
@GetMapping("/all")
33+
fun getAllEntities(): Flux<Request> = requests.toFlux()
34+
}

backend/src/jvmMain/kotlin/com/saveourtool/template/backend/model/Artifact.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.saveourtool.template.backend.model
2+
3+
import kotlinx.serialization.Serializable
4+
5+
/**
6+
* @since 2024-03-11
7+
*/
8+
@Serializable
9+
data class Request(
10+
val id: Long,
11+
val name: String,
12+
val operation: String,
13+
)

backend/src/jvmMain/kotlin/com/saveourtool/template/backend/model/UpstreamRegistry.kt

Lines changed: 0 additions & 13 deletions
This file was deleted.

gradle/libs.versions.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@ java = "21"
33
kotlin = "1.9.22"
44
spring-boot = "3.2.2"
55
spring-dependency-management-plugin = "1.1.4"
6+
springdoc = "2.3.0"
67

78
[plugins]
89

910
[libraries]
1011
kotlin-spring-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-allopen", version.ref = "kotlin" }
1112
kotlin-jpa-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-noarg", version.ref = "kotlin" }
1213
kotlin-multiplatform-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
14+
kotlin-serialization-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" }
1315
spring-boot-gradle-plugin = { module = "org.springframework.boot:spring-boot-gradle-plugin", version.ref = "spring-boot" }
1416
spring-dependency-management-gradle-plugin = { module = "io.spring.gradle:dependency-management-plugin", version.ref = "spring-dependency-management-plugin" }
17+
springdoc-openapi-starter-common = { module = "org.springdoc:springdoc-openapi-starter-common", version.ref = "springdoc" }
18+
springdoc-openapi-starter-webflux-ui = { module = "org.springdoc:springdoc-openapi-starter-webflux-ui", version.ref = "springdoc" }

gradle/plugins/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ dependencies {
1111
// workaround https://github.com/gradle/gradle/issues/15383
1212
implementation(files(project.libs.javaClass.superclass.protectionDomain.codeSource.location))
1313
implementation(libs.kotlin.multiplatform.gradle.plugin)
14+
implementation(libs.kotlin.serialization.gradle.plugin)
1415
implementation(libs.kotlin.spring.gradle.plugin)
1516
implementation(libs.kotlin.jpa.gradle.plugin)
1617
implementation(libs.spring.boot.gradle.plugin)

gradle/plugins/src/main/kotlin/com/saveourtool/template/build/spring-boot-kotlin-configuration.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ plugins {
99
kotlin("multiplatform")
1010
kotlin("plugin.spring")
1111
kotlin("plugin.jpa")
12+
kotlin("plugin.serialization")
1213
id("org.springframework.boot")
1314
id("io.spring.dependency-management")
1415
}
@@ -25,6 +26,15 @@ kotlin {
2526
jvmToolchain {
2627
this.languageVersion.set(JavaLanguageVersion.of(javaVersion.majorVersion))
2728
}
29+
30+
sourceSets {
31+
jvmMain {
32+
dependencies {
33+
implementation(libs.springdoc.openapi.starter.common)
34+
implementation(libs.springdoc.openapi.starter.webflux.ui)
35+
}
36+
}
37+
}
2838
}
2939

3040
tasks.withType<KotlinCompile> {

0 commit comments

Comments
 (0)