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