Class: Belt::SchemaBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/belt/route_dsl.rb

Overview

SchemaBuilder captures request and response model definitions from contracts.rb

Constant Summary collapse

SUPPORTED_TYPES =
%i[string text number integer boolean date datetime array object map list].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSchemaBuilder

Returns a new instance of SchemaBuilder.



528
529
530
531
# File 'lib/belt/route_dsl.rb', line 528

def initialize
  @request_models = {}
  @response_models = {}
end

Instance Attribute Details

#request_modelsObject (readonly)

Returns the value of attribute request_models.



526
527
528
# File 'lib/belt/route_dsl.rb', line 526

def request_models
  @request_models
end

#response_modelsObject (readonly)

Returns the value of attribute response_models.



526
527
528
# File 'lib/belt/route_dsl.rb', line 526

def response_models
  @response_models
end

Instance Method Details

#defineObject Also known as: draw



533
534
535
536
# File 'lib/belt/route_dsl.rb', line 533

def define(&)
  instance_eval(&) if block_given?
  self
end

#model(name) ⇒ Object



546
547
548
549
550
# File 'lib/belt/route_dsl.rb', line 546

def model(name, &)
  builder = ResponseModelBuilder.new(name)
  builder.instance_eval(&) if block_given?
  @response_models[name] = builder
end

#request(name) ⇒ Object



540
541
542
543
544
# File 'lib/belt/route_dsl.rb', line 540

def request(name, &)
  builder = RequestModelBuilder.new(name)
  builder.instance_eval(&) if block_given?
  @request_models[name] = builder
end

#to_hObject



552
553
554
555
556
557
# File 'lib/belt/route_dsl.rb', line 552

def to_h
  {
    request_models: @request_models.transform_values(&:to_h),
    response_models: @response_models.transform_values(&:to_h)
  }
end