Class: MetabaseQuerySync::MetabaseApi::Pulse::Channel::ChannelBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/metabase_query_sync/metabase_api/pulse.rb

Instance Method Summary collapse

Constructor Details

#initializeChannelBuilder

Returns a new instance of ChannelBuilder.



24
25
26
27
# File 'lib/metabase_query_sync/metabase_api/pulse.rb', line 24

def initialize
  @args = {}
  @class = nil
end

Instance Method Details

#assert_day(day) ⇒ Object



39
40
41
# File 'lib/metabase_query_sync/metabase_api/pulse.rb', line 39

def assert_day(day)
  raise "invalid day provided (#{day})" unless [:sun, :mon, :tue, :wed, :thu, :fri, :sat] === day
end

#assert_hour(hour) ⇒ Object



36
37
38
# File 'lib/metabase_query_sync/metabase_api/pulse.rb', line 36

def assert_hour(hour)
  raise "invalid hour provided (#{hour})" unless (0..23) === hour
end

#callObject



74
75
76
# File 'lib/metabase_query_sync/metabase_api/pulse.rb', line 74

def call()
  Channel.new(@args)
end

#daily(hour) ⇒ Object

Parameters:

  • hour (Integer)

    value between 0 and 23



30
31
32
33
34
# File 'lib/metabase_query_sync/metabase_api/pulse.rb', line 30

def daily(hour)
  assert_hour hour
  @args = @args.merge({schedule_type: 'daily', schedule_day: nil, schedule_frame: nil, schedule_hour: hour})
  self
end

#emails(emails) ⇒ Object

Parameters:

  • emails (Array<String>)


63
64
65
66
# File 'lib/metabase_query_sync/metabase_api/pulse.rb', line 63

def emails(emails)
  @args = @args.merge({channel_type: 'email', recipients: emails.map {|e| {email: e}} })
  self
end

#hourlyObject



57
58
59
60
# File 'lib/metabase_query_sync/metabase_api/pulse.rb', line 57

def hourly
  @args = @args.merge({schedule_type: 'hourly', schedule_day: nil, schedule_frame: nil, schedule_hour: nil})
  self
end

#slack(channel) ⇒ Object

Parameters:

  • channel (String)


69
70
71
72
# File 'lib/metabase_query_sync/metabase_api/pulse.rb', line 69

def slack(channel)
  @args = @args.merge({channel_type: 'slack', details: {channel: channel}})
  self
end

#weekly(hour, day) ⇒ Object

Parameters:

  • hour (Integer)

    value between 0 and 23

  • day (:sun, :mon, :tue, :wed, :thu, :fri, :sat)


45
46
47
48
49
50
51
52
53
54
55
# File 'lib/metabase_query_sync/metabase_api/pulse.rb', line 45

def weekly(hour, day)
  assert_hour hour
  assert_day day
  @args = @args.merge({
    schedule_type: 'weekly',
    schedule_day: day.to_s,
    schedule_frame: nil,
    schedule_hour: hour
  })
  self
end