Make job status an enum

Inex Code 2022-09-18 19:29:06 +03:00
parent d9b82b1250
commit 89c907b109
2 changed files with 37 additions and 4 deletions

View File

@ -30,14 +30,14 @@ class ServerJob {
name: serverJob.name, name: serverJob.name,
progress: serverJob.progress, progress: serverJob.progress,
result: serverJob.result, result: serverJob.result,
status: serverJob.status, status: JobStatusEnum.fromString(serverJob.status),
statusText: serverJob.statusText, statusText: serverJob.statusText,
uid: serverJob.uid, uid: serverJob.uid,
updatedAt: serverJob.updatedAt, updatedAt: serverJob.updatedAt,
); );
final String name; final String name;
final String description; final String description;
final String status; final JobStatusEnum status;
final String uid; final String uid;
final DateTime updatedAt; final DateTime updatedAt;
final DateTime createdAt; final DateTime createdAt;
@ -48,3 +48,29 @@ class ServerJob {
final String? statusText; final String? statusText;
final DateTime? finishedAt; final DateTime? finishedAt;
} }
enum JobStatusEnum {
@JsonValue('CREATED')
created,
@JsonValue('RUNNING')
running,
@JsonValue('FINISHED')
finished,
@JsonValue('ERROR')
error;
factory JobStatusEnum.fromString(final String status) {
switch (status) {
case 'CREATED':
return created;
case 'RUNNING':
return running;
case 'FINISHED':
return finished;
case 'ERROR':
return error;
default:
throw Exception('Unknown status: $status');
}
}
}

View File

@ -9,7 +9,7 @@ part of 'server_job.dart';
ServerJob _$ServerJobFromJson(Map<String, dynamic> json) => ServerJob( ServerJob _$ServerJobFromJson(Map<String, dynamic> json) => ServerJob(
name: json['name'] as String, name: json['name'] as String,
description: json['description'] as String, description: json['description'] as String,
status: json['status'] as String, status: $enumDecode(_$JobStatusEnumEnumMap, json['status']),
uid: json['uid'] as String, uid: json['uid'] as String,
updatedAt: DateTime.parse(json['updatedAt'] as String), updatedAt: DateTime.parse(json['updatedAt'] as String),
createdAt: DateTime.parse(json['createdAt'] as String), createdAt: DateTime.parse(json['createdAt'] as String),
@ -25,7 +25,7 @@ ServerJob _$ServerJobFromJson(Map<String, dynamic> json) => ServerJob(
Map<String, dynamic> _$ServerJobToJson(ServerJob instance) => <String, dynamic>{ Map<String, dynamic> _$ServerJobToJson(ServerJob instance) => <String, dynamic>{
'name': instance.name, 'name': instance.name,
'description': instance.description, 'description': instance.description,
'status': instance.status, 'status': _$JobStatusEnumEnumMap[instance.status]!,
'uid': instance.uid, 'uid': instance.uid,
'updatedAt': instance.updatedAt.toIso8601String(), 'updatedAt': instance.updatedAt.toIso8601String(),
'createdAt': instance.createdAt.toIso8601String(), 'createdAt': instance.createdAt.toIso8601String(),
@ -35,3 +35,10 @@ Map<String, dynamic> _$ServerJobToJson(ServerJob instance) => <String, dynamic>{
'statusText': instance.statusText, 'statusText': instance.statusText,
'finishedAt': instance.finishedAt?.toIso8601String(), 'finishedAt': instance.finishedAt?.toIso8601String(),
}; };
const _$JobStatusEnumEnumMap = {
JobStatusEnum.created: 'CREATED',
JobStatusEnum.running: 'RUNNING',
JobStatusEnum.finished: 'FINISHED',
JobStatusEnum.error: 'ERROR',
};