Sha256: aea0988997b36c8650e7d805aa883f410dd1ca800d0dc3c18d82baa326c420cb
Contents?: true
Size: 1.16 KB
Versions: 27
Compression:
Stored size: 1.16 KB
Contents
module ForestAdminDatasourceToolkit module Components module Query class ProjectionFactory include ForestAdminDatasourceToolkit::Utils def self.all(collection) projection_fields = collection.schema[:fields].reduce([]) do |memo, path| column_name = path[0] schema = path[1] memo += [column_name] if schema.type == 'Column' if schema.type == 'OneToOne' || schema.type == 'ManyToOne' || schema.type == 'PolymorphicOneToOne' relation = collection.datasource.get_collection(schema.foreign_collection) relation_columns = relation.schema[:fields] .select { |_column_name, relation_column| relation_column.type == 'Column' } .keys .map { |relation_column_name| "#{column_name}:#{relation_column_name}" } memo += relation_columns end memo += ["#{column_name}:*"] if schema.type == 'PolymorphicManyToOne' memo end Projection.new projection_fields end end end end end
Version data entries
27 entries across 27 versions & 1 rubygems