add collection counts endpoint
This commit is contained in:
parent
5da86c5405
commit
7222353d29
2 changed files with 35 additions and 0 deletions
34
app/controllers/api/v1/collection_controller.rb
Normal file
34
app/controllers/api/v1/collection_controller.rb
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
module Api
|
||||||
|
module V1
|
||||||
|
class CollectionController < ApiController
|
||||||
|
before_action :set_target_user
|
||||||
|
before_action :check_collection_access
|
||||||
|
|
||||||
|
# GET /api/v1/users/:user_id/collection/counts
|
||||||
|
# Returns total counts for all collection entity types
|
||||||
|
def counts
|
||||||
|
render json: {
|
||||||
|
characters: @target_user.collection_characters.count,
|
||||||
|
weapons: @target_user.collection_weapons.count,
|
||||||
|
summons: @target_user.collection_summons.count,
|
||||||
|
artifacts: @target_user.collection_artifacts.count
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def set_target_user
|
||||||
|
@target_user = User.find(params[:user_id])
|
||||||
|
rescue ActiveRecord::RecordNotFound
|
||||||
|
render json: { error: "User not found" }, status: :not_found
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_collection_access
|
||||||
|
return if @target_user.nil?
|
||||||
|
unless @target_user.collection_viewable_by?(current_user)
|
||||||
|
render json: { error: "You do not have permission to view this collection" }, status: :forbidden
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -250,6 +250,7 @@ Rails.application.routes.draw do
|
||||||
# Reading collections - works for any user with privacy check
|
# Reading collections - works for any user with privacy check
|
||||||
scope 'users/:user_id' do
|
scope 'users/:user_id' do
|
||||||
namespace :collection do
|
namespace :collection do
|
||||||
|
get :counts, controller: '/api/v1/collection'
|
||||||
resources :characters, only: [:index, :show], controller: '/api/v1/collection_characters'
|
resources :characters, only: [:index, :show], controller: '/api/v1/collection_characters'
|
||||||
resources :weapons, only: [:index, :show], controller: '/api/v1/collection_weapons'
|
resources :weapons, only: [:index, :show], controller: '/api/v1/collection_weapons'
|
||||||
resources :summons, only: [:index, :show], controller: '/api/v1/collection_summons'
|
resources :summons, only: [:index, :show], controller: '/api/v1/collection_summons'
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue