Class: AnalyticsOps::Funnels::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/analytics_ops/funnels.rb,
sig/analytics_ops.rbs

Overview

Immutable definition for an aggregate, ordered BigQuery funnel.

Constant Summary collapse

NAME =
/\A[A-Za-z][A-Za-z0-9_]{0,63}\z/
EVENT_NAME =
/\A[A-Za-z][A-Za-z0-9_]{0,39}\z/
CONTROL =
/[\u0000-\u001f\u007f]/

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, steps:) ⇒ Definition

Returns a new instance of Definition.

Parameters:

  • name: (String)
  • steps: (Array[record])

Raises:



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/analytics_ops/funnels.rb', line 19

def initialize(name:, steps:)
  raise InvalidRequestError, "Funnel name is invalid" unless name.is_a?(String) && NAME.match?(name)
  unless steps.is_a?(Array) && steps.length.between?(2, 10)
    raise InvalidRequestError, "A funnel requires 2 to 10 steps"
  end

  @name = name.dup.freeze
  @steps = steps.map.with_index { |step, index| normalize_step(step, index) }.freeze
  unless @steps.map(&:name).uniq.length == @steps.length
    raise InvalidRequestError, "Funnel step names must be unique"
  end

  freeze
end

Instance Attribute Details

#nameString (readonly)

Returns the value of attribute name.

Returns:

  • (String)


17
18
19
# File 'lib/analytics_ops/funnels.rb', line 17

def name
  @name
end

#stepsArray[Step] (readonly)

Returns the value of attribute steps.

Returns:



17
18
19
# File 'lib/analytics_ops/funnels.rb', line 17

def steps
  @steps
end

Instance Method Details

#to_hrecord

Returns:

  • (record)


34
35
36
# File 'lib/analytics_ops/funnels.rb', line 34

def to_h
  { "name" => name, "experimental" => true, "steps" => steps.map(&:to_h) }
end