fix(subtitle): S3 컬럼명을 기존 스키마와 일치시킨다
This commit is contained in:
+2
-2
@@ -17,9 +17,9 @@ class Subtitle(
|
|||||||
val language: String,
|
val language: String,
|
||||||
@Column(nullable = false, length = 16)
|
@Column(nullable = false, length = 16)
|
||||||
val format: String,
|
val format: String,
|
||||||
@Column(nullable = false, length = 255)
|
@Column(name = "s3_bucket", nullable = false, length = 255)
|
||||||
val s3Bucket: String,
|
val s3Bucket: String,
|
||||||
@Column(nullable = false, length = 255)
|
@Column(name = "s3_key", nullable = false, length = 255)
|
||||||
val s3Key: String
|
val s3Key: String
|
||||||
) {
|
) {
|
||||||
@Id
|
@Id
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
package kr.co.vividnext.sodalive.v2.subtitle
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.v2.subtitle.adapter.persistence.Subtitle
|
||||||
|
import org.hibernate.boot.MetadataSources
|
||||||
|
import org.hibernate.boot.registry.StandardServiceRegistryBuilder
|
||||||
|
import org.hibernate.cfg.AvailableSettings
|
||||||
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
|
import org.junit.jupiter.api.Assertions.assertTrue
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties
|
||||||
|
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings
|
||||||
|
import java.sql.DriverManager
|
||||||
|
import java.util.UUID
|
||||||
|
|
||||||
|
class SubtitleSchemaValidationTest {
|
||||||
|
@Test
|
||||||
|
@DisplayName("기존 DDL의 s3_bucket과 s3_key를 실제 Hibernate validate 및 저장 조회에 사용한다")
|
||||||
|
fun shouldValidateAndUseExistingS3Columns() {
|
||||||
|
val url = "jdbc:h2:mem:subtitle-schema-${UUID.randomUUID()};MODE=MySQL"
|
||||||
|
DriverManager.getConnection(url, "sa", "").use { connection ->
|
||||||
|
connection.createStatement().use {
|
||||||
|
it.execute(
|
||||||
|
"""
|
||||||
|
CREATE TABLE subtitle (
|
||||||
|
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||||
|
job_id VARCHAR(36) NOT NULL,
|
||||||
|
language VARCHAR(35) NOT NULL,
|
||||||
|
format VARCHAR(16) NOT NULL,
|
||||||
|
s3_bucket VARCHAR(255) NOT NULL,
|
||||||
|
s3_key VARCHAR(255) NOT NULL,
|
||||||
|
UNIQUE (job_id, language)
|
||||||
|
)
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
val bootProperties = HibernateProperties().determineHibernateProperties(emptyMap(), HibernateSettings())
|
||||||
|
val registry = StandardServiceRegistryBuilder()
|
||||||
|
.applySettings(bootProperties)
|
||||||
|
.applySetting(AvailableSettings.DRIVER, "org.h2.Driver")
|
||||||
|
.applySetting(AvailableSettings.URL, url)
|
||||||
|
.applySetting(AvailableSettings.USER, "sa")
|
||||||
|
.applySetting(AvailableSettings.PASS, "")
|
||||||
|
.applySetting(AvailableSettings.DIALECT, "org.hibernate.dialect.H2Dialect")
|
||||||
|
.applySetting(AvailableSettings.HBM2DDL_AUTO, "validate")
|
||||||
|
.build()
|
||||||
|
try {
|
||||||
|
MetadataSources(registry).addAnnotatedClass(Subtitle::class.java)
|
||||||
|
.buildMetadata().buildSessionFactory().use { factory ->
|
||||||
|
val id = factory.openSession().use { session ->
|
||||||
|
val transaction = session.beginTransaction()
|
||||||
|
val subtitle = Subtitle(
|
||||||
|
jobId = "550e8400-e29b-41d4-a716-446655440000",
|
||||||
|
language = "ko-KR",
|
||||||
|
format = "SRT",
|
||||||
|
s3Bucket = "subtitle-media",
|
||||||
|
s3Key = "subtitles/100/550e8400-e29b-41d4-a716-446655440000/ko.srt"
|
||||||
|
)
|
||||||
|
session.persist(subtitle)
|
||||||
|
transaction.commit()
|
||||||
|
requireNotNull(subtitle.id)
|
||||||
|
}
|
||||||
|
factory.openSession().use { session ->
|
||||||
|
val stored = session.find(Subtitle::class.java, id)
|
||||||
|
assertEquals("subtitle-media", stored.s3Bucket)
|
||||||
|
assertEquals("subtitles/100/550e8400-e29b-41d4-a716-446655440000/ko.srt", stored.s3Key)
|
||||||
|
}
|
||||||
|
connection.prepareStatement("SELECT s3_bucket, s3_key FROM subtitle WHERE id = ?").use {
|
||||||
|
it.setLong(1, id)
|
||||||
|
it.executeQuery().use { result ->
|
||||||
|
assertTrue(result.next())
|
||||||
|
assertEquals("subtitle-media", result.getString("s3_bucket"))
|
||||||
|
assertEquals(
|
||||||
|
"subtitles/100/550e8400-e29b-41d4-a716-446655440000/ko.srt",
|
||||||
|
result.getString("s3_key")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
StandardServiceRegistryBuilder.destroy(registry)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user