mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-02-23 23:35:00 +08:00
Move refresh reference from controller to model
This commit is contained in:
parent
df8fe20d03
commit
d9690115f8
3 changed files with 22 additions and 15 deletions
|
@ -6,7 +6,6 @@ class MyModuleRepositorySnapshotsController < ApplicationController
|
|||
before_action :load_repository_snapshot, except: %i(create full_view_sidebar select)
|
||||
before_action :check_view_permissions, except: %i(create destroy select)
|
||||
before_action :check_manage_permissions, only: %i(create destroy select)
|
||||
before_action :update_report_references, only: :destroy
|
||||
|
||||
def index_dt
|
||||
@draw = params[:draw].to_i
|
||||
|
@ -99,21 +98,11 @@ class MyModuleRepositorySnapshotsController < ApplicationController
|
|||
repository_snapshot.update!(selected: true)
|
||||
end
|
||||
|
||||
@my_module.update_report_repository_references(params[:repository_id] || repository_snapshot&.id)
|
||||
|
||||
render json: {}
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def update_report_references
|
||||
repository_or_snap_id = @repository_snapshot.original_repository&.id || @repository_snapshot.id
|
||||
default_view_candidate =
|
||||
@my_module.active_snapshot_or_live(repository_or_snap_id, exclude_snpashot_ids: [@repository_snapshot.id])
|
||||
|
||||
@my_module.update_report_repository_references(default_view_candidate.id) if default_view_candidate
|
||||
end
|
||||
|
||||
def load_my_module
|
||||
@my_module = MyModule.find_by(id: params[:my_module_id])
|
||||
render_404 unless @my_module
|
||||
|
|
|
@ -239,9 +239,7 @@ class MyModule < ApplicationRecord
|
|||
.order(updated_at: :desc).first
|
||||
end
|
||||
|
||||
def update_report_repository_references(rep_or_snap_id)
|
||||
rep_or_snap = RepositoryBase.find(rep_or_snap_id)
|
||||
|
||||
def update_report_repository_references(rep_or_snap)
|
||||
ids = if rep_or_snap.is_a?(Repository)
|
||||
RepositorySnapshot.where(parent_id: rep_or_snap.id).pluck(:id)
|
||||
else
|
||||
|
@ -433,7 +431,7 @@ class MyModule < ApplicationRecord
|
|||
rows = repository.assigned_rows(self).includes(:created_by).order(created_at: order)
|
||||
rows.find_each do |row|
|
||||
row_json = []
|
||||
row_json << row.id
|
||||
row_json << (row.repository.is_a?(RepositorySnapshot) ? row.parent_id : row.id)
|
||||
row_json << row.name
|
||||
row_json << I18n.l(row.created_at, format: :full)
|
||||
row_json << row.created_by.full_name
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
class RepositorySnapshot < RepositoryBase
|
||||
enum status: { provisioning: 0, ready: 1, failed: 2 }
|
||||
after_save :refresh_report_references, if: :saved_change_to_selected
|
||||
before_destroy :refresh_report_references_for_destroy
|
||||
|
||||
belongs_to :original_repository, foreign_key: :parent_id,
|
||||
class_name: 'Repository',
|
||||
|
@ -39,4 +41,22 @@ class RepositorySnapshot < RepositoryBase
|
|||
errors.add(:selected, I18n.t('activerecord.errors.models.repository_snapshot.attributes.selected.already_taken'))
|
||||
end
|
||||
end
|
||||
|
||||
def refresh_report_references
|
||||
if selected
|
||||
ids = Repository.where(id: parent_id).pluck(:id) +
|
||||
RepositorySnapshot.where(parent_id: parent_id).pluck(:id)
|
||||
|
||||
ReportElement.where(my_module: my_module).where(repository_id: ids).update(repository_id: id)
|
||||
elsif original_repository && !my_module.selected_snapshot_for_repo(original_repository.id)
|
||||
my_module.update_report_repository_references(original_repository)
|
||||
end
|
||||
end
|
||||
|
||||
def refresh_report_references_for_destroy
|
||||
repository_or_snap = original_repository || self
|
||||
default_view_candidate =
|
||||
my_module.active_snapshot_or_live(repository_or_snap, exclude_snpashot_ids: [id])
|
||||
my_module.update_report_repository_references(default_view_candidate) if default_view_candidate
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue