masamune 0.17.12 → 0.17.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -3
  3. data/bin/masamune-aws-emr +1 -1
  4. data/bin/masamune-dump +1 -1
  5. data/bin/masamune-hive +1 -1
  6. data/bin/masamune-psql +1 -1
  7. data/bin/masamune-shell +1 -1
  8. data/lib/masamune.rb +1 -1
  9. data/lib/masamune/actions/aws_emr.rb +2 -2
  10. data/lib/masamune/actions/data_flow.rb +10 -10
  11. data/lib/masamune/actions/date_parse.rb +4 -6
  12. data/lib/masamune/actions/execute.rb +3 -3
  13. data/lib/masamune/actions/filesystem.rb +1 -1
  14. data/lib/masamune/actions/hadoop_filesystem.rb +2 -2
  15. data/lib/masamune/actions/hive.rb +5 -5
  16. data/lib/masamune/actions/invoke_parallel.rb +5 -5
  17. data/lib/masamune/actions/postgres.rb +6 -6
  18. data/lib/masamune/actions/postgres_admin.rb +1 -1
  19. data/lib/masamune/actions/s3cmd.rb +3 -3
  20. data/lib/masamune/actions/transform.rb +4 -4
  21. data/lib/masamune/after_initialize_callbacks.rb +4 -4
  22. data/lib/masamune/cached_filesystem.rb +7 -11
  23. data/lib/masamune/commands/aws_emr.rb +12 -12
  24. data/lib/masamune/commands/hadoop_filesystem.rb +8 -8
  25. data/lib/masamune/commands/hadoop_streaming.rb +16 -16
  26. data/lib/masamune/commands/hive.rb +31 -35
  27. data/lib/masamune/commands/postgres.rb +30 -32
  28. data/lib/masamune/commands/postgres_admin.rb +17 -16
  29. data/lib/masamune/commands/postgres_common.rb +1 -1
  30. data/lib/masamune/commands/retry_with_backoff.rb +19 -19
  31. data/lib/masamune/commands/s3cmd.rb +7 -7
  32. data/lib/masamune/commands/shell.rb +25 -38
  33. data/lib/masamune/configuration.rb +8 -9
  34. data/lib/masamune/data_plan/builder.rb +5 -5
  35. data/lib/masamune/data_plan/elem.rb +7 -7
  36. data/lib/masamune/data_plan/engine.rb +12 -15
  37. data/lib/masamune/data_plan/rule.rb +14 -12
  38. data/lib/masamune/data_plan/set.rb +13 -13
  39. data/lib/masamune/environment.rb +3 -3
  40. data/lib/masamune/filesystem.rb +29 -28
  41. data/lib/masamune/helpers/postgres.rb +8 -5
  42. data/lib/masamune/io.rb +2 -2
  43. data/lib/masamune/last_element.rb +3 -3
  44. data/lib/masamune/method_logger.rb +1 -1
  45. data/lib/masamune/schema/catalog.rb +9 -12
  46. data/lib/masamune/schema/column.rb +12 -10
  47. data/lib/masamune/schema/dimension.rb +5 -4
  48. data/lib/masamune/schema/fact.rb +2 -2
  49. data/lib/masamune/schema/map.rb +9 -13
  50. data/lib/masamune/schema/row.rb +3 -2
  51. data/lib/masamune/schema/store.rb +13 -14
  52. data/lib/masamune/schema/table.rb +24 -28
  53. data/lib/masamune/schema/table_reference.rb +7 -7
  54. data/lib/masamune/spec_helper.rb +1 -1
  55. data/lib/masamune/string_format.rb +1 -1
  56. data/lib/masamune/tasks/aws_emr_thor.rb +9 -9
  57. data/lib/masamune/tasks/dump_thor.rb +5 -5
  58. data/lib/masamune/tasks/hive_thor.rb +13 -13
  59. data/lib/masamune/tasks/postgres_thor.rb +8 -8
  60. data/lib/masamune/tasks/shell_thor.rb +3 -3
  61. data/lib/masamune/template.rb +4 -4
  62. data/lib/masamune/thor.rb +26 -25
  63. data/lib/masamune/transform/common/denormalize_table.rb +6 -6
  64. data/lib/masamune/transform/define_table.rb +1 -1
  65. data/lib/masamune/transform/hive/define_table.rb +0 -2
  66. data/lib/masamune/transform/insert_reference_values.rb +1 -1
  67. data/lib/masamune/transform/operator.rb +3 -2
  68. data/lib/masamune/transform/postgres/bulk_upsert.rb +0 -3
  69. data/lib/masamune/transform/postgres/deduplicate_dimension.rb +4 -6
  70. data/lib/masamune/transform/postgres/define_table.rb +2 -2
  71. data/lib/masamune/transform/postgres/insert_reference_values.rb +1 -4
  72. data/lib/masamune/transform/postgres/relabel_dimension.rb +1 -3
  73. data/lib/masamune/transform/postgres/rollup_fact.rb +3 -5
  74. data/lib/masamune/transform/postgres/snapshot_dimension.rb +1 -4
  75. data/lib/masamune/transform/postgres/stage_dimension.rb +8 -10
  76. data/lib/masamune/transform/postgres/stage_fact.rb +15 -14
  77. data/lib/masamune/version.rb +1 -1
  78. data/spec/masamune/actions/aws_emr_spec.rb +8 -8
  79. data/spec/masamune/actions/execute_spec.rb +6 -6
  80. data/spec/masamune/actions/hive_spec.rb +20 -15
  81. data/spec/masamune/actions/postgres_spec.rb +17 -10
  82. data/spec/masamune/after_initialization_callbacks_spec.rb +13 -7
  83. data/spec/masamune/commands/aws_emr_spec.rb +10 -10
  84. data/spec/masamune/commands/hadoop_filesystem_spec.rb +3 -3
  85. data/spec/masamune/commands/hadoop_streaming_spec.rb +4 -4
  86. data/spec/masamune/commands/hive_spec.rb +11 -11
  87. data/spec/masamune/commands/postgres_admin_spec.rb +9 -9
  88. data/spec/masamune/commands/postgres_spec.rb +15 -15
  89. data/spec/masamune/commands/retry_with_backoff_spec.rb +10 -7
  90. data/spec/masamune/commands/s3cmd_spec.rb +3 -3
  91. data/spec/masamune/commands/shell_spec.rb +16 -16
  92. data/spec/masamune/data_plan/builder_spec.rb +22 -19
  93. data/spec/masamune/data_plan/elem_spec.rb +20 -20
  94. data/spec/masamune/data_plan/engine_spec.rb +41 -33
  95. data/spec/masamune/data_plan/rule_spec.rb +19 -19
  96. data/spec/masamune/data_plan/set_spec.rb +8 -6
  97. data/spec/masamune/environment_spec.rb +5 -5
  98. data/spec/masamune/filesystem_spec.rb +87 -87
  99. data/spec/masamune/helpers/postgres_spec.rb +1 -1
  100. data/spec/masamune/rspec/job_fixture_spec.rb +0 -1
  101. data/spec/masamune/schema/catalog_spec.rb +16 -16
  102. data/spec/masamune/schema/column_spec.rb +19 -19
  103. data/spec/masamune/schema/dimension_spec.rb +2 -2
  104. data/spec/masamune/schema/fact_spec.rb +3 -3
  105. data/spec/masamune/schema/map_spec.rb +41 -41
  106. data/spec/masamune/schema/table_spec.rb +16 -16
  107. data/spec/masamune/string_format_spec.rb +7 -7
  108. data/spec/masamune/tasks/dump_thor_spec.rb +6 -6
  109. data/spec/masamune/tasks/hive_thor_spec.rb +2 -2
  110. data/spec/masamune/template_spec.rb +3 -2
  111. data/spec/masamune/thor_spec.rb +8 -8
  112. data/spec/masamune/transform/bulk_upsert.dimension_spec.rb +3 -3
  113. data/spec/masamune/transform/define_table.dimension_spec.rb +3 -3
  114. data/spec/masamune/transform/define_table.fact_spec.rb +5 -5
  115. data/spec/masamune/transform/define_table.table_spec.rb +6 -6
  116. data/spec/masamune/transform/denormalize_table_spec.rb +15 -15
  117. data/spec/masamune/transform/insert_reference_values.dimension_spec.rb +1 -1
  118. data/spec/masamune/transform/load_dimension_spec.rb +1 -1
  119. data/spec/masamune/transform/load_fact_spec.rb +1 -1
  120. data/spec/masamune/transform/rollup_fact_spec.rb +4 -4
  121. data/spec/masamune/transform/stage_dimension_spec.rb +3 -3
  122. data/spec/masamune/transform/stage_fact_spec.rb +4 -4
  123. data/spec/spec_helper.rb +1 -1
  124. data/spec/support/masamune/example_group.rb +2 -2
  125. data/spec/support/masamune/job_example_group.rb +3 -3
  126. data/spec/support/masamune/job_fixture.rb +4 -4
  127. data/spec/support/masamune/mock_command.rb +10 -10
  128. data/spec/support/masamune/mock_delegate.rb +2 -2
  129. data/spec/support/masamune/mock_filesystem.rb +3 -3
  130. data/spec/support/masamune/shared_example_group.rb +14 -16
  131. data/spec/support/masamune/step_example_group.rb +4 -4
  132. data/spec/support/masamune/step_fixture.rb +1 -1
  133. data/spec/support/masamune/task_example_group.rb +1 -1
  134. data/spec/support/masamune/thor_mute.rb +3 -2
  135. data/spec/support/rspec/example/action_example_group.rb +1 -1
  136. data/spec/support/rspec/example/task_example_group.rb +7 -4
  137. data/spec/support/rspec/example/transform_example_group.rb +1 -1
  138. data/spec/support/shared_examples/postgres_common_examples.rb +2 -2
  139. metadata +16 -2
