-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
merge: (#538) 외출 신청, 타입Entity setting + DB 구조 수정
- Loading branch information
Showing
11 changed files
with
292 additions
and
0 deletions.
There are no files selected for viewing
8 changes: 8 additions & 0 deletions
8
dms-core/src/main/kotlin/team/aliens/dms/domain/outing/exception/OutingNotFoundException.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package team.aliens.dms.domain.outing.exception | ||
|
||
import team.aliens.dms.common.error.DmsException | ||
import team.aliens.dms.domain.outing.exception.error.OutingErrorCode | ||
|
||
object OutingNotFoundException : DmsException( | ||
OutingErrorCode.OUTING_NOT_FOUND | ||
) |
18 changes: 18 additions & 0 deletions
18
dms-core/src/main/kotlin/team/aliens/dms/domain/outing/exception/error/OutingErrorCode.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package team.aliens.dms.domain.outing.exception.error | ||
|
||
import team.aliens.dms.common.error.ErrorProperty | ||
import team.aliens.dms.common.error.ErrorStatus | ||
|
||
enum class OutingErrorCode( | ||
private val status: Int, | ||
private val message: String, | ||
private val sequence: Int | ||
) : ErrorProperty { | ||
|
||
OUTING_NOT_FOUND(ErrorStatus.NOT_FOUND, "Outing Not Found", 1) | ||
; | ||
|
||
override fun status(): Int = status | ||
override fun message(): String = message | ||
override fun code(): String = "OUTING-$status-$sequence" | ||
} |
35 changes: 35 additions & 0 deletions
35
dms-core/src/main/kotlin/team/aliens/dms/domain/outing/model/OutingApplication.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package team.aliens.dms.domain.outing.model | ||
|
||
import team.aliens.dms.common.annotation.Aggregate | ||
import team.aliens.dms.common.model.SchoolIdDomain | ||
import java.time.LocalDate | ||
import java.time.LocalDateTime | ||
import java.time.LocalTime | ||
import java.util.UUID | ||
|
||
@Aggregate | ||
data class OutingApplication( | ||
|
||
val id: UUID = UUID(0, 0), | ||
|
||
val studentId: UUID, | ||
|
||
val createdAt: LocalDateTime, | ||
|
||
val outAt: LocalDate, | ||
|
||
val outingTime: LocalTime, | ||
|
||
val arrivalTime: LocalTime, | ||
|
||
val status: OutingStatus, | ||
|
||
val reason: String, | ||
|
||
val destination: String, | ||
|
||
val outingTypeTitle: String, | ||
|
||
override val schoolId: UUID | ||
|
||
) : SchoolIdDomain |
9 changes: 9 additions & 0 deletions
9
dms-core/src/main/kotlin/team/aliens/dms/domain/outing/model/OutingStatus.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package team.aliens.dms.domain.outing.model | ||
|
||
enum class OutingStatus{ | ||
REQUESTED, | ||
APPROVED, | ||
REJECTED, | ||
OUTING, | ||
DONE | ||
} |
14 changes: 14 additions & 0 deletions
14
dms-core/src/main/kotlin/team/aliens/dms/domain/outing/model/OutingType.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package team.aliens.dms.domain.outing.model | ||
|
||
import team.aliens.dms.common.annotation.Aggregate | ||
import team.aliens.dms.common.model.SchoolIdDomain | ||
import java.util.UUID | ||
|
||
@Aggregate | ||
data class OutingType( | ||
|
||
val title: String, | ||
|
||
override val schoolId: UUID | ||
|
||
) : SchoolIdDomain |
55 changes: 55 additions & 0 deletions
55
...e/src/main/kotlin/team/aliens/dms/persistence/outing/entity/OutingApplicationJpaEntity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
package team.aliens.dms.persistence.outing.entity | ||
|
||
import jakarta.persistence.Entity | ||
import team.aliens.dms.domain.outing.model.OutingStatus | ||
import team.aliens.dms.persistence.BaseEntity | ||
import team.aliens.dms.persistence.student.entity.StudentJpaEntity | ||
import jakarta.persistence.JoinColumn | ||
import jakarta.persistence.JoinColumns | ||
import java.util.UUID | ||
import jakarta.persistence.ManyToOne | ||
import jakarta.persistence.Table | ||
import java.time.LocalDate | ||
import java.time.LocalDateTime | ||
import java.time.LocalTime | ||
import jakarta.persistence.Column | ||
import jakarta.persistence.FetchType | ||
|
||
@Entity | ||
@Table(name = "tbl_outing_application") | ||
class OutingApplicationJpaEntity ( | ||
|
||
id: UUID?, | ||
|
||
@ManyToOne(fetch = FetchType.LAZY) | ||
@JoinColumn(name = "student_id", columnDefinition = "BINARY(16)", nullable = false) | ||
val student: StudentJpaEntity?, | ||
|
||
override val createdAt: LocalDateTime, | ||
|
||
@Column(columnDefinition = "DATE", nullable = false) | ||
val outAt: LocalDate, | ||
|
||
@Column(columnDefinition = "TIME", nullable = false) | ||
val outingTime: LocalTime, | ||
|
||
@Column(columnDefinition = "TIME", nullable = false) | ||
val arrivalTime: LocalTime, | ||
|
||
@Column(columnDefinition = "VARCHAR(9)", nullable = false) | ||
val status: OutingStatus, | ||
|
||
@Column(columnDefinition = "VARCHAR(100)", nullable = false) | ||
val reason: String, | ||
|
||
@Column(columnDefinition = "VARCHAR(15)", nullable = false) | ||
val destination: String, | ||
|
||
@ManyToOne(fetch = FetchType.LAZY) | ||
@JoinColumns( | ||
JoinColumn(name = "outing_type_title", referencedColumnName = "title", nullable = false), | ||
JoinColumn(name = "outing_type_school_id", referencedColumnName = "school_id", columnDefinition = "BINARY(16)", nullable = false), | ||
) | ||
val outingType: OutingTypeJpaEntity? | ||
|
||
) : BaseEntity(id) |
39 changes: 39 additions & 0 deletions
39
...sistence/src/main/kotlin/team/aliens/dms/persistence/outing/entity/OutingTypeJpaEntity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
package team.aliens.dms.persistence.outing.entity | ||
|
||
import team.aliens.dms.persistence.school.entity.SchoolJpaEntity | ||
import java.io.Serializable | ||
import java.util.UUID | ||
import jakarta.persistence.EmbeddedId | ||
import jakarta.persistence.Entity | ||
import jakarta.persistence.FetchType | ||
import jakarta.persistence.Table | ||
import jakarta.persistence.ManyToOne | ||
import jakarta.persistence.MapsId | ||
import jakarta.persistence.Column | ||
import jakarta.persistence.Embeddable | ||
import jakarta.persistence.JoinColumn | ||
|
||
@Entity | ||
@Table(name = "tbl_outing_type") | ||
class OutingTypeJpaEntity( | ||
|
||
@EmbeddedId | ||
val id: OutingTypeJpaEntityId, | ||
|
||
@MapsId("schoolId") | ||
@ManyToOne(fetch = FetchType.LAZY) | ||
@JoinColumn(name = "school_id", columnDefinition = "BINARY(16)", nullable = false) | ||
val school: SchoolJpaEntity?, | ||
|
||
) | ||
|
||
@Embeddable | ||
data class OutingTypeJpaEntityId( | ||
|
||
@Column(columnDefinition = "VARCHAR(20)" ,nullable = false) | ||
val title: String, | ||
|
||
@Column(nullable = false) | ||
val schoolId: UUID | ||
|
||
) : Serializable |
57 changes: 57 additions & 0 deletions
57
...ence/src/main/kotlin/team/aliens/dms/persistence/outing/mapper/OutingApplicationMapper.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
package team.aliens.dms.persistence.outing.mapper | ||
|
||
import org.springframework.data.repository.findByIdOrNull | ||
import org.springframework.stereotype.Component | ||
import team.aliens.dms.domain.outing.model.OutingApplication | ||
import team.aliens.dms.persistence.GenericMapper | ||
import team.aliens.dms.persistence.outing.entity.OutingApplicationJpaEntity | ||
import team.aliens.dms.persistence.outing.entity.OutingTypeJpaEntityId | ||
import team.aliens.dms.persistence.outing.repository.OutingTypeJpaRepository | ||
import team.aliens.dms.persistence.student.repository.StudentJpaRepository | ||
|
||
@Component | ||
class OutingApplicationMapper( | ||
private val outingTypeRepository: OutingTypeJpaRepository, | ||
private val studentRepository: StudentJpaRepository, | ||
) : GenericMapper<OutingApplication, OutingApplicationJpaEntity> { | ||
|
||
override fun toDomain(entity: OutingApplicationJpaEntity?): OutingApplication? { | ||
return entity?.let { | ||
OutingApplication( | ||
id = it.id!!, | ||
studentId = it.student!!.id!!, | ||
createdAt = it.createdAt, | ||
outAt = it.outAt, | ||
outingTime = it.outingTime, | ||
arrivalTime = it.arrivalTime, | ||
status = it.status, | ||
reason = it.reason, | ||
destination = it.destination, | ||
outingTypeTitle = it.outingType!!.id.title, | ||
schoolId = it.outingType!!.id.schoolId | ||
) | ||
} | ||
} | ||
|
||
override fun toEntity(domain: OutingApplication): OutingApplicationJpaEntity { | ||
val id = OutingTypeJpaEntityId( | ||
title = domain.outingTypeTitle, | ||
schoolId = domain.schoolId | ||
) | ||
val outingType = outingTypeRepository.findByIdOrNull(id) | ||
val student = studentRepository.findByIdOrNull(domain.studentId) | ||
|
||
return OutingApplicationJpaEntity( | ||
id = domain.id, | ||
student = student, | ||
createdAt = domain.createdAt, | ||
outAt = domain.outAt, | ||
outingTime = domain.outingTime, | ||
arrivalTime = domain.arrivalTime, | ||
status = domain.status, | ||
reason = domain.reason, | ||
destination = domain.destination, | ||
outingType = outingType | ||
) | ||
} | ||
} |
36 changes: 36 additions & 0 deletions
36
...persistence/src/main/kotlin/team/aliens/dms/persistence/outing/mapper/OutingTypeMapper.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package team.aliens.dms.persistence.outing.mapper | ||
|
||
import org.springframework.data.repository.findByIdOrNull | ||
import org.springframework.stereotype.Component | ||
import team.aliens.dms.domain.outing.model.OutingType | ||
import team.aliens.dms.persistence.GenericMapper | ||
import team.aliens.dms.persistence.outing.entity.OutingTypeJpaEntity | ||
import team.aliens.dms.persistence.outing.entity.OutingTypeJpaEntityId | ||
import team.aliens.dms.persistence.school.repository.SchoolJpaRepository | ||
|
||
@Component | ||
class OutingTypeMapper ( | ||
private val schoolRepository: SchoolJpaRepository | ||
) : GenericMapper<OutingType, OutingTypeJpaEntity> { | ||
|
||
override fun toDomain(entity: OutingTypeJpaEntity?): OutingType? { | ||
return entity?.let { | ||
OutingType( | ||
title = it.id.title, | ||
schoolId = it.id.schoolId | ||
) | ||
} | ||
} | ||
|
||
override fun toEntity(domain: OutingType): OutingTypeJpaEntity { | ||
val school = schoolRepository.findByIdOrNull(domain.schoolId) | ||
|
||
return OutingTypeJpaEntity( | ||
id = OutingTypeJpaEntityId( | ||
title = domain.title, | ||
schoolId = domain.schoolId | ||
), | ||
school = school | ||
) | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
...in/kotlin/team/aliens/dms/persistence/outing/repository/OutingApplicationJpaRepository.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package team.aliens.dms.persistence.outing.repository | ||
|
||
import org.springframework.data.repository.CrudRepository | ||
import org.springframework.stereotype.Repository | ||
import team.aliens.dms.persistence.outing.entity.OutingApplicationJpaEntity | ||
import team.aliens.dms.persistence.outing.entity.OutingTypeJpaEntityId | ||
import java.util.UUID | ||
|
||
@Repository | ||
interface OutingApplicationJpaRepository : CrudRepository<OutingApplicationJpaEntity, UUID> { | ||
} |
10 changes: 10 additions & 0 deletions
10
.../src/main/kotlin/team/aliens/dms/persistence/outing/repository/OutingTypeJpaRepository.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package team.aliens.dms.persistence.outing.repository | ||
|
||
import org.springframework.data.repository.CrudRepository | ||
import org.springframework.stereotype.Repository | ||
import team.aliens.dms.persistence.outing.entity.OutingTypeJpaEntity | ||
import team.aliens.dms.persistence.outing.entity.OutingTypeJpaEntityId | ||
|
||
@Repository | ||
interface OutingTypeJpaRepository : CrudRepository<OutingTypeJpaEntity, OutingTypeJpaEntityId> { | ||
} |