RunState.fromJson constructor

RunState.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory RunState.fromJson(Map<String, dynamic> json) {
  if (json['schema'] != currentSchema) {
    throw const FormatException('unsupported run-state schema');
  }
  if (json['config-hash'] is! String ||
      json['started-at'] is! String ||
      json['updated-at'] is! String ||
      json['jobs'] is! Map) {
    throw const FormatException('missing or invalid required fields');
  }
  final rawJobs = json['jobs'];
  final jobs = <String, Map<String, dynamic>>{};
  for (final entry in (rawJobs as Map).entries) {
    if (entry.value is! Map) {
      throw FormatException("job '${entry.key}' is not an object");
    }
    jobs[entry.key.toString()] = Map<String, dynamic>.from(
      entry.value as Map,
    );
  }
  return RunState(
    configHash: json['config-hash'] as String,
    operation: json['operation']?.toString() ?? '',
    startedAt: DateTime.parse(json['started-at'].toString()),
    updatedAt: DateTime.parse(json['updated-at'].toString()),
    version: json['resolved-version'] is Map
        ? ResolvedVersion.fromJson(
            Map<String, dynamic>.from(json['resolved-version'] as Map),
          )
        : null,
    jobs: jobs,
  );
}