Class: FactorySeeder::FactoryController

Inherits:
ApplicationController show all
Defined in:
app/controllers/factory_seeder/factory_controller.rb

Instance Method Summary collapse

Instance Method Details

#generateObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/controllers/factory_seeder/factory_controller.rb', line 30

def generate
  factory_name = params[:name]
  count = (params[:count] || 1).to_i
  traits = parse_traits(params[:selected_traits])

  begin
    generator = SeedGenerator.new
    result = generator.generate(factory_name, count, traits, generate_params[:attributes].to_h.compact_blank)
    logs = result[:logs] || []

    if result[:errors].any?
      log_id = ExecutionLogStore.store(logs, flash_type: :error,
                                             flash_message: "Error generating seeds: #{result[:errors].join(', ')}")
    else
      log_id = ExecutionLogStore.store(logs, flash_type: :success,
                                             flash_message: "Successfully generated #{result[:count]} #{factory_name} records")
    end
  rescue StandardError => e
    log_id = ExecutionLogStore.store([], flash_type: :error, flash_message: "Error generating seeds: #{e.message}")
  end

  redirect_to factory_path(factory_name, log_id: log_id)
end

#indexObject



5
6
7
# File 'app/controllers/factory_seeder/factory_controller.rb', line 5

def index
  @factories = FactorySeeder.scan_loaded_factories
end

#showObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/controllers/factory_seeder/factory_controller.rb', line 9

def show
  @factory_name = params[:name]
  @factories = FactorySeeder.scan_loaded_factories
  @factory = @factories[@factory_name]
  @execution_logs = []

  # Retrieve logs from temporary storage if available (PRG pattern)
  if params[:log_id].present?
    stored = ExecutionLogStore.retrieve(params[:log_id])
    if stored
      @execution_logs = stored[:logs] || []
      flash.now[stored[:flash_type]] = stored[:flash_message] if stored[:flash_type]
    end
  end

  return if @factory

  redirect_to root_path, alert: "Factory '#{@factory_name}' not found"
  nil
end