class TrailblazerScaffold::Operation::Generate
Public Instance Methods
call(model, actions)
click to toggle source
# File lib/trailblazer_scaffold/operation/generate.rb, line 4 def call(model, actions) model_path = model.to_s.downcase.split('::').join('/') dir_path = Rails.root.join('app/concepts', model_path, 'operation') FileUtils.mkdir_p(dir_path) unless File.directory?(dir_path) actions.each do |action| send("generate_#{action}_operaton_class", model, dir_path) end end
generate_create_operaton_class(model, dir_path)
click to toggle source
# File lib/trailblazer_scaffold/operation/generate.rb, line 13 def generate_create_operaton_class(model, dir_path) class_text = <<~EOF module #{model} class Operaton::Create < Trailblazer::Operation step Model(#{model}, :new) step self::Contract::Build(constant: #{model}::Contract::Base) step self::Contract::Validate() step self::Contract::Persist() end end EOF File.write((dir_path + 'create.rb'), class_text) end
generate_destroy_operaton_class(model, dir_path)
click to toggle source
# File lib/trailblazer_scaffold/operation/generate.rb, line 43 def generate_destroy_operaton_class(model, dir_path) class_text = <<~EOF module #{model} class Operaton::Destroy < Trailblazer::Operation step Model(#{model}, :find) step :destroy def destroy(_options, model:, **) model.destroy end end end EOF File.write((dir_path + 'destroy.rb'), class_text) end
generate_update_operaton_class(model, dir_path)
click to toggle source
# File lib/trailblazer_scaffold/operation/generate.rb, line 28 def generate_update_operaton_class(model, dir_path) class_text = <<~EOF module #{model} class Operaton::Update < Trailblazer::Operation step Model(#{model}, :find) step self::Contract::Build(constant: #{model}::Contract::Base) step self::Contract::Validate() step self::Contract::Persist() end end EOF File.write((dir_path + 'update.rb'), class_text) end