Study
Vapor

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.

Editor Latihan

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.