Module: Cranium::DSL
- Defined in:
- lib/cranium/dsl.rb
Defined Under Namespace
Classes: DatabaseDefinition, ExtractDefinition, ImportDefinition, SourceDefinition
Instance Method Summary
collapse
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, options)
transform source => options[:into] do |record|
output record if unique_on_fields? *options[:by]
end
end
|
22
23
24
25
26
|
# File 'lib/cranium/dsl.rb', line 22
def (name, &block)
= .new name
.instance_eval &block
Cranium::::.new.execute
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, options)
Cranium::Transformation::Join.new.tap do |join|
join.source_left = Cranium.application.sources[source_name]
join.source_right = Cranium.application.sources[options[:with]]
join.target = Cranium.application.sources[options[:into]]
join.match_fields = options[:match_on]
join.type = options[: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
|
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
|