Class: FactorySeeder::Seed

Inherits:
Object
  • Object
show all
Defined in:
lib/factory_seeder/seed.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, description: nil, parameters: {}, metadata: {}, &block) ⇒ Seed

Returns a new instance of Seed.



7
8
9
10
11
12
13
14
# File 'lib/factory_seeder/seed.rb', line 7

def initialize(name, description: nil, parameters: {}, metadata: {}, &block)
  @name = name.to_sym
  @description = description || "Seed for #{name}"
  @parameters = parameters.transform_keys(&:to_sym)
  @metadata = .transform_keys(&:to_sym)
  @block = block
  @created_at = Time.now
end

Instance Attribute Details

#blockObject (readonly)

Returns the value of attribute block.



5
6
7
# File 'lib/factory_seeder/seed.rb', line 5

def block
  @block
end

#descriptionObject (readonly)

Returns the value of attribute description.



5
6
7
# File 'lib/factory_seeder/seed.rb', line 5

def description
  @description
end

#metadataObject (readonly)

Returns the value of attribute metadata.



5
6
7
# File 'lib/factory_seeder/seed.rb', line 5

def 
  @metadata
end

#nameObject (readonly)

Returns the value of attribute name.



5
6
7
# File 'lib/factory_seeder/seed.rb', line 5

def name
  @name
end

#parametersObject (readonly)

Returns the value of attribute parameters.



5
6
7
# File 'lib/factory_seeder/seed.rb', line 5

def parameters
  @parameters
end

Instance Method Details

#call(**kwargs) ⇒ Object



16
17
18
19
# File 'lib/factory_seeder/seed.rb', line 16

def call(**kwargs)
  validate_parameters!(kwargs)
  @block.call(**kwargs)
end

#has_parameters?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/factory_seeder/seed.rb', line 25

def has_parameters?
  @parameters.any?
end

#parameter_info(name) ⇒ Object



29
30
31
# File 'lib/factory_seeder/seed.rb', line 29

def parameter_info(name)
  @parameters[name.to_sym]
end

#parameter_namesObject



21
22
23
# File 'lib/factory_seeder/seed.rb', line 21

def parameter_names
  @parameters.keys
end

#to_hObject



50
51
52
53
54
55
56
57
58
59
# File 'lib/factory_seeder/seed.rb', line 50

def to_h
  {
    name: @name,
    description: @description,
    parameters: @parameters,
    metadata: @metadata,
    created_at: @created_at,
    has_parameters: has_parameters?
  }
end

#to_json(*args) ⇒ Object



61
62
63
# File 'lib/factory_seeder/seed.rb', line 61

def to_json(*args)
  to_h.to_json(*args)
end

#validate_parameters!(kwargs) ⇒ Object

Raises:

  • (ArgumentError)


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/factory_seeder/seed.rb', line 33

def validate_parameters!(kwargs)
  # Check for required parameters
  required_params = @parameters.select { |_, info| info[:required] }.keys
  missing_params = required_params - kwargs.keys

  raise ArgumentError, "Missing required parameters: #{missing_params.join(', ')}" if missing_params.any?

  # Validate parameter types and values
  kwargs.each do |key, value|
    param_info = @parameters[key]
    next unless param_info

    validate_parameter_type!(key, value, param_info)
    validate_parameter_value!(key, value, param_info)
  end
end