|
1 | 1 | require 'cloud_controller/paging/sequel_paginator' |
2 | 2 | require 'cloud_controller/paging/paginated_result' |
| 3 | +require 'fetchers/base_list_fetcher' |
3 | 4 |
|
4 | 5 | module VCAP::CloudController |
5 | | - class OrgListFetcher |
6 | | - def fetch(message:, guids:, eager_loaded_associations: []) |
7 | | - dataset = Organization.where(guid: guids) |
8 | | - dataset = eager_load(dataset, eager_loaded_associations) |
9 | | - filter(message, dataset) |
10 | | - end |
11 | | - |
12 | | - def fetch_all(message:, eager_loaded_associations: []) |
13 | | - dataset = Organization.dataset |
14 | | - dataset = eager_load(dataset, eager_loaded_associations) |
15 | | - filter(message, dataset) |
16 | | - end |
| 6 | + class OrgListFetcher < BaseListFetcher |
| 7 | + class << self |
| 8 | + def fetch(message:, guids:, eager_loaded_associations: []) |
| 9 | + dataset = Organization.where(guid: guids) |
| 10 | + dataset = eager_load(dataset, eager_loaded_associations) |
| 11 | + filter(message, dataset) |
| 12 | + end |
17 | 13 |
|
18 | | - def fetch_for_isolation_segment(message:, guids:, eager_loaded_associations: []) |
19 | | - isolation_segment = IsolationSegmentModel.where(guid: message.isolation_segment_guid).first |
20 | | - return nil unless isolation_segment |
| 14 | + def fetch_all(message:, eager_loaded_associations: []) |
| 15 | + dataset = Organization.dataset |
| 16 | + dataset = eager_load(dataset, eager_loaded_associations) |
| 17 | + filter(message, dataset) |
| 18 | + end |
21 | 19 |
|
22 | | - dataset = isolation_segment.organizations_dataset.where(guid: guids) |
23 | | - dataset = eager_load(dataset, eager_loaded_associations) |
24 | | - [isolation_segment, filter(message, dataset)] |
25 | | - end |
| 20 | + def fetch_for_isolation_segment(message:, guids:, eager_loaded_associations: []) |
| 21 | + isolation_segment = IsolationSegmentModel.where(guid: message.isolation_segment_guid).first |
| 22 | + return nil unless isolation_segment |
26 | 23 |
|
27 | | - def fetch_all_for_isolation_segment(message:, eager_loaded_associations: []) |
28 | | - isolation_segment = IsolationSegmentModel.where(guid: message.isolation_segment_guid).first |
29 | | - return nil unless isolation_segment |
| 24 | + dataset = isolation_segment.organizations_dataset.where(guid: guids) |
| 25 | + dataset = eager_load(dataset, eager_loaded_associations) |
| 26 | + [isolation_segment, filter(message, dataset)] |
| 27 | + end |
30 | 28 |
|
31 | | - dataset = isolation_segment.organizations_dataset |
32 | | - dataset = eager_load(dataset, eager_loaded_associations) |
33 | | - [isolation_segment, filter(message, dataset)] |
34 | | - end |
| 29 | + def fetch_all_for_isolation_segment(message:, eager_loaded_associations: []) |
| 30 | + isolation_segment = IsolationSegmentModel.where(guid: message.isolation_segment_guid).first |
| 31 | + return nil unless isolation_segment |
35 | 32 |
|
36 | | - private |
| 33 | + dataset = isolation_segment.organizations_dataset |
| 34 | + dataset = eager_load(dataset, eager_loaded_associations) |
| 35 | + [isolation_segment, filter(message, dataset)] |
| 36 | + end |
37 | 37 |
|
38 | | - def eager_load(dataset, associated_resources=[]) |
39 | | - return dataset if associated_resources.empty? |
| 38 | + private |
40 | 39 |
|
41 | | - dataset.eager(*associated_resources) |
42 | | - end |
| 40 | + def eager_load(dataset, associated_resources=[]) |
| 41 | + return dataset if associated_resources.empty? |
43 | 42 |
|
44 | | - def filter(message, dataset) |
45 | | - if message.requested?(:names) |
46 | | - dataset = dataset.where(name: message.names) |
| 43 | + dataset.eager(*associated_resources) |
47 | 44 | end |
48 | 45 |
|
49 | | - if message.requested?(:guids) |
50 | | - dataset = dataset.where(guid: message.guids) |
51 | | - end |
| 46 | + def filter(message, dataset) |
| 47 | + if message.requested?(:names) |
| 48 | + dataset = dataset.where(name: message.names) |
| 49 | + end |
52 | 50 |
|
53 | | - if message.requested?(:label_selector) |
54 | | - dataset = LabelSelectorQueryGenerator.add_selector_queries( |
55 | | - label_klass: OrganizationLabelModel, |
56 | | - resource_dataset: dataset, |
57 | | - requirements: message.requirements, |
58 | | - resource_klass: Organization, |
59 | | - ) |
60 | | - end |
| 51 | + if message.requested?(:guids) |
| 52 | + dataset = dataset.where(guid: message.guids) |
| 53 | + end |
| 54 | + |
| 55 | + if message.requested?(:label_selector) |
| 56 | + dataset = LabelSelectorQueryGenerator.add_selector_queries( |
| 57 | + label_klass: OrganizationLabelModel, |
| 58 | + resource_dataset: dataset, |
| 59 | + requirements: message.requirements, |
| 60 | + resource_klass: Organization, |
| 61 | + ) |
| 62 | + end |
61 | 63 |
|
62 | | - dataset |
| 64 | + super(message, dataset, Organization) |
| 65 | + end |
63 | 66 | end |
64 | 67 | end |
65 | 68 | end |
0 commit comments