From e1a9a0d258291adcfd32d86d720ba7fe054197da Mon Sep 17 00:00:00 2001 From: Muhammad Nawzad Date: Mon, 29 Jan 2024 10:54:01 +0300 Subject: [PATCH] Refactor enum attribute handling in attribute_schema_generator to set default enum value --- lib/schemable/attribute_schema_generator.rb | 22 ++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/schemable/attribute_schema_generator.rb b/lib/schemable/attribute_schema_generator.rb index 27a149d..1722613 100644 --- a/lib/schemable/attribute_schema_generator.rb +++ b/lib/schemable/attribute_schema_generator.rb @@ -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?