Class: Zodra::ContractBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/zodra/contract_builder.rb

Instance Method Summary collapse

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