Module: StructuraidCore::DesignCodes::Utils::SchemaDefinition::ClassMethods

Defined in:
lib/structuraid_core/design_codes/utils/schema_definition.rb

Instance Method Summary collapse

Instance Method Details

#optionalObject



39
40
41
# File 'lib/structuraid_core/design_codes/utils/schema_definition.rb', line 39

def optional
  @optional
end

#requiredObject



35
36
37
# File 'lib/structuraid_core/design_codes/utils/schema_definition.rb', line 35

def required
  @required
end

#structurize(params) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/structuraid_core/design_codes/utils/schema_definition.rb', line 26

def structurize(params)
  structured_args_names = [*required, *optional]
  structured_klass = Struct.new(*structured_args_names, :schema, keyword_init: true)
  sliced_params = params.slice(*structured_args_names)
  sliced_params.merge!(schema: name)

  structured_klass.new(sliced_params)
end

#validate!(params) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/structuraid_core/design_codes/utils/schema_definition.rb', line 12

def validate!(params)
  required.each do |required_param|
    raise DesignCodes::MissingParamError, required_param if params[required_param].nil?
  end

  optional.each do |optional_param|
    raise DesignCodes::MissingParamError, optional_param if params[optional_param].nil?
  rescue DesignCodes::MissingParamError => e
    Warning.warn(e.message)
  end

  true
end