diff --git a/lib/schemable/definition.rb b/lib/schemable/definition.rb index aca4bbb..509fa14 100644 --- a/lib/schemable/definition.rb +++ b/lib/schemable/definition.rb @@ -100,5 +100,16 @@ module Schemable def camelize_keys(hash) hash.deep_transform_keys { |key| key.to_s.camelize(:lower).to_sym } end + + def self.generate + instance = new + + [ + "#{instance.model}CreateRequest": instance.camelize_keys(RequestSchemaGenerator.new(instance).generate_for_create), + "#{instance.model}UpdateRequest": instance.camelize_keys(RequestSchemaGenerator.new(instance).generate_for_update), + "#{instance.model}Response": instance.camelize_keys(ResponseSchemaGenerator.new(instance).generate(collection: true)), + "#{instance.model}ResponseExpanded": instance.camelize_keys(ResponseSchemaGenerator.new(instance).generate(expand: true)) + ] + end end end diff --git a/sig/schemable/definition.rbs b/sig/schemable/definition.rbs index 8d17ded..eb79900 100644 --- a/sig/schemable/definition.rbs +++ b/sig/schemable/definition.rbs @@ -260,5 +260,7 @@ module Schemable # @example # { first_name: 'John', last_name: 'Doe' } => { firstName: 'John', lastName: 'Doe' } def camelize_keys: (Hash[Symbol, any]) -> (Hash[Symbol, any] | Array[Hash[Symbol, any]]) + + def self.generate: -> Array[Hash[Symbol, any]] end end