in core/scm-repository/src/main/kotlin/io/klibs/core/scm/repository/ScmRepositoryRepositoryJdbc.kt [16:97]
override fun upsert(entity: ScmRepositoryEntity): ScmRepositoryEntity {
val sql = """
INSERT INTO scm_repo (id_native,
name,
description,
default_branch,
created_ts,
owner_id,
homepage,
has_gh_pages,
has_issues,
has_wiki,
has_readme,
license_key,
license_name,
stars,
open_issues,
last_activity_ts,
updated_at,
minimized_readme)
VALUES (:idGh,
:name,
:description,
:defaultBranch,
:createdTs,
:ownerId,
:homepage,
:hasGhPages,
:hasIssues,
:hasWiki,
:hasReadme,
:licenseKey,
:licenseName,
:stars,
:openIssues,
:lastActivityTs,
current_timestamp,
:minimizedReadme)
ON CONFLICT (id_native) DO UPDATE SET name = :name,
description = :description,
default_branch = :defaultBranch,
owner_id = :ownerId,
homepage = :homepage,
has_gh_pages = :hasGhPages,
has_issues = :hasIssues,
has_wiki = :hasWiki,
has_readme = :hasReadme,
license_key = :licenseKey,
license_name = :licenseName,
stars = :stars,
open_issues = :openIssues,
last_activity_ts = :lastActivityTs,
updated_at = current_timestamp,
minimized_readme = :minimizedReadme
RETURNING id;
""".trimIndent()
val id = jdbcClient.sql(sql)
.param("idGh", entity.nativeId)
.param("name", entity.name)
.param("description", entity.description)
.param("defaultBranch", entity.defaultBranch)
.param("createdTs", Timestamp.from(entity.createdTs))
.param("ownerId", entity.ownerId)
.param("homepage", entity.homepage)
.param("hasGhPages", entity.hasGhPages)
.param("hasIssues", entity.hasIssues)
.param("hasWiki", entity.hasWiki)
.param("hasReadme", entity.hasReadme)
.param("licenseKey", entity.licenseKey)
.param("licenseName", entity.licenseName)
.param("stars", entity.stars)
.param("openIssues", entity.openIssues)
.param("lastActivityTs", Timestamp.from(entity.lastActivityTs))
.param("minimizedReadme", entity.minimizedReadme)
.query(Int::class.java)
.single()
return requireNotNull(findById(id)) {
"Unable to find a freshly upserted scm repository"
}
}