@@ -29,26 +29,26 @@ module Masamune::Tasks
29
29
  include Masamune::Actions::AwsEmr
30
30
  include Masamune::Actions::Hive
31
31
 
32
- # FIXME need to add an unnecessary namespace until this issue is fixed:
32
+ # FIXME: need to add an unnecessary namespace until this issue is fixed:
33
33
  # https://github.com/wycats/thor/pull/247
34
34
  namespace :hive
35
35
  skip_lock!
36
36
 
37
37
  desc 'hive', 'Launch a Hive session'
38
- method_option :file, :aliases => '-f', :desc => 'SQL from files'
39
- method_option :exec, :aliases => '-e', :desc => 'SQL from command line'
40
- method_option :output, :aliases => '-o', :desc => 'Save SQL output to file'
41
- method_option :delimiter, :desc => 'Hive row format delimiter', :default => "\001"
42
- method_option :csv, :type => :boolean, :desc => 'Report SQL output in CSV format', :default => false
43
- method_option :variables, :aliases => '-X', :type => :hash, :desc => 'Variables to substitute in SQL', :default => {}
44
- method_option :retry, :type => :boolean, :desc => 'Retry SQL query in event of failure', :default => false
45
- method_option :service, :desc => 'Start as a service', :default => false
38
+ method_option :file, aliases: '-f', desc: 'SQL from files'
39
+ method_option :exec, aliases: '-e', desc: 'SQL from command line'
40
+ method_option :output, aliases: '-o', desc: 'Save SQL output to file'
41
+ method_option :delimiter, desc: 'Hive row format delimiter', default: "\001"
42
+ method_option :csv, type: :boolean, desc: 'Report SQL output in CSV format', default: false
43
+ method_option :variables, aliases: '-X', type: :hash, desc: 'Variables to substitute in SQL', default: {}
44
+ method_option :retry, type: :boolean, desc: 'Retry SQL query in event of failure', default: false
45
+ method_option :service, desc: 'Start as a service', default: false
46
46
  def hive_exec
