From 6f0e65cb9305e84facb0009d0737b399d437406f Mon Sep 17 00:00:00 2001 From: navaneeth Date: Fri, 14 May 2021 12:40:01 +0530 Subject: [PATCH] Feature: Memoize firestore connection --- app/services/firestore_query_service.rb | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) 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