class StatelyDB::Error
def self.from(error)
-
(StatelyDB::Error)
-
Parameters:
-
error
(Exception
) --
def self.from(error) return error if error.is_a?(StatelyDB::Error) if error.is_a?(GRPC::BadStatus) status = error.to_rpc_status unless status.nil? || status.details.empty? raw_detail = status.details[0] if raw_detail.type_url == "type.googleapis.com/stately.errors.StatelyErrorDetails" error_details = Stately::Errors::StatelyErrorDetails.decode(raw_detail.value) upstream_cause = error_details.upstream_cause.empty? ? nil : StandardError.new(error_details.upstream_cause) # rubocop:disable Metrics/BlockNesting return new(error_details.message, code: error.code, stately_code: error_details.stately_code, cause: upstream_cause) end end end new(error.message, code: GRPC::Core::StatusCodes::UNKNOWN, stately_code: "Unknown", cause: error) end