Persistent Entity Definition
Penjelasan
Persistent adalah ORM bawaan ekosistem Yesod yang mendukung banyak backend database (SQLite, PostgreSQL, MySQL) dengan API yang sama. Entity didefinisikan bukan lewat kode Haskell biasa, melainkan lewat DSL deklaratif di file config/models (atau models.persistentmodels), yang kemudian oleh Template Haskell diubah menjadi tipe data Haskell, instance PersistEntity, dan tipe kunci (misalnya ProdukId) secara otomatis. Setiap baris field diikuti tipe datanya (Text, Int, Bool, UTCTime, dan seterusnya), dan field opsional ditandai dengan Maybe. Fitur seperti deriving Show Eq bisa ditambahkan agar entity mendukung operasi umum. Karena semuanya digenerasi saat compile, field yang salah nama atau tipe akan langsung terdeteksi kompiler, bukan saat runtime seperti banyak ORM dinamis lain.
Contoh Konsep
-- config/models
Produk
nama Text
harga Int
deskripsi Text Maybe
createdAt UTCTime default=now()
deriving Show Eq
User
email Text
password Text
UniqueEmail email
deriving Show Eq
Praktikum
Tambahkan definisi entity Artikel di config/models dengan field judul (Text), isi (Text), dan publishedAt (UTCTime, opsional).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Gunakan constraint Unique (mis. UniqueEmail email) langsung di definisi entity untuk menegakkan keunikan di level database, bukan hanya validasi di kode aplikasi.