Intra-data source Relationships

We've seen that when building data sources, collections must fulfill the contract they defined when declaring their capabilities.

The same is also true for Intra-data source relationships which are declared on the structure of a collection: declared relations must be handled when processing filters, projection, and aggregations.

In practice

one-to-many and many-to-many relationships do not require additional work: Forest Admin will automatically call the destination collection with a valid filter.

On the other hand, many-to-one and one-to-one relationships require the implementer to make all fields from the target collection available on the source collection (under a prefix).

Example

If a structure declaration contains the following statement

module App
  module Collections
    class Movie < ForestAdminDatasourceToolkit::Collection
      include ForestAdminDatasourceToolkit::Schema
      include ForestAdminDatasourceToolkit::Components::Query:: ConditionTree

      def initialize(datasource)
        super(datasource, 'Movie')

        # [...]

        add_field('director', ManyToOneSchema.new(
          foreign_key: 'director_id',
          foreign_key_target: 'id',
          foreign_collection: 'People'
        ))
      end
    end
  end
end

Then the collection must accept references to fields from the people collection under the director prefix in all method parameters.

should return

Last updated

Was this helpful?