Add support for provider selection (#346)

This commit is contained in:
soky srm
2025-11-17 18:13:20 +01:00
committed by GitHub
parent 0290ed636f
commit 0d798c522a
8 changed files with 109 additions and 15 deletions

View File

@@ -3,7 +3,7 @@ module ExchangeRate::Provided
class_methods do
def provider
provider = ENV["EXCHANGE_RATE_PROVIDER"] || "twelve_data"
provider = ENV["EXCHANGE_RATE_PROVIDER"].presence || Setting.exchange_rate_provider
registry = Provider::Registry.for_concept(:exchange_rates)
registry.get_provider(provider.to_sym)
end

View File

@@ -5,7 +5,7 @@ module Security::Provided
class_methods do
def provider
provider = ENV["SECURITIES_PROVIDER"] || "twelve_data"
provider = ENV["SECURITIES_PROVIDER"].presence || Setting.securities_provider
registry = Provider::Registry.for_concept(:securities)
registry.get_provider(provider.to_sym)
end

View File

@@ -11,6 +11,10 @@ class Setting < RailsSettings::Base
field :openai_model, type: :string, default: ENV["OPENAI_MODEL"]
field :brand_fetch_client_id, type: :string, default: ENV["BRAND_FETCH_CLIENT_ID"]
# Provider selection
field :exchange_rate_provider, type: :string, default: ENV.fetch("EXCHANGE_RATE_PROVIDER", "twelve_data")
field :securities_provider, type: :string, default: ENV.fetch("SECURITIES_PROVIDER", "twelve_data")
# Dynamic fields are now stored as individual entries with "dynamic:" prefix
# This prevents race conditions and ensures each field is independently managed