26 lines
783 B
Ruby
26 lines
783 B
Ruby
module Api
|
|
module PodcastEpisodesController
|
|
extend ActiveSupport::Concern
|
|
|
|
def index
|
|
page = params[:page]
|
|
per_page = (params[:per_page] || 30).to_i
|
|
per_page_max = (ApplicationConfig["API_PER_PAGE_MAX"] || 1000).to_i
|
|
num = [per_page, per_page_max].min
|
|
|
|
if params[:username]
|
|
podcast = Podcast.available.find_by!(slug: params[:username])
|
|
relation = podcast.podcast_episodes.reachable
|
|
else
|
|
relation = PodcastEpisode.includes(:podcast).reachable
|
|
end
|
|
|
|
@podcast_episodes = relation
|
|
.select(:id, :slug, :title, :podcast_id)
|
|
.order(published_at: :desc)
|
|
.page(page).per(num)
|
|
|
|
set_surrogate_key_header PodcastEpisode.table_key, @podcast_episodes.map(&:record_key)
|
|
end
|
|
end
|
|
end
|