convertOrderBy method

Map<String, dynamic> convertOrderBy(
  1. Map<String, dynamic> input
)

Implementation

Map<String, dynamic> convertOrderBy(Map<String, dynamic> input) {
  // Estrai columnId e mode
  if (input['columnId'] == null || input['columnId'].toString().isEmpty) {
    return {};
  }

  String columnId = input['columnId']!;
  String mode = input['mode'] == 'DESC' ? 'desc' : 'asc';

  // Dividi columnId in base ai ':'
  List<String> parts = columnId.split(':');
  Map<String, dynamic> orderBy = {};

  if (parts.length == 1) {
    // Campo diretto del modello
    orderBy[columnId] = mode;
  } else {
    // Nidificazione delle relazioni
    Map<String, dynamic> currentLevel = orderBy;

    for (int i = 0; i < parts.length; i++) {
      if (i == parts.length - 1) {
        // Ultimo elemento, aggiungi mode
        currentLevel[parts[i]] = mode;
      } else {
        // Crea un nuovo livello di nidificazione
        currentLevel[parts[i]] = <String, dynamic>{};
        currentLevel = currentLevel[parts[i]] as Map<String, dynamic>;
      }
    }
  }

  return orderBy;
}