Add featured tags API (#11778)
* Add featured tags API * Remove show and update, change scope, fix code style
This commit is contained in:
		
							parent
							
								
									a75009a65e
								
							
						
					
					
						commit
						9c9dcf580a
					
				
					 4 changed files with 75 additions and 0 deletions
				
			
		| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Api::V1::FeaturedTags::SuggestionsController < Api::BaseController
 | 
				
			||||||
 | 
					  before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, only: :index
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  before_action :require_user!
 | 
				
			||||||
 | 
					  before_action :set_most_used_tags, only: :index
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  respond_to :json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def index
 | 
				
			||||||
 | 
					    render json: @most_used_tags, each_serializer: REST::TagSerializer
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def set_most_used_tags
 | 
				
			||||||
 | 
					    @most_used_tags = Tag.most_used(current_account).where.not(id: current_account.featured_tags).limit(10)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										40
									
								
								app/controllers/api/v1/featured_tags_controller.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								app/controllers/api/v1/featured_tags_controller.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,40 @@
 | 
				
			||||||
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Api::V1::FeaturedTagsController < Api::BaseController
 | 
				
			||||||
 | 
					  before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, only: :index
 | 
				
			||||||
 | 
					  before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, except: :index
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  before_action :require_user!
 | 
				
			||||||
 | 
					  before_action :set_featured_tags, only: :index
 | 
				
			||||||
 | 
					  before_action :set_featured_tag, except: [:index, :create]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def index
 | 
				
			||||||
 | 
					    render json: @featured_tags, each_serializer: REST::FeaturedTagSerializer
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def create
 | 
				
			||||||
 | 
					    @featured_tag = current_account.featured_tags.new(featured_tag_params)
 | 
				
			||||||
 | 
					    @featured_tag.reset_data
 | 
				
			||||||
 | 
					    @featured_tag.save!
 | 
				
			||||||
 | 
					    render json: @featured_tag, serializer: REST::FeaturedTagSerializer
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def destroy
 | 
				
			||||||
 | 
					    @featured_tag.destroy!
 | 
				
			||||||
 | 
					    render_empty
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def set_featured_tag
 | 
				
			||||||
 | 
					    @featured_tag = current_account.featured_tags.find(params[:id])
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def set_featured_tags
 | 
				
			||||||
 | 
					    @featured_tags = current_account.featured_tags.order(statuses_count: :desc)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def featured_tag_params
 | 
				
			||||||
 | 
					    params.permit(:name)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										9
									
								
								app/serializers/rest/featured_tag_serializer.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								app/serializers/rest/featured_tag_serializer.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class REST::FeaturedTagSerializer < ActiveModel::Serializer
 | 
				
			||||||
 | 
					  attributes :id, :name, :statuses_count, :last_status_at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def id
 | 
				
			||||||
 | 
					    object.id.to_s
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -380,6 +380,12 @@ Rails.application.routes.draw do
 | 
				
			||||||
        resource :accounts, only: [:show, :create, :destroy], controller: 'lists/accounts'
 | 
					        resource :accounts, only: [:show, :create, :destroy], controller: 'lists/accounts'
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      namespace :featured_tags do
 | 
				
			||||||
 | 
					        get :suggestions, to: 'suggestions#index'
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      resources :featured_tags, only: [:index, :create, :destroy]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      resources :polls, only: [:create, :show] do
 | 
					      resources :polls, only: [:create, :show] do
 | 
				
			||||||
        resources :votes, only: :create, controller: 'polls/votes'
 | 
					        resources :votes, only: :create, controller: 'polls/votes'
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue