discontinuedPackage connect_database has been discontinued.

interceptSelect method

Future<Result<String>> interceptSelect(
  1. String query
)

Implementation

Future<Result<String>> interceptSelect(String query) async {
  final trimmedQuery = query.trim();
  if (trimmedQuery.length < _CacheConstants.minQueryLength) {
    return Success(query);
  }

  try {
    final selectInfo = _parseSelect(trimmedQuery);
    if (selectInfo == null) {
      return Success(query);
    }

    final result = selectInfo.isSelectAll
        ? await _applyCastToAllColumns(
            selectInfo.tableName,
            selectInfo.restOfQuery,
            selectInfo.topClause,
          )
        : await _applyCastToColumns(
            selectInfo.columns,
            selectInfo.tableName,
            selectInfo.restOfQuery,
            selectInfo.topClause,
          );

    if (result.isSuccess()) {
      final interceptedQuery = result.getOrThrow();
      if (interceptedQuery.length > _CacheConstants.maxSqlLengthWarning) {
        debugPrint(
            'SqlSelectInterceptor: SQL gerado muito grande (${interceptedQuery.length} caracteres)');
      }
    }

    return result;
  } catch (e, stackTrace) {
    return Failure(
        Exception('Error intercepting SELECT: $e\nStack trace: $stackTrace'));
  }
}