module Trailblazer::Endpoint::Builder::DSL

Public Instance Methods

build_options_for(builder:, **options) click to toggle source

@return endpoint_options

# File lib/trailblazer/endpoint/builder.rb, line 29
def build_options_for(builder:, **options)
  signal, (ctx, _) = builder.([options])

  ctx[:build_options] # ["web:submitted?", {protocol_block: ..., options_for_build: ...}]
end
endpoint_for(id:, builder:, default_options:, **config) click to toggle source
# File lib/trailblazer/endpoint/builder.rb, line 35
def endpoint_for(id:, builder:, default_options:, **config)
  options = build_options_for(builder: builder, **config)

  return id, Trailblazer::Endpoint.build(default_options.merge(options[:options_for_build]).merge(protocol_block: options[:protocol_block]))
end
endpoints_for(dsl_options, **options) click to toggle source

{dsl_options} being something like

"api:Start.default" => {policies: []},
"api:status?"       => {policies: [:user_owns_diagram]},
"api:download?"     => {policies: [:user_owns_diagram]},
"api:delete?"       => {policies: [:user_owns_diagram]},
# File lib/trailblazer/endpoint/builder.rb, line 47
def endpoints_for(dsl_options, **options)
  endpoints = dsl_options.collect do |id, config|
    endpoint_for(id: id, **options, **config) # config is per endpoint, options are "global"
  end.to_h
end