buildWithClause method
String
buildWithClause(
)
inherited
Implementation
@protected
String buildWithClause() {
if (_ctes.isEmpty) return '';
int currentHashCode = _calculateCteHashCode();
if (_config.enableCaching && !_cache.needsUpdate(currentHashCode)) {
return _cache.cachedWithClause ?? '';
}
validateAllCtes();
List<String> cteStrings = [];
bool hasRecursive = _ctes.any((cte) => cte.isRecursive);
_escapingStrategy = StandardEscapingStrategy(_config.quoteChar);
for (var cte in _ctes) {
cteStrings.add(cte.toSql(_escapingStrategy, _config));
}
String withClause = hasRecursive ? 'WITH RECURSIVE ' : 'WITH ';
withClause += cteStrings.join(', ');
if (_config.enableCaching) {
Map<String, dynamic> bindings = _calculateCteBindings();
_cache.updateCache(withClause, bindings, currentHashCode);
}
return withClause;
}