toSql method

String toSql({
  1. bool isFirst = false,
  2. bool isCount = false,
})

isFirst used to add or replace limit 1 offset 0 in query string

Implementation

String toSql({bool isFirst = false, bool isCount = false}) {
  final results = <String?>[];
  for (var block in mBlocks!) {
    results.add(block.buildStr(this));
  }
  var result = Util.joinNonEmpty(mOptions.separator, results);

  if (isFirst) {
    //LIMIT.*?(?=\)|$) Regex for
    final idx = result.lastIndexOf(RegExp(r'LIMIT', caseSensitive: false));
    if (idx != -1) {
      result = result.substring(0, idx - 1);
    }
    final idx2 = result.lastIndexOf(RegExp(r'OFFSET', caseSensitive: false));
    if (idx2 != -1) {
      result = result.substring(0, idx2 - 1);
    }
    result = '$result LIMIT 1 OFFSET 0';
  }

  if (isCount) {
    //result.replaceFirst(from, to)
    //print('antes:\r\n $result');
    final fromIdx = result.indexOf(RegExp(r'FROM', caseSensitive: false));
    if (fromIdx != -1) {
      result = result.substring(fromIdx, result.length);
      result = 'SELECT COUNT(*) as total_records $result';
    }
    // print('depois:\r\n $result');
  }

  return result;
}