Sha256: ed13c92e60a560d9e683815ec9bb7b5ee6fdf8b5ff0493cdc23a146711260908

Contents?: true

Size: 1.3 KB

Versions: 14

Compression:

Stored size: 1.3 KB

Contents

module ForestAdminDatasourceToolkit
  class Collection < Components::Contracts::CollectionContract
    attr_accessor :segments

    attr_reader :actions,
                :charts,
                :datasource,
                :name,
                :schema,
                :native_driver

    def initialize(datasource, name, native_driver: nil)
      super()
      @datasource = datasource
      @name = name
      @native_driver = native_driver
      @schema = {
        fields: {},
        countable: false,
        searchable: false
      }
      @actions = {}
      @segments = {}
      @charts = {}
    end

    def enable_count
      schema[:countable] = true
    end

    def is_countable?
      schema[:countable]
    end

    def is_searchable?
      schema[:searchable]
    end

    def fields
      schema[:fields]
    end

    def add_field(name, field)
      raise Exceptions::ForestException, "Field #{name} already defined in collection" if @schema[:fields].key?(name)

      schema[:fields][name] = field
    end

    def add_fields(fields)
      fields.each do |name, field|
        add_field(name, field)
      end
    end

    def add_action(name, action)
      raise Exceptions::ForestException, "Action #{name} already defined in collection" if @actions[key]

      @actions[name] = action
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
forest_admin_datasource_toolkit-1.0.0.pre.beta.40 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.39 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.38 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.37 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.36 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.35 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.34 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.33 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.32 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.31 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.30 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.29 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.28 lib/forest_admin_datasource_toolkit/collection.rb
forest_admin_datasource_toolkit-1.0.0.pre.beta.27 lib/forest_admin_datasource_toolkit/collection.rb