Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions app/finders/verse_finder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ def load_verses(language_code)
load_translations
load_words(language_code)
load_audio
load_tafsirs # ← add this line

translations_order = params[:translations].present? ? ',translations.priority ASC' : ''

@results.order("verses.verse_index ASC, words.position ASC, word_translations.priority ASC #{translations_order}".strip)
Expand Down Expand Up @@ -84,6 +86,23 @@ def load_audio
end
end

# Load tafsirs that span the current verse (single-ayah OR multi-ayah)
def load_tafsirs
return unless params[:tafsirs].present?

tafsir_ids = Array(params[:tafsirs]).map(&:to_i)

@results = @results
.joins(<<~SQL)
LEFT JOIN tafsirs
ON tafsirs.start_verse_id <= verses.id
AND (tafsirs.end_verse_id IS NULL OR tafsirs.end_verse_id >= verses.id)
SQL
.where(tafsirs: { resource_content_id: tafsir_ids })
.eager_load(:tafsirs)
end


def set_offset
if offset.present?
@results = @results.offset(offset)
Expand Down
4 changes: 2 additions & 2 deletions app/presenters/audio/recitation_presenter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ class Audio::RecitationPresenter < BasePresenter

def recitations
relation = Audio::Recitation
.includes(:recitation_style, :qirat_type, reciter: :translated_name)
.eager_load(reciter: :translated_name)
.includes(:translated_name, :recitation_style, :qirat_type, reciter: :translated_name)
.eager_load(:translated_name, reciter: :translated_name)
.order('priority ASC, language_priority DESC')

eager_load_translated_name filter_recitations(relation)
Expand Down
1 change: 0 additions & 1 deletion app/presenters/verses_presenter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,6 @@ def fetch_tafsirs
approved_tafsirs = ResourceContent
.approved
.tafsirs
.one_verse
.allowed_to_share

params[:tafsirs] = approved_tafsirs
Expand Down
11 changes: 11 additions & 0 deletions spec/apis/v4/chapter_reciters_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
require 'spec_helper'

describe 'Chapter reciters endpoint', type: :api do
context 'when no recitations exist' do
it 'returns an empty list' do
get '/api/v4/resources/chapter_reciters', chapter_id: 1
expect(last_response.status).to eq(200)
expect(Oj.load(last_response.body)['reciters']).to eq([])
end
end
end