Persistent Query Dasar
Penjelasan
Semua operasi database di Yesod dijalankan lewat runDB, yang menjalankan aksi Persistent di dalam koneksi database yang sudah dikonfigurasi. Fungsi dasar Persistent meliputi insert untuk menambah baris baru, get untuk mengambil satu baris berdasarkan id (mengembalikan Maybe), selectList untuk mengambil banyak baris dengan filter dan opsi urutan, update untuk mengubah field, dan delete untuk menghapus. Filter di selectList ditulis memakai operator khusus seperti ==. dan >. yang bekerja pada field entity (misalnya ProdukHarga >. 100000), dan opsi seperti Asc/Desc dipakai untuk urutan. Karena semua fungsi ini murni Haskell dengan tipe yang jelas, kesalahan seperti membandingkan field dengan tipe data yang salah akan tertangkap saat compile.
Contoh Konsep
-- Ambil semua produk dengan harga di atas 100000, urut termahal
produkMahal <- runDB $
selectList [ProdukHarga >. 100000] [Desc ProdukHarga]
-- Ambil satu produk berdasarkan id
mProduk <- runDB $ get produkId
-- Insert produk baru
produkId <- runDB $ insert $ Produk "Tas" 180000 Nothing
-- Update field harga
runDB $ update produkId [ProdukHarga =. 200000]
-- Hapus produk
runDB $ delete produkId
Praktikum
Tulis query untuk mengambil semua Artikel yang sudah dipublish (publishedAt bukan Nothing), diurutkan dari terbaru.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Gunakan get404 (bukan get biasa) di handler saat mengambil entity berdasarkan id dari parameter URL, supaya Maybe Nothing otomatis diubah menjadi response 404 tanpa case manual.