728x90
Migration
Migration은 DB를 위한 버전관리 시스템이다. 생성과 되돌리기가 가능하다.
Migration 만들기
1️⃣ Migration 폴더에 Create<SchemaName>.swift와 같은 파일을 생성한다.
2️⃣ Migration 프로토콜을 채택하는 구조체를 만든다.
struct CreateMovie: Migration {
func prepare(on:) { }
func rever(on:) { }
}
3️⃣ prepare(on:) 메서드를 작성한다.
struct CreateMovie: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
return database.schema(Movie.schema)
.id()
.field("title", .string, .required)
.field("genre", .string, .required)
.field("actor", .string, .required)
.create()
}
func revert(on:) { }
}
prepare(on:) 메서드는 DB 스키마 변경(테이블, 필드, 제약 등을 추가 및 삭제), 데이터 수정(모델 인스턴스 생성, 필드 값 업데이트)와 같은 DB를 변화시키는 동작을 수행한다.
4️⃣ revert(on:) 메서드를 작성한다.
struct CreateMovie: Migration {
func prepare(on:) { }
func revert(on database: Database) -> EventLoopFuture<Void> {
return database.schema(Movie.schema).delete()
}
}
revert(on:) 메서드는 DB의 변화를 되돌리는 동작을 수행한다.
struct CreateMovie: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
return database.schema(Movie.schema)
.id()
.field("title", .string, .required)
.field("genre", .string, .required)
.field("actor", .string, .required)
.create()
}
func revert(on database: Database) -> EventLoopFuture<Void> {
return database.schema(Movie.schema).delete()
}
}
5️⃣ 등록(Register)하기
위의 과정을 모두 마치면 정상적으로 Migration을 생성한 것이다. 생성한 Migration을 이용하려면 앱을 구성하는 configure(_:) 함수에 Register 해야한다.
public func configure(_ app: Application) async throws {
...
app.migrations.add(CreateMovie())
...
try routes(app)
}
configure.swift파일로 이동하여 configure(_:) 함수에 Migration을 add한다.
Migrate하기
Migrate를 생성하는 사전 작업을 끝마치고 터미널에 아래의 명령어를 입력하여 Migrate한다.
vapor run migrate
확인해보면 movies 테이블이 잘 생성되어있다.
사전에 작성해 둔 내용도 잘 출력 된다.
Revert하기
Migrate 작업을 되돌리려면 터미널에 아래의 명령어를 입력하여 Revert한다.
vapor run migrate --revert
'iOS > Vapor' 카테고리의 다른 글
[Vapor/Databse] CRUD 기능 구현하기 (1) | 2023.10.21 |
---|---|
[Vapor/DataBase] Fluent 모델 (0) | 2023.10.19 |
[Vapor/Database] PostgreSQL 시작하기 (1) | 2023.10.18 |
[Vapor/Server] Fluent란? (0) | 2023.10.18 |
[Vapor/Server] Vapor 시작하기 (1) | 2023.10.16 |