Skip to content

Commit 78dfd2d

Browse files
authored
Merge pull request #745 from quran/QF-3726
Add default_locale_language and qr_default_locale_language
2 parents f4709f2 + 27fcb93 commit 78dfd2d

File tree

6 files changed

+57
-2
lines changed

6 files changed

+57
-2
lines changed

app/controllers/api/qdc/resources_controller.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@ def build_preference_data(preference)
215215
ResourceContent.where(id: qr_ids).approved.includes(:translated_name) : [],
216216
default_tafsir: preference.tafsir&.approved? ? preference.tafsir : nil,
217217
default_wbw_language: preference.wbw_language,
218+
default_locale: preference.default_locale_language,
219+
qr_default_locale: preference.qr_default_locale_language,
218220
default_reciter: preference.audio_recitation,
219221
ayah_reflections_languages: Language.where(iso_code: preference.ayah_reflections_languages&.split(',') || []),
220222
qr_reflection_languages: Language.where(iso_code: preference.qr_reflection_languages&.split(',') || []),

app/models/country_language_preference.rb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,20 @@ class CountryLanguagePreference < ApplicationRecord
3434
belongs_to :wbw_language, class_name: 'Language', foreign_key: :default_wbw_language, primary_key: :iso_code, optional: true
3535
belongs_to :mushaf, foreign_key: :default_mushaf_id, optional: true
3636
belongs_to :tafsir, class_name: 'ResourceContent', foreign_key: :default_tafsir_id, optional: true
37+
belongs_to :default_locale_language, class_name: 'Language', foreign_key: :default_locale, primary_key: :iso_code, optional: true
38+
belongs_to :qr_default_locale_language, class_name: 'Language', foreign_key: :qr_default_locale, primary_key: :iso_code, optional: true
3739

3840
validates :user_device_language, presence: true
3941

4042
scope :with_includes, -> {
41-
includes(:audio_recitation, :language, :wbw_language, :mushaf, :tafsir)
43+
includes(
44+
:audio_recitation,
45+
:language,
46+
:wbw_language,
47+
:mushaf,
48+
:tafsir,
49+
:default_locale_language,
50+
:qr_default_locale_language
51+
)
4252
}
4353
end

app/views/api/qdc/resources/country_language_preference.json.streamer

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ json.object! do
5959
json.default_wbw_language nil
6060
end
6161

62+
json.default_locale @data[:default_locale]&.iso_code
63+
64+
json.qr_default_locale @data[:qr_default_locale]&.iso_code
65+
6266
if @data[:default_reciter]
6367
json.default_reciter do
6468
json.object! do
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class AddLocaleFieldsToCountryLanguagePreferences < ActiveRecord::Migration[7.0]
2+
def change
3+
add_column :country_language_preferences, :default_locale, :string
4+
add_column :country_language_preferences, :qr_default_locale, :string
5+
6+
add_foreign_key :country_language_preferences,
7+
:languages,
8+
column: :default_locale,
9+
primary_key: :iso_code,
10+
on_delete: :cascade
11+
12+
add_foreign_key :country_language_preferences,
13+
:languages,
14+
column: :qr_default_locale,
15+
primary_key: :iso_code,
16+
on_delete: :cascade
17+
end
18+
end

db/schema.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#
1111
# It's strongly recommended that you check this file into your version control system.
1212

13-
ActiveRecord::Schema[7.0].define(version: 2025_10_14_122032) do
13+
ActiveRecord::Schema[7.0].define(version: 2025_10_14_122033) do
1414
# These are extensions that must be enabled in order to support this database
1515
enable_extension "plpgsql"
1616

@@ -357,6 +357,8 @@
357357
t.string "qr_default_translations_ids"
358358
t.string "qr_reflection_languages"
359359
t.string "qr_default_arabic_fonts"
360+
t.string "default_locale"
361+
t.string "qr_default_locale"
360362
end
361363

362364
create_table "data_sources", id: :serial, force: :cascade do |t|
@@ -1658,7 +1660,9 @@
16581660
add_foreign_key "chapter_metadata", "languages"
16591661
add_foreign_key "char_type", "char_type", column: "parent_id", primary_key: "char_type_id", name: "char_type_parent_id_fkey", on_update: :cascade, on_delete: :nullify
16601662
add_foreign_key "country_language_preferences", "audio_recitations", column: "default_reciter", on_delete: :cascade
1663+
add_foreign_key "country_language_preferences", "languages", column: "default_locale", primary_key: "iso_code", on_delete: :cascade
16611664
add_foreign_key "country_language_preferences", "languages", column: "default_wbw_language", primary_key: "iso_code", on_delete: :cascade
1665+
add_foreign_key "country_language_preferences", "languages", column: "qr_default_locale", primary_key: "iso_code", on_delete: :cascade
16621666
add_foreign_key "country_language_preferences", "languages", column: "user_device_language", primary_key: "iso_code", on_delete: :cascade
16631667
add_foreign_key "country_language_preferences", "mushafs", column: "default_mushaf_id", on_delete: :cascade
16641668
add_foreign_key "country_language_preferences", "resource_contents", column: "default_tafsir_id", on_delete: :cascade

spec/requests/api/qdc/resources_country_language_preference_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,22 @@
7373
json = JSON.parse(response.body)
7474
expect(json['qr_default_arabic_fonts']).to eq([1, 2, 3])
7575
end
76+
77+
it 'includes default_locale and qr_default_locale when present' do
78+
pref_with_locales = CountryLanguagePreference.create!(
79+
user_device_language: 'xx',
80+
country: 'DE',
81+
default_locale: 'xx',
82+
qr_default_locale: 'zz'
83+
)
84+
85+
get '/api/qdc/resources/country_language_preference', params: { user_device_language: 'xx', country: 'DE' }
86+
87+
expect(response).to have_http_status(:ok)
88+
json = JSON.parse(response.body)
89+
90+
expect(json.dig('default_locale', 'iso_code')).to eq('xx')
91+
expect(json.dig('qr_default_locale', 'iso_code')).to eq('zz')
92+
end
7693
end
7794
end

0 commit comments

Comments
 (0)