Fluent Migration
Penjelasan
Migration adalah cara Fluent mengelola skema database secara terprogram dan bisa di-versionkan lewat kode (bukan lewat SQL manual). Setiap migration adalah struct yang conform ke protocol Migration, dengan dua method wajib: prepare(on:) untuk membuat perubahan skema (biasanya membuat tabel), dan revert(on:) untuk membatalkannya (dipakai saat rollback). Di dalam prepare, kamu memakai database.schema("nama_tabel") lalu memanggil .id() untuk primary key UUID otomatis, .field(...) untuk tiap kolom (dengan tipe dan constraint seperti .required), lalu .create() untuk mengeksekusinya. Setelah migration didefinisikan, daftarkan lewat app.migrations.add(...) di configure.swift, lalu jalankan lewat command line: swift run App migrate.
Contoh Konsep
import Fluent
struct CreateCatatan: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
database.schema("catatan")
.id()
.field("judul", .string, .required)
.field("isi", .string, .required)
.create()
}
func revert(on database: Database) -> EventLoopFuture<Void> {
database.schema("catatan").delete()
}
}
// Di configure.swift:
// app.migrations.add(CreateCatatan())
// Jalankan: swift run App migrate
Praktikum
Buat struct CreatePengguna: Migration dengan prepare membuat tabel "pengguna" berisi .id(), field "nama" (.string, .required), dan field "email" (.string, .required), serta revert yang menghapus tabel tersebut.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan mengubah migration yang sudah pernah dijalankan di production — buat migration BARU untuk perubahan skema tambahan (mis. AddPhoneToUser), supaya riwayat perubahan skema tetap konsisten di semua environment.