[Vapor/Swift] 인코딩 및 디코딩을 위한 모델 타입 작성하기

Ryan (Geonhee) Son·2021년 7월 6일
0

이번에는 작성한 모델 타입을 통해 어떠한 방식으로 모델 타입을 작성할 수 있는지를 알아보겠습니다.

아래는 프로젝트 관리에 사용되는 아이템을 표현하는 타입으로 아직 Data Transfer Object (DTO)가 적용되지 않은 형태를 가져왔습니다. 클라이언트측과 협의하여 필드값들을 결정했지만, 이전 글에서 다루었듯이 deadlineDate의 경우 soft-delete를 지원할 수 있도록 @Timestamp로 정의하여도 되고, id를 사용자 정의해서 사용하실 수도 있습니다. 더 복잡한 내용을 담기 위해서 @Group을 통해 구조체를 저장할 수도 있고, progress와 같이 상태가 특정 케이스로 분류가 가능한 경우 @Enum을 이용해 필드를 정의할 수도 있습니다. 이전 글에서 기본적인 지식을 쌓고 오셔서 간단한 구조임을 한 눈에 파악하실 수 있으실 거라 생각합니다.

import Fluent
import Vapor

final class ProjectItem: Model, Content {
    static let schema = "projectItems"
    
    @ID(key: .id)
    var id: UUID?
    
    @Field(key: "title")
    var title: String
    
    @Field(key: "content")
    var content: String
    
    @Field(key: "deadlineDate")
    var deadlineDate: Date
    
    @Field(key: "progress")
    var progress: String

    @Field(key: "index")
    var index: Int

    init() { }

    init(id: UUID? = nil, title: String, content: String, deadlineDate: Date, progress: String, index: Int) {
        self.id = id
        self.title = title
        self.content = content
        self.deadlineDate = deadlineDate
        self.progress = progress
        self.index = index
    }
}

다음에는 모델 타입을 담아줄 DB를 구성하는 내용을 다루어 보겠습니다. 먼저 Local 환경에서 구성하는 방법을 다루고 이후에 배포 서버에서 구성하는 방법을 알아볼 것입니다!

profile
합리적인 해법 찾기를 좋아합니다.

0개의 댓글

관련 채용 정보