Ecto Query Dasar
Penjelasan
Ecto menyediakan Ecto.Query, sebuah DSL mirip SQL tapi ditulis dalam sintaks Elixir, memakai macro from beserta operator seperti where, order_by, select, dan limit. Query yang sudah disusun dieksekusi lewat fungsi Repo seperti Repo.all/1 untuk mengambil banyak baris, Repo.one/1 untuk satu baris, atau Repo.get/2 untuk mengambil berdasarkan primary key. Karena query adalah data biasa (bukan string SQL), kita bisa menyusunnya secara bertahap dengan pipe operator, menambahkan kondisi where sesuai kebutuhan sebelum akhirnya dieksekusi. Ini membuat query composable dan mudah dites tanpa harus menyentuh database sungguhan untuk memeriksa struktur query.
Contoh Konsep
import Ecto.Query
# Query dasar: ambil semua produk dengan harga di atas 100000, urut dari termahal
query =
from p in TokoApp.Catalog.Produk,
where: p.harga > 100000,
order_by: [desc: p.harga],
select: p
TokoApp.Repo.all(query)
# Mengambil satu produk berdasarkan id
TokoApp.Repo.get(TokoApp.Catalog.Produk, 1)
Praktikum
Tulis query untuk mengambil semua artikel yang judulnya mengandung kata 'Elixir', diurutkan berdasarkan judul menaik.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Gunakan ilike alih-alih like ketika ingin pencarian teks yang tidak case-sensitive di PostgreSQL.