Как указано в заголовке, я не смог вставить или обновить записи в моей базе данных Postgres. Я только начал работать с пружиной и kotlin, так что может быть какая-то довольно базовая конфигурация c, которой она не хватает. Заранее спасибо
Вот моя база кода
UserRepository
@Repository
interface UserRepository : ReactiveCrudRepository<User, Int> {}
Модель пользователя @Table ("user_app" )
data class User (
@Id
@Column("id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
val id : Int? = null,
@Column("username")
val username : String?,
@Column("email")
val email : String?,
@Column("name")
val name : String?,
@Column("password")
val password : String?
)
UserController @ Component
class UserController{
@Autowired
private lateinit var userRepository : UserRepository
fun getAllUsers() : Flux<User> = userRepository.findAll()
fun getUserById( userId: Int) : Mono<User> = userRepository.findById(userId)
fun createUser(user: User): Mono<User> = userRepository.save(user)
fun updateUser(user: User) : Mono<User> = userRepository.save(user)
}
UserConfiguration
@Configuration
class UserConfiguration {
@FlowPreview
@Bean
fun userRouter(controller: UserController): RouterFunction<ServerResponse> = router{
("/users").nest{
GET("") { _ ->
ServerResponse.ok().body(controller.getAllUsers())
}
GET("/{id}") { req ->
ServerResponse.ok().body(controller.getUserById(req.pathVariable("id").toInt()))
}
accept(MediaType.APPLICATION_JSON)
POST("") {req ->
ServerResponse.ok().body(req.bodyToMono(User::class.java).doOnNext { user ->
controller.createUser(user) })
}
accept(MediaType.APPLICATION_JSON)
PUT("") {req ->
ServerResponse.ok().body(req.bodyToMono(User::class.java).doOnNext { user ->
run {
controller.updateUser(user)
}
})
}
}
}
}
R2dbcConfiguration
@Configuration
@EnableR2dbcRepositories
class R2dbcConfiguration : AbstractR2dbcConfiguration() {
@Bean
override fun connectionFactory(): PostgresqlConnectionFactory {
val config = PostgresqlConnectionConfiguration.builder()
.host("localhost")
.port(5432)
.database("postgres")
.username("postgres")
.password("pass123")
.build()
return PostgresqlConnectionFactory(config)
}
}