in core/scm-owner/src/main/java/io/klibs/core/owner/ScmOwnerRepositoryJdbc.kt [12:71]
override fun upsert(entity: ScmOwnerEntity): ScmOwnerEntity {
val sql = """
INSERT INTO scm_owner (login,
id_native,
type,
name,
description,
homepage,
twitter_handle,
email,
location,
company,
followers,
updated_at)
VALUES (:login,
:idGh,
:type,
:name,
:description,
:homepage,
:twitterHandle,
:email,
:location,
:company,
:followers,
current_timestamp)
ON CONFLICT (id_native) DO UPDATE
SET login = :login,
type = :type,
name = :name,
description = :description,
homepage = :homepage,
twitter_handle = :twitterHandle,
email = :email,
location = :location,
company = :company,
followers = :followers,
updated_at = current_timestamp
RETURNING id;
""".trimIndent()
val id = jdbcClient.sql(sql)
.param("idGh", entity.nativeId)
.param("login", entity.login)
.param("type", entity.type.serializableName)
.param("name", entity.name)
.param("description", entity.description)
.param("homepage", entity.homepage)
.param("twitterHandle", entity.twitterHandle)
.param("email", entity.email)
.param("location", entity.location)
.param("company", entity.company)
.param("followers", entity.followers)
.query(Int::class.java)
.single()
return requireNotNull(findById(id)) {
"Unable to find a freshly persisted scm owner"
}
}