Much base work started
This commit is contained in:
35
app/services/result.rb
Normal file
35
app/services/result.rb
Normal file
@@ -0,0 +1,35 @@
|
||||
class Result
|
||||
attr_reader :data, :error
|
||||
|
||||
def initialize(success:, data: {}, error: nil)
|
||||
@success = success
|
||||
@data = data
|
||||
@error = error
|
||||
end
|
||||
|
||||
def success?
|
||||
@success
|
||||
end
|
||||
|
||||
def failure?
|
||||
!@success
|
||||
end
|
||||
|
||||
def self.success(data = {})
|
||||
new(success: true, data: data)
|
||||
end
|
||||
|
||||
def self.failure(error)
|
||||
new(success: false, error: error)
|
||||
end
|
||||
|
||||
# Allow accessing data as methods
|
||||
def method_missing(method, *args)
|
||||
return @data[method] if @data.key?(method)
|
||||
super
|
||||
end
|
||||
|
||||
def respond_to_missing?(method, include_private = false)
|
||||
@data.key?(method) || super
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user