Class: MetabaseQuerySync::MetabaseState
- Inherits:
-
Dry::Struct
- Object
- Dry::Struct
- MetabaseQuerySync::MetabaseState
- Defined in:
- lib/metabase_query_sync/metabase_state.rb
Class Method Summary collapse
Instance Method Summary collapse
- #cards ⇒ Array<MetabaseApi::Card>
- #collections ⇒ Array<MetabaseApi::Collection>
- #database_by_name(name) ⇒ Object
- #databases ⇒ Array<MetabaseApi::Database>
- #empty? ⇒ Boolean
- #pulses ⇒ Array<MetabaseApi::Pulse>
-
#with_card(card) ⇒ Object
Self.
-
#with_pulse(pulse) ⇒ Object
Self.
Class Method Details
.from_metabase_api(metabase_api, root_collection_id) ⇒ MetabaseState
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/metabase_query_sync/metabase_state.rb', line 22 def self.(, root_collection_id) items = .get_collection_items(root_collection_id) if items.failure? raise "No root collection (id: #{root_collection_id}) found" end acc = items.value! .filter { |i| i.card? || i.pulse? } .map do |item| if item.card? .get_card(item.id).value! elsif item.pulse? .get_pulse(item.id).value! else raise 'Unexpected item type.' end end .reduce({cards: [], pulses: []}) do |acc, item| case item when MetabaseApi::Card acc[:cards] << item when MetabaseApi::Pulse acc[:pulses] << item else raise 'Unexpected item type.' end acc end new(collections: [], cards: acc[:cards], pulses: acc[:pulses], databases: .get_databases.value!) end |
Instance Method Details
#cards ⇒ Array<MetabaseApi::Card>
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/metabase_query_sync/metabase_state.rb', line 13 class MetabaseState < Dry::Struct attribute :collections, Types::Strict::Array.of(MetabaseApi::Collection) attribute :cards, Types::Strict::Array.of(MetabaseApi::Card) attribute :pulses, Types::Strict::Array.of(MetabaseApi::Pulse) attribute :databases, Types::Strict::Array.of(MetabaseApi::Database) # @param metabase_api [MetabaseApi] # @param root_collection_id [Integer] # @return [MetabaseState] def self.(, root_collection_id) items = .get_collection_items(root_collection_id) if items.failure? raise "No root collection (id: #{root_collection_id}) found" end acc = items.value! .filter { |i| i.card? || i.pulse? } .map do |item| if item.card? .get_card(item.id).value! elsif item.pulse? .get_pulse(item.id).value! else raise 'Unexpected item type.' end end .reduce({cards: [], pulses: []}) do |acc, item| case item when MetabaseApi::Card acc[:cards] << item when MetabaseApi::Pulse acc[:pulses] << item else raise 'Unexpected item type.' end acc end new(collections: [], cards: acc[:cards], pulses: acc[:pulses], databases: .get_databases.value!) end # @return self def with_card(card) new(cards: cards.concat([card])) end # @return self def with_pulse(pulse) new(pulses: pulses.concat([pulse])) end def empty? collections.empty? && cards.empty? && pulses.empty? end def database_by_name(name) databases.filter { |d| d.name.downcase == name.downcase }.first end end |
#collections ⇒ Array<MetabaseApi::Collection>
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/metabase_query_sync/metabase_state.rb', line 13 class MetabaseState < Dry::Struct attribute :collections, Types::Strict::Array.of(MetabaseApi::Collection) attribute :cards, Types::Strict::Array.of(MetabaseApi::Card) attribute :pulses, Types::Strict::Array.of(MetabaseApi::Pulse) attribute :databases, Types::Strict::Array.of(MetabaseApi::Database) # @param metabase_api [MetabaseApi] # @param root_collection_id [Integer] # @return [MetabaseState] def self.(, root_collection_id) items = .get_collection_items(root_collection_id) if items.failure? raise "No root collection (id: #{root_collection_id}) found" end acc = items.value! .filter { |i| i.card? || i.pulse? } .map do |item| if item.card? .get_card(item.id).value! elsif item.pulse? .get_pulse(item.id).value! else raise 'Unexpected item type.' end end .reduce({cards: [], pulses: []}) do |acc, item| case item when MetabaseApi::Card acc[:cards] << item when MetabaseApi::Pulse acc[:pulses] << item else raise 'Unexpected item type.' end acc end new(collections: [], cards: acc[:cards], pulses: acc[:pulses], databases: .get_databases.value!) end # @return self def with_card(card) new(cards: cards.concat([card])) end # @return self def with_pulse(pulse) new(pulses: pulses.concat([pulse])) end def empty? collections.empty? && cards.empty? && pulses.empty? end def database_by_name(name) databases.filter { |d| d.name.downcase == name.downcase }.first end end |
#database_by_name(name) ⇒ Object
68 69 70 |
# File 'lib/metabase_query_sync/metabase_state.rb', line 68 def database_by_name(name) databases.filter { |d| d.name.downcase == name.downcase }.first end |
#databases ⇒ Array<MetabaseApi::Database>
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/metabase_query_sync/metabase_state.rb', line 13 class MetabaseState < Dry::Struct attribute :collections, Types::Strict::Array.of(MetabaseApi::Collection) attribute :cards, Types::Strict::Array.of(MetabaseApi::Card) attribute :pulses, Types::Strict::Array.of(MetabaseApi::Pulse) attribute :databases, Types::Strict::Array.of(MetabaseApi::Database) # @param metabase_api [MetabaseApi] # @param root_collection_id [Integer] # @return [MetabaseState] def self.(, root_collection_id) items = .get_collection_items(root_collection_id) if items.failure? raise "No root collection (id: #{root_collection_id}) found" end acc = items.value! .filter { |i| i.card? || i.pulse? } .map do |item| if item.card? .get_card(item.id).value! elsif item.pulse? .get_pulse(item.id).value! else raise 'Unexpected item type.' end end .reduce({cards: [], pulses: []}) do |acc, item| case item when MetabaseApi::Card acc[:cards] << item when MetabaseApi::Pulse acc[:pulses] << item else raise 'Unexpected item type.' end acc end new(collections: [], cards: acc[:cards], pulses: acc[:pulses], databases: .get_databases.value!) end # @return self def with_card(card) new(cards: cards.concat([card])) end # @return self def with_pulse(pulse) new(pulses: pulses.concat([pulse])) end def empty? collections.empty? && cards.empty? && pulses.empty? end def database_by_name(name) databases.filter { |d| d.name.downcase == name.downcase }.first end end |
#empty? ⇒ Boolean
64 65 66 |
# File 'lib/metabase_query_sync/metabase_state.rb', line 64 def empty? collections.empty? && cards.empty? && pulses.empty? end |
#pulses ⇒ Array<MetabaseApi::Pulse>
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/metabase_query_sync/metabase_state.rb', line 13 class MetabaseState < Dry::Struct attribute :collections, Types::Strict::Array.of(MetabaseApi::Collection) attribute :cards, Types::Strict::Array.of(MetabaseApi::Card) attribute :pulses, Types::Strict::Array.of(MetabaseApi::Pulse) attribute :databases, Types::Strict::Array.of(MetabaseApi::Database) # @param metabase_api [MetabaseApi] # @param root_collection_id [Integer] # @return [MetabaseState] def self.(, root_collection_id) items = .get_collection_items(root_collection_id) if items.failure? raise "No root collection (id: #{root_collection_id}) found" end acc = items.value! .filter { |i| i.card? || i.pulse? } .map do |item| if item.card? .get_card(item.id).value! elsif item.pulse? .get_pulse(item.id).value! else raise 'Unexpected item type.' end end .reduce({cards: [], pulses: []}) do |acc, item| case item when MetabaseApi::Card acc[:cards] << item when MetabaseApi::Pulse acc[:pulses] << item else raise 'Unexpected item type.' end acc end new(collections: [], cards: acc[:cards], pulses: acc[:pulses], databases: .get_databases.value!) end # @return self def with_card(card) new(cards: cards.concat([card])) end # @return self def with_pulse(pulse) new(pulses: pulses.concat([pulse])) end def empty? collections.empty? && cards.empty? && pulses.empty? end def database_by_name(name) databases.filter { |d| d.name.downcase == name.downcase }.first end end |
#with_card(card) ⇒ Object
Returns self.
55 56 57 |
# File 'lib/metabase_query_sync/metabase_state.rb', line 55 def with_card(card) new(cards: cards.concat([card])) end |
#with_pulse(pulse) ⇒ Object
Returns self.
60 61 62 |
# File 'lib/metabase_query_sync/metabase_state.rb', line 60 def with_pulse(pulse) new(pulses: pulses.concat([pulse])) end |