mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-02-06 06:56:54 +08:00
Created new controllers and serializers for nested task related attributes
This commit is contained in:
parent
2d3f5f2377
commit
bad07841da
14 changed files with 430 additions and 0 deletions
59
app/controllers/api/v1/activities_controller.rb
Normal file
59
app/controllers/api/v1/activities_controller.rb
Normal file
|
@ -0,0 +1,59 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class ActivitiesController < BaseController
|
||||
before_action :load_team
|
||||
before_action :load_project
|
||||
before_action :load_experiment
|
||||
before_action :load_task
|
||||
before_action :load_activity, only: :show
|
||||
|
||||
def index
|
||||
activities = @my_module.activities
|
||||
.page(params.dig(:page, :number))
|
||||
.per(params.dig(:page, :size))
|
||||
|
||||
render jsonapi: activities,
|
||||
each_serializer: ActivitySerializer
|
||||
end
|
||||
|
||||
def show
|
||||
render jsonapi: @activity, serializer: ActivitySerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_team
|
||||
@team = Team.find(params.require(:team_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
|
||||
end
|
||||
|
||||
def load_project
|
||||
@project = @team.projects.find(params.require(:project_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_project?(
|
||||
@project
|
||||
)
|
||||
end
|
||||
|
||||
def load_experiment
|
||||
@experiment = @project.experiments.find(params.require(:experiment_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
|
||||
@experiment
|
||||
)
|
||||
end
|
||||
|
||||
def load_task
|
||||
@my_module = @experiment.my_modules.find(params.require(:task_id))
|
||||
render jsonapi: {}, status: :not_found if @my_module.nil?
|
||||
end
|
||||
|
||||
def load_activity
|
||||
@activity = @my_module.activities.find(
|
||||
params.require(:id)
|
||||
)
|
||||
render jsonapi: {}, status: :not_found if @activity.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,59 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class MyModuleRepositoryRowsController < BaseController
|
||||
before_action :load_team
|
||||
before_action :load_project
|
||||
before_action :load_experiment
|
||||
before_action :load_task
|
||||
before_action :load_task_repository_row, only: :show
|
||||
|
||||
def index
|
||||
repo_rows = @my_module.my_module_repository_rows
|
||||
.page(params.dig(:page, :number))
|
||||
.per(params.dig(:page, :size))
|
||||
|
||||
render jsonapi: repo_rows,
|
||||
each_serializer: MyModuleRepositoryRowSerializer
|
||||
end
|
||||
|
||||
def show
|
||||
render jsonapi: @repo_row, serializer: MyModuleRepositoryRowSerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_team
|
||||
@team = Team.find(params.require(:team_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
|
||||
end
|
||||
|
||||
def load_project
|
||||
@project = @team.projects.find(params.require(:project_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_project?(
|
||||
@project
|
||||
)
|
||||
end
|
||||
|
||||
def load_experiment
|
||||
@experiment = @project.experiments.find(params.require(:experiment_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
|
||||
@experiment
|
||||
)
|
||||
end
|
||||
|
||||
def load_task
|
||||
@my_module = @experiment.my_modules.find(params.require(:task_id))
|
||||
render jsonapi: {}, status: :not_found if @my_module.nil?
|
||||
end
|
||||
|
||||
def load_task_repository_row
|
||||
@repo_row = @my_module.my_module_repository_rows.find(
|
||||
params.require(:id)
|
||||
)
|
||||
render jsonapi: {}, status: :not_found if @repo_row.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
59
app/controllers/api/v1/my_module_tags_controller.rb
Normal file
59
app/controllers/api/v1/my_module_tags_controller.rb
Normal file
|
@ -0,0 +1,59 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class MyModuleTagsController < BaseController
|
||||
before_action :load_team
|
||||
before_action :load_project
|
||||
before_action :load_experiment
|
||||
before_action :load_task
|
||||
before_action :load_task_repository_row, only: :show
|
||||
|
||||
def index
|
||||
task_tags = @my_module.my_module_tags
|
||||
.page(params.dig(:page, :number))
|
||||
.per(params.dig(:page, :size))
|
||||
|
||||
render jsonapi: task_tags,
|
||||
each_serializer: MyModuleTagSerializer
|
||||
end
|
||||
|
||||
def show
|
||||
render jsonapi: @task_tag, serializer: MyModuleTagSerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_team
|
||||
@team = Team.find(params.require(:team_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
|
||||
end
|
||||
|
||||
def load_project
|
||||
@project = @team.projects.find(params.require(:project_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_project?(
|
||||
@project
|
||||
)
|
||||
end
|
||||
|
||||
def load_experiment
|
||||
@experiment = @project.experiments.find(params.require(:experiment_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
|
||||
@experiment
|
||||
)
|
||||
end
|
||||
|
||||
def load_task
|
||||
@my_module = @experiment.my_modules.find(params.require(:task_id))
|
||||
render jsonapi: {}, status: :not_found if @my_module.nil?
|
||||
end
|
||||
|
||||
def load_task_repository_row
|
||||
@task_tag = @my_module.my_module_tags.find(
|
||||
params.require(:id)
|
||||
)
|
||||
render jsonapi: {}, status: :not_found if @task_tag.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
59
app/controllers/api/v1/protocols_controller.rb
Normal file
59
app/controllers/api/v1/protocols_controller.rb
Normal file
|
@ -0,0 +1,59 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class ProtocolsController < BaseController
|
||||
before_action :load_team
|
||||
before_action :load_project
|
||||
before_action :load_experiment
|
||||
before_action :load_task
|
||||
before_action :load_protocol, only: :show
|
||||
|
||||
def index
|
||||
protocols = @my_module.protocols
|
||||
.page(params.dig(:page, :number))
|
||||
.per(params.dig(:page, :size))
|
||||
|
||||
render jsonapi: protocols,
|
||||
each_serializer: ProtocolSerializer
|
||||
end
|
||||
|
||||
def show
|
||||
render jsonapi: @protocol, serializer: ProtocolSerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_team
|
||||
@team = Team.find(params.require(:team_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
|
||||
end
|
||||
|
||||
def load_project
|
||||
@project = @team.projects.find(params.require(:project_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_project?(
|
||||
@project
|
||||
)
|
||||
end
|
||||
|
||||
def load_experiment
|
||||
@experiment = @project.experiments.find(params.require(:experiment_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
|
||||
@experiment
|
||||
)
|
||||
end
|
||||
|
||||
def load_task
|
||||
@my_module = @experiment.my_modules.find(params.require(:task_id))
|
||||
render jsonapi: {}, status: :not_found if @my_module.nil?
|
||||
end
|
||||
|
||||
def load_protocol
|
||||
@protocol = @my_module.protocols.find(
|
||||
params.require(:id)
|
||||
)
|
||||
render jsonapi: {}, status: :not_found if @protocol.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
59
app/controllers/api/v1/results_controller.rb
Normal file
59
app/controllers/api/v1/results_controller.rb
Normal file
|
@ -0,0 +1,59 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class ResultsController < BaseController
|
||||
before_action :load_team
|
||||
before_action :load_project
|
||||
before_action :load_experiment
|
||||
before_action :load_task
|
||||
before_action :load_result, only: :show
|
||||
|
||||
def index
|
||||
results = @my_module.results
|
||||
.page(params.dig(:page, :number))
|
||||
.per(params.dig(:page, :size))
|
||||
|
||||
render jsonapi: results,
|
||||
each_serializer: ResultSerializer
|
||||
end
|
||||
|
||||
def show
|
||||
render jsonapi: @result, serializer: ResultSerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_team
|
||||
@team = Team.find(params.require(:team_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
|
||||
end
|
||||
|
||||
def load_project
|
||||
@project = @team.projects.find(params.require(:project_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_project?(
|
||||
@project
|
||||
)
|
||||
end
|
||||
|
||||
def load_experiment
|
||||
@experiment = @project.experiments.find(params.require(:experiment_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
|
||||
@experiment
|
||||
)
|
||||
end
|
||||
|
||||
def load_task
|
||||
@my_module = @experiment.my_modules.find(params.require(:task_id))
|
||||
render jsonapi: {}, status: :not_found if @my_module.nil?
|
||||
end
|
||||
|
||||
def load_result
|
||||
@result = @my_module.results.find(
|
||||
params.require(:id)
|
||||
)
|
||||
render jsonapi: {}, status: :not_found if @result.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
59
app/controllers/api/v1/user_my_modules_controller.rb
Normal file
59
app/controllers/api/v1/user_my_modules_controller.rb
Normal file
|
@ -0,0 +1,59 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class UserMyModulesController < BaseController
|
||||
before_action :load_team
|
||||
before_action :load_project
|
||||
before_action :load_experiment
|
||||
before_action :load_task
|
||||
before_action :load_user_task, only: :show
|
||||
|
||||
def index
|
||||
user_tasks = @my_module.user_my_modules
|
||||
.page(params.dig(:page, :number))
|
||||
.per(params.dig(:page, :size))
|
||||
|
||||
render jsonapi: user_tasks,
|
||||
each_serializer: UserMyModuleSerializer
|
||||
end
|
||||
|
||||
def show
|
||||
render jsonapi: @user_task, serializer: UserMyModuleSerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_team
|
||||
@team = Team.find(params.require(:team_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_team?(@team)
|
||||
end
|
||||
|
||||
def load_project
|
||||
@project = @team.projects.find(params.require(:project_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_project?(
|
||||
@project
|
||||
)
|
||||
end
|
||||
|
||||
def load_experiment
|
||||
@experiment = @project.experiments.find(params.require(:experiment_id))
|
||||
render jsonapi: {}, status: :forbidden unless can_read_experiment?(
|
||||
@experiment
|
||||
)
|
||||
end
|
||||
|
||||
def load_task
|
||||
@my_module = @experiment.my_modules.find(params.require(:task_id))
|
||||
render jsonapi: {}, status: :not_found if @my_module.nil?
|
||||
end
|
||||
|
||||
def load_user_task
|
||||
@user_task = @my_module.user_my_modules.find(
|
||||
params.require(:id)
|
||||
)
|
||||
render jsonapi: {}, status: :not_found if @user_task.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
12
app/serializers/api/v1/activity_serializer.rb
Normal file
12
app/serializers/api/v1/activity_serializer.rb
Normal file
|
@ -0,0 +1,12 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class ActivitySerializer < ActiveModel::Serializer
|
||||
type :activities
|
||||
attributes :id, :my_module_id, :user_id, :type_of, :message, :created_at,
|
||||
:updated_at, :project_id, :experiment_id
|
||||
belongs_to :my_module, serializer: MyModuleSerializer
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,12 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class MyModuleRepositoryRowSerializer < ActiveModel::Serializer
|
||||
type :task_inventory_rows
|
||||
attributes :id, :repository_row_id, :my_module_id, :assigned_by_id,
|
||||
:created_at, :updated_at
|
||||
belongs_to :my_module, serializer: MyModuleSerializer
|
||||
end
|
||||
end
|
||||
end
|
11
app/serializers/api/v1/my_module_tag_serializer.rb
Normal file
11
app/serializers/api/v1/my_module_tag_serializer.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class MyModuleTagSerializer < ActiveModel::Serializer
|
||||
type :task_tags
|
||||
attributes :id, :my_module_id, :tag_id, :created_by_id
|
||||
belongs_to :my_module, serializer: MyModuleSerializer
|
||||
end
|
||||
end
|
||||
end
|
15
app/serializers/api/v1/protocol_serializer.rb
Normal file
15
app/serializers/api/v1/protocol_serializer.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class ProtocolSerializer < ActiveModel::Serializer
|
||||
type :protocols
|
||||
attributes :id, :name, :authors, :description, :added_by_id,
|
||||
:my_module_id, :team_id, :protocol_type, :parent_id,
|
||||
:parent_updated_at, :archived_by_id, :archived_on,
|
||||
:restored_by_id, :restored_on, :created_at, :updated_at,
|
||||
:published_on, :nr_of_linked_children
|
||||
belongs_to :my_module, serializer: MyModuleSerializer
|
||||
end
|
||||
end
|
||||
end
|
14
app/serializers/api/v1/result_serializer.rb
Normal file
14
app/serializers/api/v1/result_serializer.rb
Normal file
|
@ -0,0 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class ResultSerializer < ActiveModel::Serializer
|
||||
type :results
|
||||
attributes :id, :name, :my_module_id, :user_id, :created_at, :updated_at,
|
||||
:archived, :archived_on, :last_modified_by_id, :archived_by_id,
|
||||
:restored_by_id, :restored_on
|
||||
|
||||
belongs_to :my_module, serializer: MyModuleSerializer
|
||||
end
|
||||
end
|
||||
end
|
12
app/serializers/api/v1/user_my_module_serializer.rb
Normal file
12
app/serializers/api/v1/user_my_module_serializer.rb
Normal file
|
@ -0,0 +1,12 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
module V1
|
||||
class UserMyModuleSerializer < ActiveModel::Serializer
|
||||
type :user_tasks
|
||||
attributes :id, :user_id, :my_module_id, :created_at,
|
||||
:updated_at, :assigned_by_id
|
||||
belongs_to :my_module, serializer: MyModuleSerializer
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue