VRFS-3681 fixed artist pagination
This commit is contained in:
parent
1fe20d6c2b
commit
61e93b7d1d
|
|
@ -19,6 +19,7 @@ module JamRuby
|
|||
KEY_GENRES = 'genres'
|
||||
KEY_INSTRUMENTS = 'instruments'
|
||||
KEY_LANGUAGE = 'language'
|
||||
KEY_ORIGINAL_ARTIST = 'original_artist'
|
||||
|
||||
def self.json_schema
|
||||
return @@jschema ||= {
|
||||
|
|
@ -27,6 +28,7 @@ module JamRuby
|
|||
KEY_INSTRUMENTS => [],
|
||||
KEY_GENRES => [],
|
||||
KEY_LANGUAGE => '',
|
||||
KEY_ORIGINAL_ARTIST => '',
|
||||
KEY_RESULT_TYPES => [],
|
||||
KEY_PAGE_NUM => 1,
|
||||
KEY_PER_PAGE => PER_PAGE,
|
||||
|
|
@ -77,6 +79,10 @@ module JamRuby
|
|||
end
|
||||
end
|
||||
|
||||
unless (artist_name = query[KEY_ORIGINAL_ARTIST]).blank?
|
||||
rel = rel.where(original_artist: artist_name)
|
||||
end
|
||||
|
||||
rel
|
||||
end
|
||||
|
||||
|
|
@ -90,7 +96,7 @@ module JamRuby
|
|||
else
|
||||
has_songs, has_artists = true, true
|
||||
end
|
||||
result_sets = filter[KEY_RESULT_SETS] = self.class.json_schema[KEY_RESULT_SETS]
|
||||
result_sets = filter[KEY_RESULT_SETS] = self.class.json_schema[KEY_RESULT_SETS].clone
|
||||
if has_songs
|
||||
rel = do_search(query)
|
||||
unless (val = query[KEY_SEARCH_STR]).blank?
|
||||
|
|
@ -123,10 +129,12 @@ module JamRuby
|
|||
|
||||
if has_artists
|
||||
rel = do_search(query)
|
||||
counter = rel.select("DISTINCT(jam_tracks.original_artist)")
|
||||
rel = rel.select("DISTINCT ON(jam_tracks.original_artist) jam_tracks.id, jam_tracks.original_artist")
|
||||
|
||||
unless (val = query[KEY_SEARCH_STR]).blank?
|
||||
rel = rel.where("original_artist LIKE ?","%#{val}%")
|
||||
counter = counter.and(rel)
|
||||
end
|
||||
rel = rel.order(:original_artist)
|
||||
|
||||
|
|
@ -136,12 +144,14 @@ module JamRuby
|
|||
results = rel.all.collect do |jt|
|
||||
{ 'id' => jt.id, 'artist' => jt.original_artist }
|
||||
end
|
||||
|
||||
artist_count = counter.count
|
||||
|
||||
result_sets[KEY_ARTISTS] = {
|
||||
KEY_RESULTS => results,
|
||||
KEY_PAGE_NUM => pgnum,
|
||||
KEY_TOTAL_COUNT => rel.total_entries,
|
||||
KEY_PAGE_COUNT => rel.total_pages,
|
||||
KEY_TOTAL_COUNT => artist_count,
|
||||
KEY_PAGE_COUNT => (artist_count / query[KEY_PER_PAGE].to_f).ceil,
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue