package dto

type DataTableRequest struct {
	Draw             int                     `json:"draw" binding:"required"`
	Start            int                     `json:"start"`
	Length           int                     `json:"length"`
	Search           DatatableSearchCriteria `json:"search"`
	Order            []DatatableOrderQuery   `json:"order"`
	Columns          []DatatableColumnConfig `json:"columns"`
	AdditionalFilter map[string]interface{}  `json:"additional_filter"`
}
type DatatableOrderQuery struct {
	Column string `json:"column"` // Indeks kolom yang di-sort (dimulai dari 0)
	Dir    string `json:"dir"`    // Arah sorting: "asc" atau "desc"
}
type DatatableSearchCriteria struct {
	Value string `json:"value"`
}

type DatatableColumnConfig struct {
	Data       string                  `json:"data"`       // Nama properti data (contoh: "name")
	Searchable bool                    `json:"searchable"` // Apakah kolom ini bisa dicari
	Orderable  bool                    `json:"orderable"`  // Apakah kolom ini bisa di-sort
	Search     DatatableSearchCriteria `json:"search"`     // Pencarian spesifik khusus untuk kolom ini saja
}

type DataTableResponse struct {
	Draw            int                      `json:"draw"`
	RecordsTotal    int64                    `json:"recordsTotal"`
	RecordsFiltered int64                    `json:"recordsFiltered"`
	Data            []map[string]interface{} `json:"data"`
}

type DataTableColDef struct {
	Field     string                                                          `json:"field"`
	Alias     string                                                          `json:"alias"`
	Formatter func(row map[string]interface{}, value interface{}) interface{} `json:"formatter"`
}
