Module: Cranium::DSL
- Defined in:
- lib/cranium/dsl.rb
Defined Under Namespace
Classes: DatabaseDefinition, ExtractDefinition, ImportDefinition, SourceDefinition
Instance Method Summary collapse
- #after(&block) ⇒ Object
- #archive(*sources) ⇒ Object
- #database(name, &block) ⇒ Object
- #deduplicate(source, options) ⇒ Object
- #extract(name, &block) ⇒ Object
- #import(name, &block) ⇒ Object
- #join(source_name, options) ⇒ Object
- #move(*sources, to: "") ⇒ Object
- #read(name, &block) ⇒ Object
- #remove(*sources) ⇒ Object
- #sequence(name) ⇒ Object
- #source(name, &block) ⇒ Object
- #transform(names, &block) ⇒ Object
Instance Method Details
#after(&block) ⇒ Object
104 105 106 |
# File 'lib/cranium/dsl.rb', line 104 def after(&block) Cranium.application.register_hook :after, &block end |
#archive(*sources) ⇒ Object
74 75 76 77 78 |
# File 'lib/cranium/dsl.rb', line 74 def archive(*sources) sources.each do |source_name| Cranium::Archiver.archive *Cranium.application.sources[source_name].files end end |
#database(name, &block) ⇒ Object
10 11 12 |
# File 'lib/cranium/dsl.rb', line 10 def database(name, &block) Cranium::Database.register_database name, &block end |
#deduplicate(source, options) ⇒ Object
46 47 48 49 50 |
# File 'lib/cranium/dsl.rb', line 46 def deduplicate(source, ) transform source => [:into] do |record| output record if unique_on_fields? *[:by] end end |
#extract(name, &block) ⇒ Object
22 23 24 25 26 |
# File 'lib/cranium/dsl.rb', line 22 def extract(name, &block) extract_definition = ExtractDefinition.new name extract_definition.instance_eval &block Cranium::Extract::DataExtractor.new.execute extract_definition end |
#import(name, &block) ⇒ Object
66 67 68 69 70 |
# File 'lib/cranium/dsl.rb', line 66 def import(name, &block) import_definition = ImportDefinition.new(name) import_definition.instance_eval &block Cranium::DataImporter.new.import import_definition end |
#join(source_name, options) ⇒ Object
54 55 56 57 58 59 60 61 62 |
# File 'lib/cranium/dsl.rb', line 54 def join(source_name, ) Cranium::Transformation::Join.new.tap do |join| join.source_left = Cranium.application.sources[source_name] join.source_right = Cranium.application.sources[[:with]] join.target = Cranium.application.sources[[:into]] join.match_fields = [:match_on] join.type = [:type] || :inner end.execute end |
#move(*sources, to: "") ⇒ Object
90 91 92 93 94 |
# File 'lib/cranium/dsl.rb', line 90 def move(*sources, to: "") sources.each do |source_name| Cranium::Archiver.move *Cranium.application.sources[source_name].files, target_directory: to end end |
#read(name, &block) ⇒ Object
30 31 32 33 |
# File 'lib/cranium/dsl.rb', line 30 def read(name, &block) source = Cranium.application.sources[name] Cranium::DataReader.new(source).read(&block) end |
#remove(*sources) ⇒ Object
82 83 84 85 86 |
# File 'lib/cranium/dsl.rb', line 82 def remove(*sources) sources.each do |source_name| Cranium::Archiver.remove *Cranium.application.sources[source_name].files end end |
#sequence(name) ⇒ Object
98 99 100 |
# File 'lib/cranium/dsl.rb', line 98 def sequence(name) Cranium::Transformation::Sequence.new name end |
#source(name, &block) ⇒ Object
16 17 18 |
# File 'lib/cranium/dsl.rb', line 16 def source(name, &block) Cranium.application.register_source name, &block end |
#transform(names, &block) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/cranium/dsl.rb', line 37 def transform(names, &block) source = Cranium.application.sources[names.keys.first] target = Cranium.application.sources[names.values.first] Cranium::DataTransformer.new(source, target).transform(&block) end |