Class: ForestAdminDatasourceRpc::ReconciliateRpc

Inherits:
ForestAdminDatasourceCustomizer::Plugins::Plugin
  • Object
show all
Defined in:
lib/forest_admin_datasource_rpc/reconciliate_rpc.rb

Instance Method Summary collapse

Instance Method Details

#run(datasource_customizer, _collection_customizer = nil, options = {}) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/forest_admin_datasource_rpc/reconciliate_rpc.rb', line 3

def run(datasource_customizer, _collection_customizer = nil, options = {})
  datasource_customizer.composite_datasource.datasources.each do |datasource|
    real_datasource = get_datasource(datasource)
    next unless real_datasource.is_a?(ForestAdminDatasourceRpc::Datasource)

    # Disable search for non-searchable collections
    real_datasource.collections.each_value do |collection|
      unless collection.schema[:searchable]
        cz = datasource_customizer.get_collection(get_collection_name(options[:rename], collection.name))
        cz.disable_search
      end
    end

    # Add relations from rpc_relations
    (real_datasource.rpc_relations || {}).each do |collection_name, relations|
      collection_name = get_collection_name(options[:rename], collection_name)
      cz = datasource_customizer.get_collection(collection_name)

      relations.each do |relation_name, relation_definition|
        add_relation(cz, options[:rename], relation_name.to_s, relation_definition)
      end
    end
  end
end