Skip to content

Commit

Permalink
Refactor Provider Search Service
Browse files Browse the repository at this point in the history
  • Loading branch information
allthesignals committed Feb 10, 2025
1 parent f7fda9e commit 4354c1e
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 16 deletions.
1 change: 1 addition & 0 deletions app/.env
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ [email protected]
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=primary
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=deterministic
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=derivationsalt
SUPPORTED_PROVIDERS=pinwheel
65 changes: 49 additions & 16 deletions app/app/services/provider_search_service.rb
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
class ProviderSearchService
PROVIDER_RESULT = Struct.new(:provider_name, :provider_options, :name, :logo_url, keyword_init: true)

SUPPORTED_PROVIDERS = (ENV["SUPPORTED_PROVIDERS"] || "pinwheel")&.split(",")&.map(&:to_sym)

def initialize(client_agency_id)
set_pinwheel(client_agency_id)
set_argyle(client_agency_id)
client_agency_config = site_config[client_agency_id]

@providers = SUPPORTED_PROVIDERS.map do |provider|
case provider
when :pinwheel
PinwheelAdapter.new(client_agency_config.pinwheel_environment)
when :argyle
ArgyleAdapter.new(client_agency_config.argyle_environment)
end
end
end

def search(query = "")
[
*@argyle.items(query)["results"].map do |result|
PROVIDER_RESULT.new(provider_name: :argyle, provider_options: { response_type: result["kind"], provider_id: result["id"] }, name: result["name"], logo_url: result["logo_url"])
end,
*@pinwheel.fetch_items(q: query)["data"].map do |result|
PROVIDER_RESULT.new(provider_name: :pinwheel, provider_options: { response_type: result["response_type"], provider_id: result["id"] }, name: result["name"], logo_url: result["logo_url"])
end
]
@providers.map { |provider| provider.query(query) }.flatten
end

private
Expand All @@ -23,13 +26,43 @@ def site_config
Rails.application.config.sites
end

def set_pinwheel(client_agency_id)
environment = site_config[client_agency_id].pinwheel_environment
@pinwheel ||= PinwheelService.new(environment)
class PinwheelAdapter
def initialize(environment)
@pinwheel = PinwheelService.new(environment)
end

def query(query)
@pinwheel.fetch_items(q: query)["data"].map do |result|
PROVIDER_RESULT.new(
provider_name: :pinwheel,
provider_options: {
response_type: result["response_type"],
provider_id: result["id"]
},
name: result["name"],
logo_url: result["logo_url"]
)
end
end
end

def set_argyle(client_agency_id)
environment = site_config[client_agency_id].argyle_environment
@argyle ||= ArgyleService.new(environment)
class ArgyleAdapter
def initialize(environment)
@argyle = ArgyleService.new(environment)
end

def query(query)
@argyle.items(query)["results"].map do |result|
PROVIDER_RESULT.new(
provider_name: :argyle,
provider_options: {
response_type: result["kind"],
provider_id: result["id"]
},
name: result["name"],
logo_url: result["logo_url"]
)
end
end
end
end

0 comments on commit 4354c1e

Please sign in to comment.