Refactor enum attribute handling in attribute_schema_generator to set default enum value

This commit is contained in:
Muhammad Nawzad 2024-01-29 10:54:01 +03:00
parent d00737fc6f
commit e1a9a0d258
No known key found for this signature in database
GPG Key ID: B954B6AAE33940B2

View File

@ -101,9 +101,25 @@ module Schemable
if @configuration.custom_defined_enum_method && @model.respond_to?(@configuration.custom_defined_enum_method)
defined_enums = @model.send(@configuration.custom_defined_enum_method)
enum_attribute = attribute.to_s.gsub(@configuration.enum_prefix_for_simple_enum || @configuration.enum_suffix_for_simple_enum, '').to_s
return @schema_modifier.add_properties(@response, { enum: defined_enums[enum_attribute].keys }, '.') if @response && defined_enums[enum_attribute].present?
elsif @model.respond_to?(:defined_enums)
return @schema_modifier.add_properties(@response, { enum: @model.defined_enums[attribute.to_s].keys }, '.') if @response && @model.defined_enums.key?(attribute.to_s)
if @response && defined_enums[enum_attribute].present?
return @schema_modifier.add_properties(
@response,
{
enum: defined_enums[enum_attribute].keys,
default: @model_definition.default_value_for_enum_attributes[attribute.to_sym] || defined_enums[enum_attribute].keys.first
},
'.'
)
end
elsif @model.respond_to?(:defined_enums) && @response && @model.defined_enums.key?(attribute.to_s)
return @schema_modifier.add_properties(
@response,
{
enum: @model.defined_enums[attribute.to_s].keys,
default: @model_definition.default_value_for_enum_attributes[attribute.to_sym] || @model.defined_enums[attribute.to_s].keys.first
},
'.'
)
end
return @response unless @response.nil?