recordTiming method

  1. @override
Future<void> recordTiming({
  1. required String name,
  2. required Duration duration,
  3. Map<String, String> attributes = const {},
})
override

Records a timing metric.

Use for measuring operation duration (e.g., query latency). Duration is automatically converted to milliseconds. Returns Future<void> to allow for async repository operations.

Implementation

@override
Future<void> recordTiming({
  required String name,
  required Duration duration,
  Map<String, String> attributes = const {},
}) async {
  if (name.isEmpty) {
    throw ArgumentError('Timing name cannot be empty');
  }
  if (duration.isNegative) {
    throw ArgumentError('Duration cannot be negative');
  }

  await _repository.exportMetric(
    Metric(
      name: name,
      value: duration.inMilliseconds.toDouble(),
      unit: 'ms',
      timestamp: DateTime.now().toUtc(),
      attributes: attributes,
    ),
  );
}