feat(notice): 예약 공개 모델과 신규 컬럼을 추가한다
This commit is contained in:
@@ -0,0 +1,9 @@
|
|||||||
|
-- 수동 배포용 additive schema이며 운영 DB에서 자동 실행하지 않는다.
|
||||||
|
-- 서버/JDBC/DB UTC 확인 후 schema를 먼저 적용하고, 공개 필터가 포함된 앱으로 모든 reader를 교체한다.
|
||||||
|
-- 이전 reader가 하나라도 남아 있으면 예약 공지를 노출하므로 전체 교체 전에는 예약 쓰기/admin 사용을 금지한다.
|
||||||
|
-- 기존 row는 NULL/FALSE를 유지하며 created_at 변경이나 backfill을 수행하지 않는다.
|
||||||
|
ALTER TABLE service_notice
|
||||||
|
ADD COLUMN publish_at TIMESTAMP NULL DEFAULT NULL COMMENT '예약 공개 시각(UTC)';
|
||||||
|
|
||||||
|
ALTER TABLE service_notice
|
||||||
|
ADD COLUMN is_scheduled BOOLEAN NOT NULL DEFAULT FALSE COMMENT '예약 공개 여부';
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package kr.co.vividnext.sodalive.notice
|
package kr.co.vividnext.sodalive.notice
|
||||||
|
|
||||||
import kr.co.vividnext.sodalive.common.BaseEntity
|
import kr.co.vividnext.sodalive.common.BaseEntity
|
||||||
|
import java.time.LocalDateTime
|
||||||
import javax.persistence.Column
|
import javax.persistence.Column
|
||||||
import javax.persistence.Entity
|
import javax.persistence.Entity
|
||||||
|
|
||||||
@@ -11,5 +12,9 @@ data class ServiceNotice(
|
|||||||
@Column(columnDefinition = "TEXT", nullable = false)
|
@Column(columnDefinition = "TEXT", nullable = false)
|
||||||
var content: String,
|
var content: String,
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
var isActive: Boolean = true
|
var isActive: Boolean = true,
|
||||||
|
@Column(columnDefinition = "TIMESTAMP", nullable = true)
|
||||||
|
var publishAt: LocalDateTime? = null,
|
||||||
|
@Column(nullable = false)
|
||||||
|
var isScheduled: Boolean = false
|
||||||
) : BaseEntity()
|
) : BaseEntity()
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package kr.co.vividnext.sodalive.notice
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
|
import org.junit.jupiter.api.Assertions.assertNull
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
|
class ServiceNoticeTest {
|
||||||
|
@Test
|
||||||
|
@DisplayName("기존 엔티티 생성은 활성·즉시 공개 기본값과 미지정 등록 시각을 유지한다")
|
||||||
|
fun shouldDefaultToImmediateActiveNotice() {
|
||||||
|
val notice = ServiceNotice("공지", "본문")
|
||||||
|
|
||||||
|
assertEquals(true, notice.isActive)
|
||||||
|
assertEquals(false, notice.isScheduled)
|
||||||
|
assertNull(notice.publishAt)
|
||||||
|
assertNull(notice.createdAt)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user