47
47
  hive_options = options.dup.with_indifferent_access
48
- hive_options.merge!(print: true)
49
- hive_options.merge!(retries: 0) unless options[:retry]
50
- hive_options.merge!(file: File.expand_path(options[:file])) if options[:file]
51
- hive_options.merge!(output: File.expand_path(options[:output])) if options[:output]
48
+ hive_options[:print] = true
49
+ hive_options[:retries] = 0 unless options[:retry]
50
+ hive_options[:file] = File.expand_path(options[:file]) if options[:file]
51
+ hive_options[:output] = File.expand_path(options[:output]) if options[:output]
52
52
  hive(hive_options)
53
53
  end
54
54
  default_task :hive_exec
@@ -28,21 +28,21 @@ module Masamune::Tasks
28
28
  include Masamune::Thor
29
29
  include Masamune::Actions::Postgres
30
30
 
31
- # FIXME need to add an unnecessary namespace until this issue is fixed:
31
+ # FIXME: need to add an unnecessary namespace until this issue is fixed:
32
32
  # https://github.com/wycats/thor/pull/247
33
33
  namespace :postgres
34
34
  skip_lock!
35
35
 
36
36
  desc 'psql', 'Launch a Postgres session'
37
- method_option :file, :aliases => '-f', :desc => 'SQL from files'
38
- method_option :exec, :aliases => '-e', :desc => 'SQL from command line'
39
- method_option :output, :aliases => '-o', :desc => 'Save SQL output to file'
40
- method_option :csv, :type => :boolean, :desc => 'Report SQL output in CSV format', :default => false
41
- method_option :retry, :type => :boolean, :desc => 'Retry SQL query in event of failure', :default => false
37
+ method_option :file, aliases: '-f', desc: 'SQL from files'
38
+ method_option :exec, aliases: '-e', desc: 'SQL from command line'
39
+ method_option :output, aliases: '-o', desc: 'Save SQL output to file'
40
+ method_option :csv, type: :boolean, desc: 'Report SQL output in CSV format', default: false
41
+ method_option :retry, type: :boolean, desc: 'Retry SQL query in event of failure', default: false
42
42
  def psql_exec
43
43
  postgres_options = options.dup.with_indifferent_access
44
- postgres_options.merge!(print: true)
45
- postgres_options.merge!(retries: 0) unless options[:retry]
44
+ postgres_options[:print] = true
45
+ postgres_options[:retries] = 0 unless options[:retry]
46
46
  postgres(postgres_options)
47
47
  end
48
48
  default_task :psql_exec
@@ -29,15 +29,15 @@ module Masamune::Tasks
29
29
  include Masamune::Thor
30
30
  include Masamune::Actions::DataFlow
31
31
 
32
- # FIXME need to add an unnecessary namespace until this issue is fixed:
32
+ # FIXME: need to add an unnecessary namespace until this issue is fixed:
33
33
  # https://github.com/wycats/thor/pull/247
34
34
  namespace :shell
35
35
  skip_lock!
36
36
 
37
37
  desc 'shell', 'Launch an interactive shell'
38
38
  skip
39
- method_option :prompt, :desc => 'Set shell prompt', :default => 'masamune'
40
- class_option :start, :aliases => '-a', :desc => 'Start time', default: '1 month ago'
39
+ method_option :prompt, desc: 'Set shell prompt', default: 'masamune'
40
+ class_option :start, aliases: '-a', desc: 'Start time', default: '1 month ago'
41
41
  def shell_exec
42
42
  Pry.start self, prompt: proc { options[:prompt] + '> ' }
43
43
  end
@@ -37,14 +37,14 @@ module Masamune
37
37
 
38
38
  private
39
39
 
40
- # TODO unify with resolve_path
40
+ # TODO: unify with resolve_path
41
41
  def resolve_file(partial_file)
42
42
  return partial_file if Pathname.new(partial_file).absolute?
43
43
  @paths.each do |path|
44
44
  file = File.expand_path(File.join(path, partial_file))
45
- if File.exists?(file) && File.file?(file)
45
+ if File.exist?(file) && File.file?(file)
46
46
  @paths << File.dirname(file)
47
- return file
47
+ return file
48
48
  end
49
49
  end
50
50
  raise IOError, "File not found: #{partial_file}"
@@ -59,7 +59,7 @@ module Masamune
59
59
  end
60
60
 
61
61
  def render_to_string(template, parameters = {})
62
- instance = self.new(File.dirname(template))
62
+ instance = new(File.dirname(template))
63
63
  combine instance.render(template, parameters)
64
64
  end
65
65
 
@@ -41,15 +41,16 @@ module Masamune
41
41
  '/opt/etc/masamune/config.yml',
42
42
  '/opt/etc/masamune/config.yml.erb',
43
43
  "#{ENV['HOME']}/.masamune/config.yml"
44
- ]
44
+ ].freeze
45
45
 
46
46
  module ExtraArguments
47
47
  def parse_extra(argv)
48
- if i = argv.index('--')
48
+ i = argv.index('--')
49
+ if i
49
50
  if i > 0
50
- [argv[0 .. i-1], argv[i+1..-1]]
51
+ [argv[0..i - 1], argv[i + 1..-1]]
51
52
  else
52
- [[], argv[i+1..-1]]
53
+ [[], argv[i + 1..-1]]
53
54
  end
54
55
  else
55
56
  [argv, []]
@@ -70,14 +71,14 @@ module Masamune
70
71
  super
71
72
  rescue SignalException => e
72
73
  raise e unless %w(SIGHUP SIGTERM).include?(e.to_s)
73
- instance.logger.debug("Exiting at user request on #{e.to_s}")
74
+ instance.logger.debug("Exiting at user request on #{e}")
74
75
  exit 0
75
76
  rescue ::Thor::MalformattedArgumentError, ::Thor::RequiredArgumentMissingError => e
76
77
  raise e
77
78
  rescue => e
78
79
  instance.logger.error("#{e.message} (#{e.class}) backtrace:")
79
80
  e.backtrace.each { |x| instance.logger.error(x) }
80
- $stderr.puts "For complete debug log see: #{instance.log_file_name.to_s}"
81
+ $stderr.puts "For complete debug log see: #{instance.log_file_name}"
81
82
  abort e.message
82
83
  end
83
84
  end
@@ -94,31 +95,31 @@ module Masamune
94
95
  attr_accessor :extra
95
96
 
96
97
  namespace :masamune
97
- class_option :help, :type => :boolean, :aliases => '-h', :desc => 'Show help', :default => false
98
- class_option :quiet, :type => :boolean, :aliases => '-q', :desc => 'Suppress all output', :default => false
99
- class_option :verbose, :type => :boolean, :aliases => '-v', :desc => 'Print command execution information', :default => false
100
- class_option :debug, :type => :boolean, :aliases => '-d', :desc => 'Print debugging information', :default => false
101
- class_option :dry_run, :type => :boolean, :aliases => '-n', :desc => 'Do not execute commands that modify state', :default => false
102
- class_option :config, :desc => 'Configuration file'
103
- class_option :version, :desc => 'Print version and exit', :type => :boolean
104
- class_option :lock, :desc => 'Optional job lock name', :type => :string
105
- class_option :initialize, :aliases => '--init', :desc => 'Initialize configured data stores', :type => :boolean, :default => false
106
- class_option :'--', :desc => 'Extra pass through arguments'
107
- def initialize(_args = [], _options = {}, _config = {})
108
- self.environment.parent = self
109
- self.filesystem.environment = self
98
+ class_option :help, type: :boolean, aliases: '-h', desc: 'Show help', default: false
99
+ class_option :quiet, type: :boolean, aliases: '-q', desc: 'Suppress all output', default: false
100
+ class_option :verbose, type: :boolean, aliases: '-v', desc: 'Print command execution information', default: false
101
+ class_option :debug, type: :boolean, aliases: '-d', desc: 'Print debugging information', default: false
102
+ class_option :dry_run, type: :boolean, aliases: '-n', desc: 'Do not execute commands that modify state', default: false
103
+ class_option :config, desc: 'Configuration file'
104
+ class_option :version, desc: 'Print version and exit', type: :boolean
105
+ class_option :lock, desc: 'Optional job lock name', type: :string
106
+ class_option :initialize, aliases: '--init', desc: 'Initialize configured data stores', type: :boolean, default: false
107
+ class_option :'--', desc: 'Extra pass through arguments'
108
+ def initialize(thor_args = [], thor_options = {}, thor_config = {})
109
+ environment.parent = self
110
+ filesystem.environment = self
110
111
  self.current_namespace = self.class.namespace unless self.class.namespace == 'masamune'
111
- self.current_task_name = _config[:current_command].try(:name)
112
+ self.current_task_name = thor_config[:current_command].try(:name)
112
113
  self.current_command_name = current_namespace ? current_namespace + ':' + current_task_name : current_task_name
113
114
  self.class.instance = self
114
115
 
115
116
  define_current_dir
116
117
 
117
- if _options.is_a?(Array)
118
- _options, self.extra = self.class.parse_extra(_options)
118
+ if thor_options.is_a?(Array)
119
+ thor_options, self.extra = self.class.parse_extra(thor_options)
119
120
  end
120
121
 
121
- super _args, _options, _config
122
+ super thor_args, thor_options, thor_config
122
123
 
123
124
  if display_help?
124
125
  display_help
@@ -133,7 +134,7 @@ module Masamune
133
134
  begin
134
135
  config.load(config_file)
135
136
  rescue
136
- raise $! if options[:debug]
137
+ raise $ERROR_INFO if options[:debug]
137
138
  raise ::Thor::MalformattedArgumentError, "Could not load file provided for '--config'"
138
139
  end
139
140
 
@@ -160,7 +161,7 @@ module Masamune
160
161
  end
161
162
 
162
163
  def top_level?
163
- self.current_command_name == ARGV.first
164
+ current_command_name == ARGV.first
164
165
  end
165
166
 
166
167
  def invoke_command(command, *args)
@@ -38,14 +38,13 @@ module Masamune::Transform::Common
38
38
  TargetPresenter.new(@target)
39
39
  end
40
40
 
41
- private
42
-
43
41
  class TargetPresenter < SimpleDelegator
44
42
  include Masamune::LastElement
45
43
 
46
44
  def select_columns(column_names)
47
45
  column_names.map do |column_name|
48
- next unless column = dereference_column_name(column_name)
46
+ column = dereference_column_name(column_name)
47
+ next unless column
49
48
  if column.reference
50
49
  if column.reference.implicit || column.reference.degenerate
51
50
  "#{column.name} AS #{column.name}"
@@ -66,8 +65,8 @@ module Masamune::Transform::Common
66
65
  def join_conditions(column_names)
67
66
  {}.tap do |conditions|
68
67
  column_names.each do |column_name|
69
- next unless column = dereference_column_name(column_name)
70
- next unless column.reference
68
+ column = dereference_column_name(column_name)
69
+ next unless column && column.reference
71
70
  next if column.reference.degenerate
72
71
  adjacent_reference = references[column.reference.id]
73
72
  next unless adjacent_reference
@@ -80,7 +79,8 @@ module Masamune::Transform::Common
80
79
 
81
80
  def order_by_columns(column_names)
82
81
  column_names.map do |column_name|
83
- next unless column = dereference_column_name(column_name)
82
+ column = dereference_column_name(column_name)
83
+ next unless column
84
84
  column.name
85
85
  end.compact
86
86
  end
@@ -52,7 +52,7 @@ module Masamune::Transform
52
52
 
53
53
  def glob_to_regexp(input)
54
54
  if input.include?('*')
