このコミットが含まれているのは:
@@ -0,0 +1,49 @@
|
||||
class MaterialVersionsController < ApplicationController
|
||||
def index
|
||||
page = (params[:page].presence || 1).to_i
|
||||
limit = (params[:limit].presence || 20).to_i
|
||||
|
||||
page = 1 if page < 1
|
||||
limit = 1 if limit < 1
|
||||
|
||||
offset = (page - 1) * limit
|
||||
|
||||
q = MaterialVersion.includes(:created_by_user)
|
||||
q = q.where(material_id: params[:material_id]) if params[:material_id].present?
|
||||
q = q.where(tag_name: params[:tag].to_s.strip) if params[:tag].present?
|
||||
q = q.where(event_type: params[:event_type]) if params[:event_type].present?
|
||||
|
||||
count = q.except(:order, :limit, :offset).count
|
||||
versions =
|
||||
q
|
||||
.order(Arel.sql('material_versions.created_at DESC, material_versions.id DESC'))
|
||||
.limit(limit)
|
||||
.offset(offset)
|
||||
|
||||
render json: { versions: serialise_versions(versions), count: }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def serialise_versions rows
|
||||
rows.map do |row|
|
||||
{ id: row.id,
|
||||
material_id: row.material_id,
|
||||
version_no: row.version_no,
|
||||
event_type: row.event_type,
|
||||
tag_id: row.tag_id,
|
||||
tag_name: row.tag_name,
|
||||
tag_category: row.tag_category,
|
||||
url: row.url,
|
||||
file_blob_id: row.file_blob_id,
|
||||
file_filename: row.file_filename,
|
||||
file_content_type: row.file_content_type,
|
||||
file_byte_size: row.file_byte_size,
|
||||
file_sha256: row.file_sha256,
|
||||
export_paths_json: row.export_paths_hash,
|
||||
discarded_at: row.discarded_at,
|
||||
created_by_user: row.created_by_user&.as_json(UserRepr::BASE),
|
||||
created_at: row.created_at }
|
||||
end
|
||||
end
|
||||
end
|
||||
新しい課題から参照
ユーザをブロックする