mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-24 08:09:13 -05:00
850b042cab
under rack cache we are able to serve 620reqs a second per thin (on my machine) before it 12 (on my machine) reorganised so mini profilers can be cleanly disabled from config file added caching for categories index move production.rb to production.sample.rb
57 lines
1.4 KiB
Ruby
57 lines
1.4 KiB
Ruby
require_dependency 'category_serializer'
|
|
|
|
class CategoriesController < ApplicationController
|
|
|
|
before_filter :ensure_logged_in, except: [:index, :show]
|
|
|
|
def index
|
|
list = CategoryList.new(current_user)
|
|
discourse_expires_in 1.minute
|
|
render_serialized(list, CategoryListSerializer)
|
|
end
|
|
|
|
def show
|
|
@category = Category.where(slug: params[:id]).first
|
|
render_serialized(@category, CategorySerializer)
|
|
end
|
|
|
|
def create
|
|
requires_parameters(*required_param_keys)
|
|
guardian.ensure_can_create!(Category)
|
|
|
|
@category = Category.create(category_params.merge(user: current_user))
|
|
return render_json_error(@category) unless @category.save
|
|
|
|
render_serialized(@category, CategorySerializer)
|
|
end
|
|
|
|
def update
|
|
requires_parameters(*required_param_keys)
|
|
|
|
@category = Category.where(id: params[:id]).first
|
|
guardian.ensure_can_edit!(@category)
|
|
|
|
json_result(@category, serializer: CategorySerializer) { |cat| cat.update_attributes(category_params) }
|
|
end
|
|
|
|
def destroy
|
|
category = Category.where(slug: params[:id]).first
|
|
guardian.ensure_can_delete!(category)
|
|
category.destroy
|
|
render nothing: true
|
|
end
|
|
|
|
private
|
|
|
|
def required_param_keys
|
|
[:name, :color, :text_color]
|
|
end
|
|
|
|
def category_param_keys
|
|
[required_param_keys, :hotness].flatten!
|
|
end
|
|
|
|
def category_params
|
|
params.slice(*category_param_keys)
|
|
end
|
|
end
|