-
Notifications
You must be signed in to change notification settings - Fork 364
/
Copy pathspace_quota_list_fetcher.rb
36 lines (29 loc) · 1.19 KB
/
space_quota_list_fetcher.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
require 'cloud_controller/paging/sequel_paginator'
require 'cloud_controller/paging/paginated_result'
require 'fetchers/base_list_fetcher'
module VCAP::CloudController
class SpaceQuotaListFetcher < BaseListFetcher
class << self
def fetch(message:, readable_space_quota_guids:)
dataset = SpaceQuotaDefinition.dataset
filter(message, dataset, readable_space_quota_guids)
end
private
def filter(message, dataset, readable_space_quota_guids)
dataset = dataset.where(guid: readable_space_quota_guids)
dataset = dataset.where(name: message.names) if message.requested? :names
if message.requested? :organization_guids
org_ids = Organization.where(guid: message.organization_guids).select(:id)
dataset = dataset.where(organization_id: org_ids)
end
if message.requested? :space_guids
dataset = dataset.
join(:spaces, space_quota_definition_id: :id).
where(Sequel[:spaces][:guid] => message.space_guids).distinct.
qualify(:space_quota_definitions)
end
super(message, dataset, SpaceQuotaDefinition)
end
end
end
end