Skip to content

Commit

Permalink
feat: InvitationInformation api, controller, facade, dto 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
1winhyun committed Jan 15, 2025
1 parent 37763de commit d01ff7d
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package site.yourevents.invitationinformation.entity

import jakarta.persistence.CascadeType
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.GeneratedValue
Expand All @@ -18,7 +19,7 @@ class InvitationInformationEntity(
@GeneratedValue(strategy = GenerationType.UUID)
val id: UUID? = null,

@ManyToOne
@ManyToOne(cascade = [CascadeType.PERSIST])
@JoinColumn(name = "invitation_id", nullable = false)
val invitation: InvitationEntity,

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ data class CreateOwnerNicknameResponse(
val nickname: String,
val attendance: Boolean = true
) {
companion object{
companion object {
fun of(ownerNickname: Guest): CreateOwnerNicknameResponse =
CreateOwnerNicknameResponse(
guestId = ownerNickname.getId()!!,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package site.yourevents.invitationinformation.api

import io.swagger.v3.oas.annotations.Operation
import org.springframework.security.core.annotation.AuthenticationPrincipal
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import site.yourevents.invitation.dto.request.CreateInvitationRequest
import site.yourevents.invitationinformation.dto.request.CreateInvitationInformationRequest
import site.yourevents.invitationinformation.dto.response.CreateInvitationInformationResponse
import site.yourevents.principal.AuthDetails
import site.yourevents.response.ApiResponse

interface InvitationInformationApi {
@Operation(summary = "초대장 상세정보 입력")
@PostMapping("/invitation/information")
fun createInvitationInformation(
@RequestBody createInvitationInformationRequest: CreateInvitationInformationRequest,
): ApiResponse<CreateInvitationInformationResponse>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package site.yourevents.invitationinformation.api

import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RestController
import site.yourevents.invitation.dto.request.CreateInvitationRequest
import site.yourevents.invitationinformation.dto.request.CreateInvitationInformationRequest
import site.yourevents.invitationinformation.dto.response.CreateInvitationInformationResponse
import site.yourevents.invitationinformation.facade.InvitationInformationFacade
import site.yourevents.response.ApiResponse
import site.yourevents.type.SuccessCode

@RestController
class InvitationInformationController(
private val invitationInformationFacade: InvitationInformationFacade
) : InvitationInformationApi {
override fun createInvitationInformation(
@RequestBody createInvitationInformationRequest: CreateInvitationInformationRequest
): ApiResponse<CreateInvitationInformationResponse> = ApiResponse.success(
SuccessCode.REQUEST_OK,invitationInformationFacade.createInvitationInformation(createInvitationInformationRequest)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package site.yourevents.invitationinformation.dto.request

import java.time.LocalDateTime
import java.util.UUID

data class CreateInvitationInformationRequest(
val invitationId: UUID,
val title: String,
val schedule: LocalDateTime,
val location: String,
val remark: String
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package site.yourevents.invitationinformation.dto.response

import site.yourevents.invitationinformation.domain.InvitationInformation
import java.time.LocalDateTime
import java.util.UUID

data class CreateInvitationInformationResponse(
val informationId: UUID,
val invitationId: UUID,
val title: String,
val schedule: LocalDateTime,
val location: String,
val remark: String
) {
companion object {
fun of(invitationInformation: InvitationInformation): CreateInvitationInformationResponse =
CreateInvitationInformationResponse(
informationId = invitationInformation.getId()!!,
invitationId = invitationInformation.getInvitation().id!!,
title = invitationInformation.getTitle(),
schedule = invitationInformation.getSchedule(),
location = invitationInformation.getLocation(),
remark = invitationInformation.getRemark()
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package site.yourevents.invitationinformation.facade

import jakarta.transaction.Transactional
import org.springframework.stereotype.Service
import site.yourevents.invitationinformation.dto.request.CreateInvitationInformationRequest
import site.yourevents.invitationinformation.dto.response.CreateInvitationInformationResponse
import site.yourevents.invitationinformation.port.`in`.InvitationInformationUseCase
import site.yourevents.principal.AuthDetails

@Service
@Transactional
class InvitationInformationFacade(
private val invitationInformationUseCase: InvitationInformationUseCase
) {
fun createInvitationInformation(
createInvitationInformationRequest: CreateInvitationInformationRequest,
): CreateInvitationInformationResponse = CreateInvitationInformationResponse.of(
invitationInformationUseCase.createInvitationInformation(
invitationId = createInvitationInformationRequest.invitationId,
title = createInvitationInformationRequest.title,
schedule = createInvitationInformationRequest.schedule,
location = createInvitationInformationRequest.location,
remark = createInvitationInformationRequest.remark
)
)
}

0 comments on commit d01ff7d

Please sign in to comment.