Files
Prisma/lib/core/utils/result.dart
T
2026-05-23 11:46:52 +03:00

30 lines
624 B
Dart

import '../errors/failure.dart';
sealed class Result<T> {
const Result();
bool get isSuccess => this is Success<T>;
bool get isError => this is Error<T>;
R fold<R>({
required R Function(T data) onSuccess,
required R Function(Failure failure) onError,
}) {
final current = this;
return switch (current) {
Success<T>(:final data) => onSuccess(data),
Error<T>(:final failure) => onError(failure),
};
}
}
class Success<T> extends Result<T> {
const Success(this.data);
final T data;
}
class Error<T> extends Result<T> {
const Error(this.failure);
final Failure failure;
}