buildStr method

  1. @override
String buildStr(
  1. QueryBuilder queryBuilder
)
override

Implementation

@override
String buildStr(QueryBuilder queryBuilder) {
  if (mWheres.isEmpty) {
    return '';
  }

  final sb = StringBuffer();
  var length = mWheres.length;

  for (var i = 0; i < length; i++) {
    var whereNode = mWheres[i];
    var str = '';

    switch (whereNode.type) {
      case WhereType.simple:
        var left = ' ${whereNode.text} ';
        if (left.contains('?')) {
          left = left.replaceAll('?', '${whereNode.param}');
          //Validator.formatValue(whereNode.param, mOptions)
        }
        str += left;
        //str += ' ${whereNode.operator} ';
        break;
      case WhereType.safe:
        str += ' ${whereNode.text} ';
        str += ' ${whereNode.operator} ';
        var substitutionValue = _getSubstitutionValue(whereNode.text);
        str += ' @$substitutionValue ';
        break;
      case WhereType.openGroup:
        str += ' ( ';
        break;
      case WhereType.closeGroup:
        str += ' ) ';
        break;
      case WhereType.raw:
        str += ' ${whereNode.text}';
        break;
    }
    /* if (i + 1 < length) {
      if (mWheres[i + 1].type == WhereType.group &&
          mWheres[i + 1].text.contains('(')) {
        // str += ' ${mWheres[i + 1].andOr} ';
        //print('o proximo é grupo abre');
      } else if (mWheres[i + 1].type == WhereType.group &&
          mWheres[i + 1].text.contains(')')) {
        //print('o proximo é grupo fecha');
      } else if (mWheres[i].type != WhereType.group) {
        if (!mWheres[i + 1].text.contains(')')) {
          // str += ' ${whereNode.andOr} ';
          // print('o item atual não é grupo ${mWheres[i].text} ${mWheres[i + 1].text}');
        }
      } else if (mWheres[i].type == WhereType.group &&
          mWheres[i].text.contains(')') &&
          mWheres[i + 1].type != WhereType.group) {
        //str += ' ${whereNode.andOr} ';
      }
    }*/

    if (i + 1 < length) {
      //se o proximo for abre grupo
      if (mWheres[i + 1].type == WhereType.openGroup) {
        str += ' ${mWheres[i + 1].andOr}   ';
      } else if (mWheres[i].type == WhereType.closeGroup) {
        str += ' ${mWheres[i + 1].andOr}   ';
      } else if (mWheres[i].type == WhereType.openGroup) {
        str += ' ';
      } else if (mWheres[i + 1].type == WhereType.closeGroup) {
        str += ' ';
      } else {
        str += ' ${mWheres[i + 1].andOr}  ';
      }
    }

    /*if (i + 1 < length &&
        whereNode.type != WhereType.group &&
        mWheres[i + 1].type != WhereType.group) {
      str += ' ${whereNode.andOr}  ';
      //print('mWheres[i].type == WhereType.raw): ${whereNode.andOr} ');
    }*/

    sb.write(str);
  }
  var result = 'WHERE $sb';
  //print('WhereBlock result: $result');
  return result;
}