50 行
1.5 KiB
Ruby
50 行
1.5 KiB
Ruby
class MaterialSyncSuppressionsController < ApplicationController
|
|
def index
|
|
return head :unauthorized unless current_user
|
|
return head :forbidden unless current_user.gte_member?
|
|
|
|
suppressions =
|
|
MaterialSyncSuppression
|
|
.includes(:created_by_user)
|
|
.order(created_at: :desc, id: :desc)
|
|
|
|
render json: { suppressions: suppressions.map { |s| repr(s) } }
|
|
end
|
|
|
|
def create
|
|
return head :unauthorized unless current_user
|
|
return head :forbidden unless current_user.gte_member?
|
|
|
|
suppression =
|
|
MaterialSyncSuppressionRegistrar.create!(suppression_params,
|
|
created_by_user: current_user)
|
|
|
|
render json: repr(suppression), status: :created
|
|
rescue ActiveRecord::RecordInvalid => e
|
|
render_validation_error e.record
|
|
end
|
|
|
|
private
|
|
|
|
def suppression_params
|
|
params.permit(:source_kind,
|
|
:source_uri,
|
|
:drive_path,
|
|
:drive_file_id,
|
|
:reason)
|
|
end
|
|
|
|
def repr suppression
|
|
{ id: suppression.id,
|
|
source_kind: suppression.source_kind,
|
|
source_uri: suppression.source_uri,
|
|
drive_path: suppression.drive_path,
|
|
drive_file_id: suppression.drive_file_id,
|
|
normalized_source_key: suppression.normalized_source_key,
|
|
reason: suppression.reason,
|
|
created_by_user: suppression.created_by_user&.as_json(UserRepr::BASE),
|
|
created_at: suppression.created_at,
|
|
updated_at: suppression.updated_at }
|
|
end
|
|
end
|