Class: Redata::Task

Inherits:
Object
  • Object
show all
Defined in:
lib/redata/tasks.rb

Constant Summary collapse

@@schema =
Schema.new

Class Method Summary collapse

Class Method Details

.checkout_datasource(key) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/redata/tasks.rb', line 34

def self.checkout_datasource(key)
  self.parse_key(key, [:view]).each do |config|
    config.tmp_mkdir
    Parser.gen_checkout_query config
    Log.action "CHECKOUT<#{config.category}>: to bucket [#{config.bucket_file}]"
    DATABASE.connect_redshift config

    bucket = S3Bucket.new
    bucket.move "#{config.bucket_file}000", config.bucket_file
    config.tmp_rmdir
  end
end

.create_datasource(key) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/redata/tasks.rb', line 9

def self.create_datasource(key)
  self.parse_key(key, [:table, :view]).each do |config|
    config.tmp_mkdir
    Parser.gen_create_query config
    if RED.is_append
      Log.action "APPEND<#{config.type}>: data(#{RED.start_time} ~ #{RED.end_time}) into [#{config.source_name}]"
    else
      Log.action "CREATE<#{config.type}>: [#{config.source_name}]"
    end
    DATABASE.connect_redshift config
    config.tmp_rmdir
  end
end

.delete_datasource(key) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/redata/tasks.rb', line 23

def self.delete_datasource(key)
  self.parse_key(key, [:table, :view]).reverse.each do |config|
    config.tmp_mkdir
    Parser.gen_delete_query config
    Log.action "DROP<#{config.type}>: [#{config.source_name}]"
    Log.warning "WARNING: CASCADE mode will also drop other views that depend on this" if RED.is_forced
    DATABASE.connect_redshift config
    config.tmp_rmdir
  end
end

.deploy_datasource(key, stage) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/redata/tasks.rb', line 47

def self.deploy_datasource(key, stage)
  self.parse_key(key, [:view]).each do |config|
    config.tmp_mkdir
    bucket = S3Bucket.new
    bucket.make_public config.bucket_file, true

    Log.action "DOWNLOAD<bucket>: from [#{config.bucket_file}]"
    system "wget #{RED.s3['host']}/#{config.bucket_file} -O #{config.tmp_data_file} --quiet"

    bucket.make_public config.bucket_file, false

    Log.action "INJECT<#{config.category}>: with [#{config.name}] #{stage ? 'for stage '+stage : ''}"
    DATABASE.inject_data config, stage
    config.tmp_rmdir
  end
end

.schemaObject



5
6
7
# File 'lib/redata/tasks.rb', line 5

def self.schema
  @@schema
end