Files
Prisma/lib/backend/models/provider_health.dart
T
2026-05-23 11:46:52 +03:00

43 lines
1.3 KiB
Dart

enum ProviderStatus { unknown, online, offline }
class ProviderHealth {
const ProviderHealth({
required this.providerId,
required this.status,
required this.pingMs,
required this.lastCheckedAt,
this.errorMessage,
this.apiVersion,
});
final String providerId;
final ProviderStatus status;
final int pingMs;
final DateTime lastCheckedAt;
final String? errorMessage;
final String? apiVersion;
bool get isOnline => status == ProviderStatus.online;
Map<String, dynamic> toJson() => {
'providerId': providerId,
'status': status.name,
'pingMs': pingMs,
'lastCheckedAt': lastCheckedAt.toIso8601String(),
'errorMessage': errorMessage,
'apiVersion': apiVersion,
};
factory ProviderHealth.fromJson(Map<String, dynamic> json) => ProviderHealth(
providerId: json['providerId'] as String,
status: ProviderStatus.values.firstWhere(
(value) => value.name == json['status'],
orElse: () => ProviderStatus.unknown,
),
pingMs: (json['pingMs'] as num?)?.toInt() ?? 0,
lastCheckedAt: DateTime.parse(json['lastCheckedAt'] as String),
errorMessage: json['errorMessage'] as String?,
apiVersion: json['apiVersion'] as String?,
);
}