override fun update()

in core/scm-repository/src/main/kotlin/io/klibs/core/scm/repository/ScmRepositoryRepositoryJdbc.kt [99:146]


    override fun update(entity: ScmRepositoryEntity): ScmRepositoryEntity {
        val sql = """
            UPDATE scm_repo  
            SET 
                id_native        = :idGh,
                description      = :description,
                default_branch   = :defaultBranch,
                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
            WHERE lower(name) = lower(:name) AND owner_id = :ownerId
            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"
        }
    }