55
- %r|\A#{Regexp.escape(input).gsub('\\*', '.*?')}|
55
+ /\A#{Regexp.escape(input).gsub('\\*', '.*?')}/
56
56
  else
57
57
  /\A#{Regexp.escape(input)}\z/
58
58
  end
@@ -34,8 +34,6 @@ module Masamune::Transform::Hive
34
34
  TargetPresenter.new(@target)
35
35
  end
36
36
 
37
- private
38
-
39
37
  class TargetPresenter < SimpleDelegator
40
38
  def partition_by
41
39
  return unless partitions.any?
@@ -29,7 +29,7 @@ module Masamune::Transform
29
29
  target.insert_references.each do |_, reference|
30
30
  operators << Operator.new(__method__, source: source, target: reference)
31
31
  end
32
- Operator.new *operators
32
+ Operator.new(*operators)
33
33
  end
34
34
  end
35
35
  end
@@ -51,8 +51,8 @@ module Masamune::Transform
51
51
  private
52
52
 
53
53
  def template_eval(template)
54
- return File.read(template) if File.exists?(template.to_s) && template.to_s !~ /erb\Z/
55
- template_file = File.exists?(template.to_s) ? template : template_file(template)
54
+ return File.read(template) if File.exist?(template.to_s) && template.to_s !~ /erb\Z/
55
+ template_file = File.exist?(template.to_s) ? template : template_file(template)
56
56
  if template_helper(template)
57
57
  Masamune::Template.render_to_string(template_file, template_helper(template).new(@options).locals)
58
58
  else
@@ -63,6 +63,7 @@ module Masamune::Transform
63
63
  def template_helper(template_name)
64
64
  "Masamune::Transform::#{template_type.to_s.camelize}::#{template_name.to_s.camelize}".constantize
65
65
  rescue NameError
66
+ nil
66
67
  end
67
68
 
68
69
  def template_file(template_name)
@@ -37,8 +37,6 @@ module Masamune::Transform::Postgres
37
37
  TargetPresenter.new(@target)
38
38
  end
39
39
 
40
- private
41
-
42
40
  class TargetPresenter < SimpleDelegator
43
41
  include Masamune::LastElement
44
42
 
@@ -59,4 +57,3 @@ module Masamune::Transform::Postgres
59
57
  end
60
58
  end
61
59
  end
62
-
@@ -35,10 +35,8 @@ module Masamune::Transform::Postgres
35
35
  TargetPresenter.new(@target)
36
36
  end
37
37
 
38
- private
39
-
40
38
  class TargetPresenter < SimpleDelegator
41
- def insert_columns(source = nil)
39
+ def insert_columns(_source = nil)
42
40
  consolidated_columns.map { |_, column| column.name }
43
41
  end
44
42
 
@@ -61,10 +59,11 @@ module Masamune::Transform::Postgres
61
59
  def duplicate_value_conditions(window)
62
60
  [].tap do |result|
63
61
  consolidated_columns.map do |_, column|
62
+ result <<
64
63
  if column.null
65
- result << "((LAG(#{column.name}) OVER #{window} = #{column.name}) OR (LAG(#{column.name}) OVER #{window} IS NULL AND #{column.name} IS NULL))"
64
+ "((LAG(#{column.name}) OVER #{window} = #{column.name}) OR (LAG(#{column.name}) OVER #{window} IS NULL AND #{column.name} IS NULL))"
66
65
  else
67
- result << "(LAG(#{column.name}) OVER #{window} = #{column.name})"
66
+ "(LAG(#{column.name}) OVER #{window} = #{column.name})"
68
67
  end
69
68
  end
70
69
  end
@@ -93,4 +92,3 @@ module Masamune::Transform::Postgres
93
92
  end
94
93
  end
95
94
  end
96
-
@@ -21,7 +21,7 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  module Masamune::Transform::Postgres
24
- class DefineTable
24
+ class DefineTable
25
25
  def initialize(options = {})
26
26
  @target = options[:target]
27
27
  @files = options[:files] || []
