|
- class WikiPagesController < ApplicationController
- def show
- wiki_page = WikiPage.find(params[:id])
- return head :not_found unless wiki_page
-
- render json: wiki_page.as_json.merge(body: wiki_page.body)
- end
-
- def show_by_title
- wiki_page = WikiPage.find_by(title: params[:title])
- return head :not_found unless wiki_page
-
- render json: wiki_page.as_json.merge(body: wiki_page.body)
- end
-
- def create
- return head :unauthorized unless current_user
- return head :forbidden unless ['admin', 'member'].include?(current_user.role)
-
- wiki_page = WikiPage.new(title: params[:title], created_user: current_user, updated_user: current_user)
- if wiki_page.save
- wiki_page.set_body params[:body], user: current_user
- render json: wiki_page, status: :created
- else
- render json: { errors: wiki_page.errors.full_messages }, status: :unprocessable_entity
- end
- end
-
- def update
- return head :unauthorized unless current_user
- return head :forbidden unless ['admin', 'member'].include?(current_user.role)
-
- wiki_page = WikiPage.find(params[:id])
- return head :not_found unless wiki_page
-
- wiki_page.updated_user = current_user
- wiki_page.set_body params[:body], user: current_user
- wiki_page.save!
- head :ok
- end
-
- def search
- q = WikiPage.all
-
- if params[:title].present?
- title = params[:title].to_s.strip
- q = q.where('title LIKE ?', "%#{ WikiPage.sanitize_sql_like(title) }%")
- end
-
- render json: q.limit(20)
- end
- end
|