Class: Zodra::ContractBuilder
- Inherits:
-
Object
- Object
- Zodra::ContractBuilder
- Defined in:
- lib/zodra/contract_builder.rb
Instance Method Summary collapse
- #action(name, &block) ⇒ Object
- #enum(name, values:) ⇒ Object
-
#initialize(contract) ⇒ ContractBuilder
constructor
A new instance of ContractBuilder.
- #type(name, from: nil, pick: nil, omit: nil, partial: false, &block) ⇒ Object
- #union(name, discriminator:, &block) ⇒ Object
Constructor Details
#initialize(contract) ⇒ ContractBuilder
Returns a new instance of ContractBuilder.
5 6 7 |
# File 'lib/zodra/contract_builder.rb', line 5 def initialize(contract) @contract = contract end |
Instance Method Details
#action(name, &block) ⇒ Object
9 10 11 12 13 |
# File 'lib/zodra/contract_builder.rb', line 9 def action(name, &block) action = @contract.add_action(name) ActionBuilder.new(action).instance_eval(&block) if block action end |
#enum(name, values:) ⇒ Object
27 28 29 |
# File 'lib/zodra/contract_builder.rb', line 27 def enum(name, values:) @contract.types.register(name, kind: :enum, values:) end |
#type(name, from: nil, pick: nil, omit: nil, partial: false, &block) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/zodra/contract_builder.rb', line 15 def type(name, from: nil, pick: nil, omit: nil, partial: false, &block) definition = @contract.types.register(name, kind: :object) if from source = @contract.resolve_type(from) || TypeRegistry.global.find!(from) TypeDeriver.new(source, pick:, omit:, partial:).apply(definition) end TypeBuilder.new(definition).instance_eval(&block) if block definition end |
#union(name, discriminator:, &block) ⇒ Object
31 32 33 34 35 |
# File 'lib/zodra/contract_builder.rb', line 31 def union(name, discriminator:, &block) definition = @contract.types.register(name, kind: :union, discriminator:) UnionBuilder.new(definition).instance_eval(&block) if block definition end |