Class: Belt::SchemaBuilder
- Inherits:
-
Object
- Object
- Belt::SchemaBuilder
- 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
-
#request_models ⇒ Object
readonly
Returns the value of attribute request_models.
-
#response_models ⇒ Object
readonly
Returns the value of attribute response_models.
Instance Method Summary collapse
- #define ⇒ Object (also: #draw)
-
#initialize ⇒ SchemaBuilder
constructor
A new instance of SchemaBuilder.
- #model(name) ⇒ Object
- #request(name) ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize ⇒ SchemaBuilder
Returns a new instance of SchemaBuilder.
638 639 640 641 |
# File 'lib/belt/route_dsl.rb', line 638 def initialize @request_models = {} @response_models = {} end |
Instance Attribute Details
#request_models ⇒ Object (readonly)
Returns the value of attribute request_models.
636 637 638 |
# File 'lib/belt/route_dsl.rb', line 636 def request_models @request_models end |
#response_models ⇒ Object (readonly)
Returns the value of attribute response_models.
636 637 638 |
# File 'lib/belt/route_dsl.rb', line 636 def response_models @response_models end |
Instance Method Details
#define ⇒ Object Also known as: draw
643 644 645 646 |
# File 'lib/belt/route_dsl.rb', line 643 def define(&) instance_eval(&) if block_given? self end |
#model(name) ⇒ Object
656 657 658 659 660 |
# File 'lib/belt/route_dsl.rb', line 656 def model(name, &) builder = ResponseModelBuilder.new(name) builder.instance_eval(&) if block_given? @response_models[name] = builder end |
#request(name) ⇒ Object
650 651 652 653 654 |
# File 'lib/belt/route_dsl.rb', line 650 def request(name, &) builder = RequestModelBuilder.new(name) builder.instance_eval(&) if block_given? @request_models[name] = builder end |
#to_h ⇒ Object
662 663 664 665 666 667 |
# File 'lib/belt/route_dsl.rb', line 662 def to_h { request_models: @request_models.transform_values(&:to_h), response_models: @response_models.transform_values(&:to_h) } end |