Mapstruct

This commit is contained in:
pgrondek 2020-07-24 02:02:00 +02:00
parent 6c567ffa59
commit 09e8ed0503
10 changed files with 80 additions and 35 deletions

View File

@ -1,7 +1,16 @@
val mapstructVersion: String by project
plugins {
kotlin("kapt")
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-webflux")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation(project(":model"))
implementation(project(":ports-incoming"))
implementation("org.mapstruct:mapstruct:$mapstructVersion")
kapt("org.mapstruct:mapstruct-processor:$mapstructVersion")
}

View File

@ -0,0 +1,10 @@
package pl.grondek.fitapp.adapter.rest
import org.mapstruct.Mapper
import pl.grondek.fitapp.model.Weight
@Mapper(componentModel = "spring")
interface RestMapper {
fun map(domain: Weight): WeightApiModel
}

View File

@ -0,0 +1,9 @@
package pl.grondek.fitapp.adapter.rest
import java.math.BigDecimal
import java.time.LocalDateTime
data class WeightApiModel(
val weight: BigDecimal,
val date: LocalDateTime
)

View File

@ -14,12 +14,14 @@ import reactor.core.publisher.Mono
@RestController
@RequestMapping("/weight")
class WeightController(
private val weightService: WeightService
private val weightService: WeightService,
private val mapper: RestMapper
) {
@GetMapping
fun listAll(): Flux<Weight>{
fun listAll(): Flux<WeightApiModel>{
return weightService.listAll()
.map(mapper::map)
}
@PostMapping

View File

@ -1,8 +1,16 @@
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
val mapstructVersion: String by project
plugins {
kotlin("kapt")
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-mongodb-reactive")
implementation("org.mapstruct:mapstruct:$mapstructVersion")
kapt("org.mapstruct:mapstruct-processor:$mapstructVersion")
implementation(project(":model"))
implementation(project(":ports-repository"))
}

View File

@ -0,0 +1,16 @@
package pl.grondek.fitapp.adapter.mongo
import org.mapstruct.Mapper
import org.mapstruct.Mapping
import org.springframework.stereotype.Component
import pl.grondek.fitapp.model.CreateWeightDTO
import pl.grondek.fitapp.model.Weight
import reactor.core.publisher.Mono
@Mapper(componentModel = "spring")
interface MongoMapper {
@Mapping(target = "id", ignore = true)
fun map(createWeightDTO: CreateWeightDTO): WeightRO
fun map(weightRO: WeightRO): Weight
}

View File

@ -1,24 +0,0 @@
package pl.grondek.fitapp.adapter.mongo
import org.springframework.stereotype.Component
import pl.grondek.fitapp.model.CreateWeightDTO
import pl.grondek.fitapp.model.Weight
import reactor.core.publisher.Mono
@Component
class WeightMapper {
fun map(createWeightDTO: CreateWeightDTO): WeightRO {
return WeightRO(
id = null,
weight = createWeightDTO.weight,
date = createWeightDTO.date
)
}
fun map(weightRO: WeightRO): Weight {
return Weight(
weight = weightRO.weight,
date = weightRO.date
)
}
}

View File

@ -10,7 +10,7 @@ import reactor.core.publisher.Mono
@Component
class WeightMongoRepository(
private val weightCrudRepository: WeightCrudRepository,
private val mapper: WeightMapper
private val mapper: MongoMapper
) : WeightRepository {
override fun add(createWeightDTO: CreateWeightDTO): Mono<Weight> {

View File

@ -4,6 +4,7 @@ plugins {
id("org.springframework.boot") version "2.3.1.RELEASE"
id("io.spring.dependency-management") version "1.0.9.RELEASE"
kotlin("jvm") version "1.3.72"
kotlin("kapt") version "1.3.72"
kotlin("plugin.spring") version "1.3.72"
}
@ -32,6 +33,16 @@ allprojects {
dependencies{
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf(
"-Xjsr305=strict"
)
jvmTarget = "1.8"
javaParameters = true
}
}
}
dependencies {
@ -54,9 +65,12 @@ tasks.withType<Test> {
useJUnitPlatform()
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
//tasks.withType<KotlinCompile> {
// kotlinOptions {
// freeCompilerArgs = listOf(
// "-Xjsr305=strict",
// )
// jvmTarget = "1.8"
// javaParameters = true
// }
//}

1
gradle.properties Normal file
View File

@ -0,0 +1 @@
mapstructVersion=1.4.0.Beta3