Skip to content
This repository was archived by the owner on Jun 2, 2021. It is now read-only.

Commit 0769108

Browse files
author
Brian Butz
committed
v3(services): Refactor service instance decorator selection
1 parent 69bac58 commit 0769108

1 file changed

Lines changed: 20 additions & 16 deletions

File tree

app/controllers/v3/service_instances_controller.rb

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,11 @@ def show
3535
message = ServiceInstanceShowMessage.from_params(query_params)
3636
invalid_param!(message.errors.full_messages) unless message.valid?
3737

38-
decorators = []
39-
decorators << FieldServiceInstanceSpaceDecorator.new(message.fields) if FieldServiceInstanceSpaceDecorator.match?(message.fields)
40-
decorators << FieldServiceInstanceOrganizationDecorator.new(message.fields) if FieldServiceInstanceOrganizationDecorator.match?(message.fields)
41-
decorators << FieldServiceInstancePlanDecorator.new(message.fields) if FieldServiceInstancePlanDecorator.match?(message.fields)
42-
decorators << FieldServiceInstanceOfferingDecorator.new(message.fields) if FieldServiceInstanceOfferingDecorator.match?(message.fields)
43-
decorators << FieldServiceInstanceBrokerDecorator.new(message.fields) if FieldServiceInstanceBrokerDecorator.match?(message.fields)
44-
45-
presenter = Presenters::V3::ServiceInstancePresenter.new(service_instance, decorators: decorators)
38+
presenter = Presenters::V3::ServiceInstancePresenter.new(
39+
service_instance,
40+
decorators: decorators_for_fields(message.fields)
41+
)
42+
4643
render status: :ok, json: presenter.to_json
4744
end
4845

@@ -56,19 +53,12 @@ def index
5653
ServiceInstanceListFetcher.new.fetch(message, readable_space_guids: permission_queryer.readable_space_guids)
5754
end
5855

59-
decorators = []
60-
decorators << FieldServiceInstanceSpaceDecorator.new(message.fields) if FieldServiceInstanceSpaceDecorator.match?(message.fields)
61-
decorators << FieldServiceInstanceOrganizationDecorator.new(message.fields) if FieldServiceInstanceOrganizationDecorator.match?(message.fields)
62-
decorators << FieldServiceInstancePlanDecorator.new(message.fields) if FieldServiceInstancePlanDecorator.match?(message.fields)
63-
decorators << FieldServiceInstanceOfferingDecorator.new(message.fields) if FieldServiceInstanceOfferingDecorator.match?(message.fields)
64-
decorators << FieldServiceInstanceBrokerDecorator.new(message.fields) if FieldServiceInstanceBrokerDecorator.match?(message.fields)
65-
6656
render status: :ok, json: Presenters::V3::PaginatedListPresenter.new(
6757
presenter: Presenters::V3::ServiceInstancePresenter,
6858
paginated_result: SequelPaginator.new.get_page(dataset, message.try(:pagination_options)),
6959
path: '/v3/service_instances',
7060
message: message,
71-
decorators: decorators
61+
decorators: decorators_for_fields(message.fields)
7262
)
7363
end
7464

@@ -197,6 +187,20 @@ def parameters
197187

198188
private
199189

190+
DECORATORS = [
191+
FieldServiceInstanceSpaceDecorator,
192+
FieldServiceInstanceOrganizationDecorator,
193+
FieldServiceInstancePlanDecorator,
194+
FieldServiceInstanceOfferingDecorator,
195+
FieldServiceInstanceBrokerDecorator
196+
].freeze
197+
198+
def decorators_for_fields(fields)
199+
DECORATORS.
200+
select { |decorator| decorator.match?(fields) }.
201+
map { |decorator| decorator.new(fields) }
202+
end
203+
200204
def create_user_provided(message)
201205
service_event_repository = VCAP::CloudController::Repositories::ServiceEventRepository::WithUserActor.new(user_audit_info)
202206

0 commit comments

Comments
 (0)