relatica/lib/models/exec_error.dart

53 lines
1.1 KiB
Dart
Raw Normal View History

import 'package:result_monad/result_monad.dart';
Result<T, ExecError> buildErrorResult<T>({
required ErrorType type,
String message = '',
}) =>
Result.error(
ExecError(
type: type,
message: message,
),
);
2022-11-09 02:19:44 +00:00
class ExecError {
final ErrorType type;
final String message;
ExecError({required this.type, this.message = ''});
ExecError copy({
ErrorType? type,
String? message,
}) =>
ExecError(
type: type ?? this.type,
message: message ?? this.message,
);
2022-11-09 02:19:44 +00:00
@override
String toString() {
return 'ExecError{type: $type, message: $message}';
}
}
enum ErrorType {
authentication,
localError,
missingEndpoint,
minVersionError,
2022-11-17 16:04:14 +00:00
notFound,
2022-11-09 02:19:44 +00:00
parsingError,
2023-01-25 18:06:46 +00:00
serverError,
rangeError,
2022-11-09 02:19:44 +00:00
}
extension ExecErrorExtension<T, E> on Result<T, E> {
Result<T, ExecError> execErrorCast() => mapError((error) => error is ExecError
? error
: ExecError(type: ErrorType.localError, message: error.toString()));
FutureResult<T, ExecError> execErrorCastAsync() async => execErrorCast();
}