Adds mongoid specific configurations

This commit is contained in:
Muhammad Nawzad 2023-11-13 14:58:20 +03:00
parent 06aafcf883
commit 2b57b1ed3c
No known key found for this signature in database
GPG Key ID: B954B6AAE33940B2
2 changed files with 14 additions and 2 deletions

View File

@ -9,8 +9,10 @@ module Schemable
:disable_factory_bot, :disable_factory_bot,
:use_serialized_instance, :use_serialized_instance,
:custom_defined_enum_method, :custom_defined_enum_method,
:enum_prefix_for_simple_enum,
:enum_suffix_for_simple_enum,
:infer_attributes_from_custom_method, :infer_attributes_from_custom_method,
:infer_attributes_from_jsonapi_serializable :infer_attributes_from_jsonapi_serializable,
) )
def initialize def initialize
@ -22,6 +24,8 @@ module Schemable
@disable_factory_bot = true @disable_factory_bot = true
@use_serialized_instance = false @use_serialized_instance = false
@custom_defined_enum_method = nil @custom_defined_enum_method = nil
@enum_prefix_for_simple_enum = nil
@enum_suffix_for_simple_enum = nil
@infer_attributes_from_custom_method = nil @infer_attributes_from_custom_method = nil
@infer_attributes_from_jsonapi_serializable = false @infer_attributes_from_jsonapi_serializable = false
end end
@ -32,6 +36,7 @@ module Schemable
{ {
text: { type: :string }, text: { type: :string },
string: { type: :string }, string: { type: :string },
symbol: { type: :string },
integer: { type: :integer }, integer: { type: :integer },
boolean: { type: :boolean }, boolean: { type: :boolean },
date: { type: :string, format: :date }, date: { type: :string, format: :date },
@ -44,6 +49,11 @@ module Schemable
trueclass: { type: :boolean, default: true }, trueclass: { type: :boolean, default: true },
falseclass: { type: :boolean, default: false }, falseclass: { type: :boolean, default: false },
datetime: { type: :string, format: :'date-time' }, datetime: { type: :string, format: :'date-time' },
big_decimal: { type: (@decimal_as_string ? :string : :number).to_s.to_sym, format: :double },
'bson/objectid': { type: :string, format: :object_id },
'mongoid/boolean': { type: :boolean },
'mongoid/stringified_symbol': { type: :string },
'active_support/time_with_zone': { type: :string, format: :date_time },
float: { float: {
type: (@float_as_string ? :string : :number).to_s.to_sym, type: (@float_as_string ? :string : :number).to_s.to_sym,
format: :float format: :float
@ -65,7 +75,7 @@ module Schemable
] ]
} }
} }
}[type_name.try(:to_sym)] }[type_name.to_s.underscore.try(:to_sym)]
end end
def add_custom_type_mapper(type_name, mapping) def add_custom_type_mapper(type_name, mapping)

View File

@ -6,6 +6,8 @@ module Schemable
attr_accessor decimal_as_string: bool attr_accessor decimal_as_string: bool
attr_accessor disable_factory_bot: bool attr_accessor disable_factory_bot: bool
attr_accessor use_serialized_instance: bool attr_accessor use_serialized_instance: bool
attr_accessor enum_prefix_for_simple_enum: String?
attr_accessor enum_suffix_for_simple_enum: String?
attr_accessor custom_defined_enum_method: Symbol? attr_accessor custom_defined_enum_method: Symbol?
attr_accessor custom_type_mappers: Hash[Symbol, any] attr_accessor custom_type_mappers: Hash[Symbol, any]
attr_accessor infer_attributes_from_jsonapi_serializable: bool attr_accessor infer_attributes_from_jsonapi_serializable: bool