google firebase
와 AWS
, 그리고 처음부터 모든 걸 해야 하는 Vapor
가 있었다.Vapor
로 고작 로그인 정도 구현해 본 이 필자라는 놈은 Vapor
를 활용해서 서버-DB-배포까지 이어지는 프로세스를 모두 해보겠다고 까불기 시작했고, 결국 iOS 앱을 위한 Vapor
서버를 담당하게 된다.vapor new {projectName}
명령어로 템플릿 생성
필자는 PostgreSQL
과 Fluent
ORM Framework를 쓸거라서 위와 같이 템플릿 생성
원래 다른 의존성 패키지를 추가하지 않았을 때는 Todo
가 없었던 것 같은데 DB랑 ORM 패키지 추가로 뭔가가 생겼다.
템플릿으로 만들어진 파일이 제공해주는 Todo
예시 파일에 모델 구조가 어떻게 되어 있는지 엿볼 수 있다.
Fluent
가 의존성 추가되어 있는 덕분에 아래의 모델 데이터를 바탕으로 편하게 PostgreSQL
과 소통할 수 있다.
import Fluent
import Vapor
// Model 프로토콜을 채택해서 새로운 모델을 만들 수 있다.
final class Todo: Model, Content {
// 정적상수 스키마로 테이블과 콜렉션을 지정해 줄 수 있다.
// 대체로 snake_case로 작성한다.
static let schema = "todos"
@ID(key: .id)
var id: UUID?
@Field(key: "title")
var title: String
init() { }
init(id: UUID? = nil, title: String) {
self.id = id
self.title = title
}
}
PostgreSQL
을 찾아봤다.brew
로 PostgreSQL@14
를 설치하고 나서 연결하려 하니 이상한 에러가 나왔다.~ 221211