class UserRegistrationService
class Result
attr_reader :user, :errors
def initialize(success:, user: nil, errors: [])
@success = success
class CheckoutService
def initialize(cart:, user:)
@cart = cart
@user = user
end
class RevenueStat
DEFAULT_RANGE = 30.days
def initialize(account, range: DEFAULT_RANGE)
@account = account
@range = range
class ApplicationCommand
Result = Struct.new(:value, :errors) do
def success?
errors.nil? || errors.empty?
end
module Result
def self.Success(value)
Success.new(value)
end
def self.Failure(error)
module BoundedFanOut
Result = Struct.new(:value, :error) do
def ok?
error.nil?
end
end
module Posts
class CreateService
def initialize(author:, params:)
@author = author
@params = params
end
module EventBus
@subscribers = Hash.new { |h, k| h[k] = [] }
class << self
def subscribe(event_class, handler = nil, &block)
callable = handler || block