buildStr method
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;
}