Sort Columns
Mekanisme sorting multi-kolom dengan kontrol arah dan prioritas
RESTForge menyediakan satu parameter universal untuk mengatur pengurutan data di seluruh endpoint: sort_columns. Parameter ini digunakan secara konsisten pada endpoint /datatables, /read, /export, /aggregate, dan /lookup.
Format Parameter (Parameter Format)
{
"sort_columns": [
{ "column": "nama_kolom", "direction": "ASC" }
]
}| Property | Tipe | Wajib | Keterangan |
|---|---|---|---|
sort_columns | array | Tidak | Array berisi satu atau lebih aturan pengurutan |
column | string | Ya | Nama kolom, harus terdaftar di fieldName payload |
direction | string | Tidak | "ASC" atau "DESC". Default: "ASC" |
Aturan Validasi (Validation Rules)
| Aturan | Perilaku |
|---|---|
Kolom tidak terdaftar di fieldName | Diabaikan secara diam-diam (silent skip), bukan error |
| Direction tidak valid atau tidak dikirim | Default ke "ASC" |
| Array kosong atau tidak dikirim | Pengurutan menggunakan default (primary key ASC) |
| Seluruh item tidak valid | Fallback ke pengurutan default |
| Multi-kolom | Didukung, item pertama = prioritas tertinggi |
Contoh Dasar (Basic Examples)
Satu kolom ascending:
{
"page": 1,
"per_page": 20,
"sort_columns": [
{ "column": "product_name", "direction": "ASC" }
]
}Satu kolom descending (data terbaru duluan):
{
"draw": 1,
"start": 0,
"length": 10,
"sort_columns": [
{ "column": "inbound_date", "direction": "DESC" }
]
}Multi-kolom (kategori lalu harga):
{
"page": 1,
"per_page": 25,
"sort_columns": [
{ "column": "category_name", "direction": "ASC" },
{ "column": "selling_price", "direction": "DESC" }
]
}SQL yang dihasilkan: ORDER BY category_name ASC, selling_price DESC
Direction tidak dikirim (default ASC):
{
"sort_columns": [
{ "column": "product_name" }
]
}Endpoint yang Didukung (Supported Endpoints)
/datatables
Digunakan oleh komponen tabel (DataTables, AG Grid, dll.) untuk menampilkan data dengan pagination.
{
"draw": 1,
"start": 0,
"length": 10,
"search": { "value": "laptop" },
"sort_columns": [
{ "column": "stock", "direction": "DESC" }
]
}Endpoint /datatables tetap mendukung format bawaan library DataTables.net (order[0][column], order[0][dir]) sebagai fallback. Jika sort_columns dan format DataTables dikirim bersamaan, sort_columns yang digunakan.
/read
Endpoint universal yang mendukung dua mode: pagination (dengan page) dan non-pagination.
{
"select": ["supplier_id", "supplier_name", "city"],
"where": [
{ "key": "is_active", "value": true }
],
"sort_columns": [
{ "column": "city", "direction": "ASC" },
{ "column": "supplier_name", "direction": "ASC" }
]
}/export
Export data ke file Excel dengan pengurutan tertentu.
{
"format": "xlsx",
"filename": "laporan-produk-aktif",
"where": [
{ "key": "is_active", "value": true }
],
"sort_columns": [
{ "column": "category_name", "direction": "ASC" },
{ "column": "product_code", "direction": "ASC" }
]
}/aggregate
Pengurutan pada hasil agregasi (COUNT, SUM, AVG, dll.).
{
"fields": [
{ "field": "category_name", "function": "COUNT", "alias": "jumlah_produk" }
],
"group_by": ["category_name"],
"sort_columns": [
{ "column": "jumlah_produk", "direction": "DESC" }
]
}/lookup
Data untuk dropdown/combobox dengan pengurutan kustom.
{
"search": "jakarta",
"sort_columns": [
{ "column": "supplier_code", "direction": "ASC" }
]
}Perilaku Default per Endpoint (Default Behavior)
Jika sort_columns tidak dikirim atau array kosong:
| Endpoint | Default Sort |
|---|---|
/datatables | Primary key ASC |
/read | Primary key ASC |
/export | Tanpa ORDER BY (urutan alami database) |
/aggregate | Tanpa ORDER BY (urutan alami database) |
/lookup | Kolom teks/nama ASC |
Skenario Umum (Common Scenarios)
Data Terbaru di Atas (Latest First)
Untuk tabel transaksi atau log aktivitas:
{
"sort_columns": [
{ "column": "created_at", "direction": "DESC" }
]
}Pengurutan Hierarkis (Hierarchical Sort)
Produk per kategori, kemudian harga tertinggi dalam kategori yang sama:
{
"sort_columns": [
{ "column": "category_name", "direction": "ASC" },
{ "column": "selling_price", "direction": "DESC" }
]
}Stok Menipis (Low Stock Alert)
Produk dengan stok paling sedikit tampil di baris pertama:
{
"sort_columns": [
{ "column": "stock", "direction": "ASC" }
]
}Export Laporan dengan Urutan Tertentu (Ordered Report Export)
Laporan Excel diurutkan berdasarkan tanggal transaksi terbaru, lalu nomor referensi:
{
"format": "xlsx",
"sort_columns": [
{ "column": "transaction_date", "direction": "DESC" },
{ "column": "reference_number", "direction": "ASC" }
]
}Langkah Selanjutnya (Next Steps)
- Query Builder untuk membangun query secara programatik
- Query Deklaratif untuk konfigurasi query di payload
- Read — List Data untuk pengambilan data dengan pagination
- Datatables untuk integrasi tabel server-side