RESTForge

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" }
    ]
}
PropertyTipeWajibKeterangan
sort_columnsarrayTidakArray berisi satu atau lebih aturan pengurutan
columnstringYaNama kolom, harus terdaftar di fieldName payload
directionstringTidak"ASC" atau "DESC". Default: "ASC"

Aturan Validasi (Validation Rules)

AturanPerilaku
Kolom tidak terdaftar di fieldNameDiabaikan secara diam-diam (silent skip), bukan error
Direction tidak valid atau tidak dikirimDefault ke "ASC"
Array kosong atau tidak dikirimPengurutan menggunakan default (primary key ASC)
Seluruh item tidak validFallback ke pengurutan default
Multi-kolomDidukung, item pertama = prioritas tertinggi

Contoh Dasar (Basic Examples)

Satu kolom ascending:

POST /api/mini-inventory/item-product/read
{
    "page": 1,
    "per_page": 20,
    "sort_columns": [
        { "column": "product_name", "direction": "ASC" }
    ]
}

Satu kolom descending (data terbaru duluan):

POST /api/mini-inventory/stock-inbound/datatables
{
    "draw": 1,
    "start": 0,
    "length": 10,
    "sort_columns": [
        { "column": "inbound_date", "direction": "DESC" }
    ]
}

Multi-kolom (kategori lalu harga):

POST /api/mini-inventory/item-product/read
{
    "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.

POST /api/mini-inventory/item-product/datatables
{
    "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.

POST /api/mini-inventory/supplier/read
{
    "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.

POST /api/mini-inventory/item-product/export
{
    "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.).

POST /api/mini-inventory/item-product/aggregate
{
    "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.

POST /api/mini-inventory/supplier/lookup
{
    "search": "jakarta",
    "sort_columns": [
        { "column": "supplier_code", "direction": "ASC" }
    ]
}

Perilaku Default per Endpoint (Default Behavior)

Jika sort_columns tidak dikirim atau array kosong:

EndpointDefault Sort
/datatablesPrimary key ASC
/readPrimary key ASC
/exportTanpa ORDER BY (urutan alami database)
/aggregateTanpa ORDER BY (urutan alami database)
/lookupKolom 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)

On this page