@@ -46,7 +46,7 @@ module Masamune::Transform::Postgres
46
46
  end
47
47
 
48
48
  def skip_indexes?
49
- !!@skip_indexes
49
+ @skip_indexes == true
50
50
  end
51
51
 
52
52
  def define_types?
@@ -39,8 +39,6 @@ module Masamune::Transform::Postgres
39
39
  TargetPresenter.new(@target)
40
40
  end
41
41
 
42
- private
43
-
44
42
  class TargetPresenter < SimpleDelegator
45
43
  include Masamune::LastElement
46
44
 
@@ -60,10 +58,9 @@ module Masamune::Transform::Postgres
60
58
  method_with_last_element :insert_values
61
59
 
62
60
  def insert_constraints(source)
63
- source.shared_columns(stage_table).reject { |column, _| column.null || column.default || column.adjacent.try(:default) }.map { |column, _| "#{column.name} IS NOT NULL"}
61
+ source.shared_columns(stage_table).reject { |column, _| column.null || column.default || column.adjacent.try(:default) }.map { |column, _| "#{column.name} IS NOT NULL" }
64
62
  end
65
63
  method_with_last_element :insert_constraints
66
64
  end
67
65
  end
68
66
  end
69
-
@@ -23,7 +23,7 @@
23
23
  module Masamune::Transform::Postgres
24
24
  class RelabelDimension
25
25
  def initialize(options = {})
26
- @target = options[:target]
26
+ @target = options[:target]
27
27
  end
28
28
 
29
29
  def locals
@@ -34,8 +34,6 @@ module Masamune::Transform::Postgres
34
34
  TargetPresenter.new(@target)
35
35
  end
36
36
 
37
- private
38
-
39
37
  class TargetPresenter < SimpleDelegator
40
38
  def window(*extra)
41
39
  (columns.values.select { |column| extra.delete(column.name) || column.natural_key || column.auto_reference }.map(&:name) + extra).uniq
@@ -36,8 +36,6 @@ module Masamune::Transform::Postgres
36
36
  TargetPresenter.new(@target)
37
37
  end
38
38
 
39
- private
40
-
41
39
  class TargetPresenter < SimpleDelegator
42
40
  include Masamune::LastElement
43
41
 
@@ -49,7 +47,7 @@ module Masamune::Transform::Postgres
49
47
  next if column.auto_reference
50
48
  values << column.name
51
49
  end
52
- measures.each do |_ ,measure|
50
+ measures.each do |_, measure|
53
51
  values << measure.name
54
52
  end
55
53
  values << time_key.name
@@ -66,7 +64,7 @@ module Masamune::Transform::Postgres
66
64
  next if column.auto_reference
67
65
  values << column.qualified_name
68
66
  end
69
- source.measures.each do |_ ,measure|
67
+ source.measures.each do |_, measure|
70
68
  values << measure.aggregate_value
71
69
  end
72
70
  values << calculated_time_key(source)
@@ -102,7 +100,7 @@ module Masamune::Transform::Postgres
102
100
  def calculated_date_key(source)
103
101
  case grain
104
102
  when :hourly, :daily
105
- "#{source.date_column.qualified_name}"
103
+ source.date_column.qualified_name.to_s
106
104
  when :monthly
107
105
  "to_char(date_trunc('month',#{source.date_column.qualified_name}::text::date),'YYYYMMDD')::integer"
108
106
  end
@@ -36,12 +36,10 @@ module Masamune::Transform::Postgres
36
36
  TargetPresenter.new(@target)
37
37
  end
38
38
 
39
- private
40
-
41
39
  class TargetPresenter < SimpleDelegator
42
40
  include Masamune::LastElement
43
41
 
44
- def insert_columns(source = nil)
42
+ def insert_columns(_source = nil)
45
43
  consolidated_columns.map { |_, column| column.name }
46
44
  end
47
45
 
@@ -80,4 +78,3 @@ module Masamune::Transform::Postgres
80
78
  end
81
79
  end
82
80
  end
83
-