diff --git a/app/services/firestore_query_service.rb b/app/services/firestore_query_service.rb index 31665fd8ed..59f6ffeedd 100644 --- a/app/services/firestore_query_service.rb +++ b/app/services/firestore_query_service.rb @@ -1,10 +1,12 @@ class FirestoreQueryService require 'google/cloud/firestore' + include DatasourceUtils - attr_accessor :data_query, :options, :source_options, :current_user + attr_accessor :data_query, :options, :source_options, :current_user, :data_source def initialize(data_query, options, source_options, current_user) @data_query = data_query + @data_source = data_query.data_source @options = options @source_options = source_options @current_user = current_user @@ -23,16 +25,13 @@ class FirestoreQueryService end def process - credential_json = JSON.parse(source_options['gcp_key']) data = {} error = nil begin - Google::Cloud::Firestore.configure do |config| - config.credentials = credential_json - end - firestore = Google::Cloud::Firestore.new + firestore = get_cached_connection(data_source) + firestore = create_connection unless firestore operation = data_query.options['operation'] @@ -107,4 +106,15 @@ class FirestoreQueryService doc_ref = firestore.doc path doc_ref.update body end + + def create_connection + credential_json = JSON.parse(source_options['gcp_key']) + Google::Cloud::Firestore.configure do |config| + config.credentials = credential_json + end + firestore = Google::Cloud::Firestore.new + + cache_connection(data_source, firestore) + firestore + end end