Skip to content

Commit ce20843

Browse files
committed
KTL-4386: Added id to ScmRepoIssueEventRepository table
1 parent d949081 commit ce20843

3 files changed

Lines changed: 15 additions & 16 deletions

File tree

app/src/main/resources/db/migration/2026-Q2/2026-04-24_oss_health_metric.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ databaseChangeLog:
1212
- createTable:
1313
tableName: scm_repo_issue_or_pr
1414
columns:
15+
- column:
16+
name: id
17+
type: SERIAL
18+
constraints:
19+
nullable: false
20+
primaryKey: true
1521
- column:
1622
name: scm_repo_id
1723
type: INT
@@ -45,10 +51,10 @@ databaseChangeLog:
4551
- column:
4652
name: duration_days
4753
type: INT
48-
- addPrimaryKey:
54+
- addUniqueConstraint:
4955
tableName: scm_repo_issue_or_pr
5056
columnNames: scm_repo_id, gh_number
51-
constraintName: pk_scm_repo_issue_or_pr
57+
constraintName: uq_scm_repo_issue_or_pr_repo_number
5258

5359
- changeSet:
5460
id: index scm_repo_issue_or_pr on repo/type/closed

core/scm-repository/src/main/kotlin/io/klibs/core/scm/repository/health/entity/ScmRepoIssueOrPrEntity.kt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,20 @@ import jakarta.persistence.Column
55
import jakarta.persistence.Entity
66
import jakarta.persistence.EnumType
77
import jakarta.persistence.Enumerated
8+
import jakarta.persistence.GeneratedValue
9+
import jakarta.persistence.GenerationType
810
import jakarta.persistence.Id
9-
import jakarta.persistence.IdClass
1011
import jakarta.persistence.Table
1112
import java.time.Instant
1213

1314
@Entity
1415
@Table(name = "scm_repo_issue_or_pr")
15-
@IdClass(ScmRepoIssueOrPrKey::class)
1616
class ScmRepoIssueOrPrEntity(
1717
@Id
18+
@GeneratedValue(strategy = GenerationType.IDENTITY)
19+
@Column(name = "id")
20+
val id: Int? = null,
21+
1822
@Column(name = "scm_repo_id")
1923
val scmRepoId: Int,
2024

@@ -23,7 +27,6 @@ class ScmRepoIssueOrPrEntity(
2327
* Combined with [scmRepoId], this is the upsert dedup key — re-fetching the
2428
* same item updates in place rather than inserting a duplicate row.
2529
*/
26-
@Id
2730
@Column(name = "gh_number")
2831
val ghNumber: Int,
2932

@@ -47,12 +50,3 @@ class ScmRepoIssueOrPrEntity(
4750
@Column(name = "duration_days")
4851
val durationDays: Int?,
4952
)
50-
51-
/**
52-
* Composite identifier for [ScmRepoIssueOrPrEntity]. Nullable defaults satisfy JPA's
53-
* no-arg requirement for @IdClass; same shape as [io.klibs.core.project.entity.MarkerKey].
54-
*/
55-
data class ScmRepoIssueOrPrKey(
56-
val scmRepoId: Int? = null,
57-
val ghNumber: Int? = null,
58-
)

core/scm-repository/src/main/kotlin/io/klibs/core/scm/repository/health/repository/ScmRepoIssueOrPrRepository.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.klibs.core.scm.repository.health.repository
22

33
import io.klibs.core.scm.repository.health.entity.ScmRepoIssueOrPrEntity
4-
import io.klibs.core.scm.repository.health.entity.ScmRepoIssueOrPrKey
54
import io.klibs.core.scm.repository.health.enums.ScmRepoIssueOrPrType
65
import org.springframework.data.jpa.repository.JpaRepository
76
import org.springframework.data.jpa.repository.Modifying
@@ -10,7 +9,7 @@ import org.springframework.data.repository.query.Param
109
import org.springframework.transaction.annotation.Transactional
1110
import java.time.Instant
1211

13-
interface ScmRepoIssueOrPrRepository : JpaRepository<ScmRepoIssueOrPrEntity, ScmRepoIssueOrPrKey> {
12+
interface ScmRepoIssueOrPrRepository : JpaRepository<ScmRepoIssueOrPrEntity, Int> {
1413

1514
@Modifying
1615
@Transactional

0 commit comments

Comments
 (0)