[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개의 댓글