// TODO: Remove the ability to have null values when benchmark implementation is complete /// `RunDetails` encapsulates specific details about a benchmark run. /// /// This class holds attributes such as the unique run identifier, the command used to initiate the run, /// the time of completion, the time when the benchmark started, and the name of the test. class RunDetails { /// The unique identifier for the benchmark run, typically a UUID. String runId; /// The command used to initiate the benchmark run. final String command; /// The completion time of the benchmark run as a `DateTime` object. final DateTime completionTime; /// The start time of the benchmark run as a `DateTime` object. final DateTime benchmarkStartTime; /// The name of the test associated with this benchmark run. final String testName; /// Constructs a new `RunDetails` instance. /// /// [runId]: The unique identifier for the benchmark run. /// [command]: The command used to initiate the run. /// [completionTime]: The completion time of the run. /// [benchmarkStartTime]: The start time of the run. /// [testName]: The name of the test. RunDetails({ required this.runId, required this.command, required this.completionTime, required this.benchmarkStartTime, required this.testName, }); /// Creates a `RunDetails` instance from a map. /// /// [json]: A map containing key-value pairs corresponding to `RunDetails` fields. /// /// Returns a new `RunDetails` populated with values from the map. factory RunDetails.fromJson(Map json) => RunDetails( runId: json['run_id'] ?? 'placerholder', command: json['command'] ?? 'placeholder', completionTime: json['completion_time'] == null ? DateTime.now() : DateTime.parse(json['completion_time']), benchmarkStartTime: json['benchmark_start_time'] == null ? DateTime.now() : DateTime.parse(json['benchmark_start_time']), testName: json['test_name'] ?? 'placeholder', ); /// Converts the `RunDetails` instance to a map. /// /// Returns a map containing key-value pairs corresponding to `RunDetails` fields. Map toJson() => { 'run_id': runId, 'command': command, 'completion_time': completionTime.toIso8601String(), 'benchmark_start_time': benchmarkStartTime.toIso8601String(), 'test_name': testName, }; }