addFilterQuery static method

String addFilterQuery(
  1. String query,
  2. String id,
  3. List<int?> list
)

Adiciona um filtro no lugar dos ??? na query de acordo com o id e a lista de ints especificada

Implementation

static String addFilterQuery(String query, String id, List<int?> list) {
  assert(query.contains('???'));
  if (list.isEmpty) {
    // Não usar lowerCase pq isso altera a query original, o que pode trazer problemas nos nomes das colunas
    if (query.contains('and ???') || query.contains('AND ???')) {
      return query.replaceAll('and ???', '').replaceAll('AND ???', '').trim();
    }
    if ((query.contains('where ???') && !query.contains('where ??? and ')) ||
        (query.contains('WHERE ???') && !query.contains('WHERE ??? AND '))) {
      return query
          .replaceAll('where ???', '')
          .replaceAll('WHERE ???', '')
          .trim();
    } else {
      return query
          .replaceAll('where ??? and ', 'where ')
          .replaceAll('WHERE ??? AND ', 'WHERE ')
          .replaceAll('???', '')
          .trim();
    }
  } else {
    String wheres = '$id NOT IN(' +
        list.where((element) => element != null).join(', ') +
        ')';
    return query.replaceAll(
        '???',
        ((!query.contains('where') && !query.contains('WHERE'))
                ? 'where '
                : '') +
            wheres);
  }
}