Fluent Model
Penjelasan
Fluent adalah ORM (Object-Relational Mapper) resmi Vapor yang bekerja di atas berbagai driver database (PostgreSQL, MySQL, SQLite, dsb) dengan API yang sama. Model didefinisikan sebagai final class yang conform ke protocol Model (dari Fluent) dan biasanya juga Content (supaya bisa langsung dipakai sebagai response API). Setiap Model wajib punya static var schema (nama tabel) dan property @ID untuk primary key. Property biasa dideklarasikan dengan property wrapper @Field(key:) yang memetakan nama property Swift ke nama kolom database. Field opsional (boleh NULL) memakai @OptionalField(key:). Karena Model adalah class (bukan struct), Fluent bisa melacak perubahan pada instance yang sama untuk keperluan save/update.
Contoh Konsep
import Fluent
import Vapor
final class Catatan: Model, Content {
static let schema = "catatan"
@ID(key: .id)
var id: UUID?
@Field(key: "judul")
var judul: String
@Field(key: "isi")
var isi: String
init() { }
init(id: UUID? = nil, judul: String, isi: String) {
self.id = id
self.judul = judul
self.isi = isi
}
}
Praktikum
Buat final class Pengguna: Model, Content dengan schema "pengguna", @ID(key: .id) var id, @Field(key: "nama") var nama: String, dan @Field(key: "email") var email: String, lengkap dengan init() kosong dan init(id:nama:email:).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Model wajib punya init() tanpa parameter (dipakai internal oleh Fluent saat query hasil dari database), selain init dengan parameter yang biasa kamu pakai manual di kode.