Я пытаюсь создать систему, в которой я вызываю метод в отдельном модуле от моего класса, который выполняет запрос SQL на основе строки в этом модуле.Так, например, сейчас я делаю вызов в своем классе WhLoan следующим образом:
Класс WhLoan
qm_code = WhQueryHelper.sql_query(:qm_code)
, который выполняет вызов метода в моемМодуль WhQueryHelper, который содержит строки, которые должны быть выполнены как оператор SQL, в зависимости от того, что было передано, в моем случае это символ.Как это разобраться в моем модуле WhQueryHelper, можно увидеть ниже:
Модуль WhQueryHelper
QUALIFIED_MORTGAGE_TYPE_QUERY = "
SELECT
[LoanNum] AS loan_number,
[QM_Code] AS qualified_mortgage_type
FROM
[clg_strategy].[dbo].[QM_Codes] (NOLOCK)
"
def self.sql_query(q_sym)
conn = Apollo::SqlServer.get_connection(CONFIG_PREFIX)
qs = self.map_to_query_string(q_sym)
res = conn.execute(qs).to_a
conn.close if conn && conn.active?
res.empty? ? nil : res
end
def self.map_to_query_string(q_sym)
qs = ""
case q_sym
when :lock_type
qs = LOCK_TYPE_QUERY
when :home_indicators
qs = HOME_INDICATORS_QUERY
when :hpm_indicator
qs = HIGHER_PRICED_MORTGAGE_INDICATOR_QUERY
when :qm_code
qs = QUALIFIED_MORTGAGE_TYPE_QUERY
when :db_eligibility
qs = APPLICANT_INCOME_PERCENT_OF_MEDIAN_QUERY
when :corr_tnw_amount
qs = CORRESPONDENT_TOTAL_NET_WORTH_AMOUNT_QUERY
else
raise "not a valid q_sym passed from #{caller[0]}"
qs
end
end
TLDR По сути, сейчас я простопередать символ методу в отдельном модуле, где этот символ затем проходит через оператор case, чтобы увидеть, с какой строкой в этом модуле он соотносится, и затем я запускаю эту строку как оператор SQL.Как можно улучшить этот жизненный цикл, чтобы в моем классе WhLoan можно было создать множество отдельных переменных, которые могут вызывать модуль WhQueryHelper для получения правильного возвращаемого значения оператора SQL?