recordQuery method

void recordQuery(
  1. String connectionId,
  2. String sql,
  3. Duration executionTime
)

Implementation

void recordQuery(String connectionId, String sql, Duration executionTime) {
  final metrics = QueryMetrics(
    sql: sql,
    executionTime: executionTime,
    timestamp: DateTime.now(),
  );

  _queryMetrics.putIfAbsent(connectionId, () => []).add(metrics);

  // Check for slow queries
  if (executionTime > slowQueryThreshold) {
    _alertController.add(
      DatabaseAlert(
        type: AlertType.slowQuery,
        message: 'Slow query detected',
        details: {
          'sql': sql,
          'execution_time': executionTime.inMilliseconds,
          'threshold': slowQueryThreshold.inMilliseconds,
        },
      ),
    );
  }

  if (_queryMetrics[connectionId]!.length > 1000) {
    _queryMetrics[connectionId]!.removeAt(0);
  }
}