Module: ForestAdminDatasourceMongoid::Parser::Column
- Includes:
- ForestAdminDatasourceToolkit::Components::Query::ConditionTree
- Included in:
- Collection, Utils::Schema::FieldsGenerator
- Defined in:
- lib/forest_admin_datasource_mongoid/parser/column.rb
Constant Summary collapse
- TYPES =
{ 'Array' => 'Json', 'BSON::Binary' => 'Binary', 'BigDecimal' => 'Number', 'Mongoid::Boolean' => 'Boolean', 'Date' => 'Date', 'DateTime' => 'Date', 'Float' => 'Number', 'Hash' => 'Json', 'Integer' => 'Number', 'Object' => 'Json', 'BSON::ObjectId' => 'String', 'Range' => 'Json', 'Regexp' => 'String', 'Set' => 'Json', 'String' => 'String', 'Mongoid::StringifiedSymbol' => 'String', 'Symbol' => 'String', 'Time' => 'Date', 'ActiveSupport::TimeWithZone' => 'Date' }.freeze
Instance Method Summary collapse
- #get_column_type(column) ⇒ Object
- #get_default_value(column) ⇒ Object
- #get_embedded_fields(model) ⇒ Object
- #operators_for_column_type(type) ⇒ Object
Instance Method Details
#get_column_type(column) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/forest_admin_datasource_mongoid/parser/column.rb', line 28 def get_column_type(column) case column when Mongoid::Fields::Standard return TYPES[column.type.to_s] || 'String' when Mongoid::Fields::ForeignKey return 'String' when Hash return [get_column_type(column['[]'])] if column.key?('[]') return column.reduce({}) do |memo, (name, sub_column)| memo.merge({ name => get_column_type(sub_column) }) end end 'String' end |
#get_default_value(column) ⇒ Object
45 46 47 48 49 50 51 52 53 |
# File 'lib/forest_admin_datasource_mongoid/parser/column.rb', line 45 def get_default_value(column) if column.respond_to?(:options) && column..key?(:default) default = column.[:default] return default.respond_to?(:call) ? default.call : default end nil end |
#get_embedded_fields(model) ⇒ Object
55 56 57 58 |
# File 'lib/forest_admin_datasource_mongoid/parser/column.rb', line 55 def (model) = [Mongoid::Association::Embedded::EmbedsMany, Mongoid::Association::Embedded::EmbedsOne] model.relations.select { |_name, association| .include?(association.class) } end |
#operators_for_column_type(type) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/forest_admin_datasource_mongoid/parser/column.rb', line 60 def operators_for_column_type(type) default_operators = [Operators::PRESENT, Operators::EQUAL, Operators::NOT_EQUAL] in_operators = [Operators::IN, Operators::NOT_IN] string_operators = [Operators::MATCH, Operators::NOT_CONTAINS, Operators::NOT_I_CONTAINS] comparison_operators = [Operators::GREATER_THAN, Operators::LESS_THAN] result = [] if type.is_a? String case type when 'Boolean', 'Binary', 'Json' result = default_operators when 'Date', 'Dateonly', 'Number' result = default_operators + in_operators + comparison_operators when 'Enum' result = default_operators + in_operators when 'String' result = default_operators + in_operators + string_operators end end result = default_operators if type.is_a? Array result end |