Class: KDomain::DomainModel::Step

Inherits:
Object
  • Object
show all
Includes:
KLog::Logging
Defined in:
lib/k_domain/domain_model/transform_steps/step.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(domain_data, **opts) ⇒ Step

Returns a new instance of Step.



13
14
15
16
17
18
19
20
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 13

def initialize(domain_data, **opts)
  # Useful for debugging
  # log.info "Initialize #{self.class.name}"

  @domain_data  = domain_data
  @opts         = opts
  @valid        = true
end

Instance Attribute Details

#domain_dataObject (readonly)

Returns the value of attribute domain_data.



8
9
10
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 8

def domain_data
  @domain_data
end

#optsObject (readonly)

Returns the value of attribute opts.



9
10
11
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 9

def opts
  @opts
end

#validObject (readonly) Also known as: valid?

Returns the value of attribute valid.



10
11
12
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 10

def valid
  @valid
end

Class Method Details

.run(domain_data, **opts) ⇒ Object



24
25
26
27
28
29
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 24

def self.run(domain_data, **opts)
  step = new(domain_data, **opts)
  step.call
  step.write(opts[:step_file])
  step.valid?
end

Instance Method Details

#callObject



22
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 22

def call; end

#databaseObject



115
116
117
118
119
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 115

def database
  guard('database is missing') if domain_data[:database].nil?

  domain_data[:database]
end

#database=(value) ⇒ Object

Database Accessor/Helpers



111
112
113
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 111

def database=(value)
  domain_data[:database] = value
end

#database_foreign_keysObject



127
128
129
130
131
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 127

def database_foreign_keys
  guard('database_foreign_keys is missing') if database[:foreign_keys].nil?

  database[:foreign_keys]
end

#database_tablesObject



121
122
123
124
125
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 121

def database_tables
  guard('database_tables is missing') if database[:tables].nil?

  database[:tables]
end

#domainObject

Domain Model Accessor/Helpers



46
47
48
49
50
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 46

def domain
  guard('domain is missing') if domain_data[:domain].nil?

  domain_data[:domain]
end

#domain_modelsObject



52
53
54
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 52

def domain_models
  domain[:models]
end

#find_foreign_table(lhs_table_name, column_name) ⇒ Object



145
146
147
148
149
150
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 145

def find_foreign_table(lhs_table_name, column_name)
  fk = database_foreign_keys.find { |foreign_key| foreign_key[:left] == lhs_table_name && foreign_key[:column] == column_name }
  return fk[:right] if fk

  nil
end

#find_rails_structure_models(model_name) ⇒ Object



94
95
96
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 94

def find_rails_structure_models(model_name)
  rails_structure_models.find { |model| model[:model_name] == model_name }
end

#find_table_for_model(model) ⇒ Object



133
134
135
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 133

def find_table_for_model(model)
  database_tables.find { |table| table[:name] == model[:table_name] }
end

#guard(message) ⇒ Object



31
32
33
34
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 31

def guard(message)
  log.error message
  @valid = false
end

#investigate(step:, location:, key:, message:) ⇒ Object



152
153
154
155
156
157
158
159
160
161
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 152

def investigate(step:, location:, key:, message:)
  unique_key = build_key(step, location, key)

  return if issue_hash.key?(unique_key)

  value = { step: step, location: location, key: key, message: message }

  issues << value                   # list
  issue_hash[unique_key] = value    # lookup
end

#issuesObject



163
164
165
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 163

def issues
  domain_data[:investigate][:issues]
end

#rails_resourceObject

Rails Resource File Accessor/Helpers



57
58
59
60
61
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 57

def rails_resource
  guard('rails_resource is missing') if domain_data[:rails_resource].nil?

  domain_data[:rails_resource]
end

#rails_resource_controllersObject



79
80
81
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 79

def rails_resource_controllers
  rails_resource[:controllers]
end

#rails_resource_modelsObject



63
64
65
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 63

def rails_resource_models
  rails_resource[:models]
end

#rails_resource_models=(value) ⇒ Object



67
68
69
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 67

def rails_resource_models=(value)
  rails_resource[:models] = value
end

#rails_resource_routesObject



71
72
73
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 71

def rails_resource_routes
  rails_resource[:routes]
end

#rails_resource_routes=(value) ⇒ Object



75
76
77
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 75

def rails_resource_routes=(value)
  rails_resource[:routes] = value
end

#rails_structureObject

Rails Structure File Accessor/Helpers



84
85
86
87
88
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 84

def rails_structure
  guard('rails_structure is missing') if domain_data[:rails_structure].nil?

  domain_data[:rails_structure]
end

#rails_structure_controllersObject



102
103
104
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 102

def rails_structure_controllers
  rails_structure[:controllers]
end

#rails_structure_controllers=(value) ⇒ Object



106
107
108
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 106

def rails_structure_controllers=(value)
  rails_structure[:controllers] = value
end

#rails_structure_modelsObject



90
91
92
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 90

def rails_structure_models
  rails_structure[:models]
end

#rails_structure_models=(value) ⇒ Object



98
99
100
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 98

def rails_structure_models=(value)
  rails_structure[:models] = value
end

#table_name_exist?(table_name) ⇒ Boolean

Returns:

  • (Boolean)


137
138
139
140
141
142
143
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 137

def table_name_exist?(table_name)
  if table_name.nil?
    guard('table_name_exist? was provided with a table_name: nil')
    return false
  end
  database_table_name_hash.key?(table_name)
end

#warning(message) ⇒ Object



36
37
38
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 36

def warning(message)
  log.warn message
end

#write(file) ⇒ Object



40
41
42
43
# File 'lib/k_domain/domain_model/transform_steps/step.rb', line 40

def write(file)
  FileUtils.mkdir_p(File.dirname(file))
  File.write(file, JSON.pretty_generate(domain_data))
end