From 3d94a86b8deb64248d84d61502816d98b6d28dbd Mon Sep 17 00:00:00 2001 From: Gyan Gupta <gyan@cottagelabs.com> Date: Tue, 1 Apr 2025 18:05:21 +0530 Subject: [PATCH] add human-readable query --- .../complex_modalities_controller.rb | 2 +- .../complex_sessions_controller.rb | 2 +- .../complex_subjects_controller.rb | 2 +- .../hyrax/crc1280_experiments_controller.rb | 11 +-- .../hyrax/dashboard/collections_controller.rb | 6 +- .../controllers/hyrax/datasets_controller.rb | 2 +- .../bulkrax/valkyrie_object_factory.rb | 18 ++-- hyrax/app/helpers/admin_set_helper.rb | 2 +- .../listeners/lifecycle_listener_helper.rb | 12 +-- hyrax/app/helpers/hyrax_helper.rb | 11 +-- .../jobs/hyrax/file_sets/grant_edit_job.rb | 3 +- .../jobs/hyrax/file_sets/grant_read_job.rb | 3 +- .../jobs/hyrax/file_sets/revoke_edit_job.rb | 3 +- hyrax/app/jobs/valkyrie_ingest_job.rb | 2 +- .../crc_folder_complex_subject_entry.rb | 2 +- hyrax/app/models/complex_modality.rb | 4 +- hyrax/app/models/complex_session.rb | 4 +- hyrax/app/models/complex_subject.rb | 6 +- hyrax/app/models/concerns/common_query.rb | 93 +++++++++++++++++++ .../concerns/hyrax/tombstone_behavior.rb | 9 +- hyrax/app/models/concerns/rdms_roles.rb | 8 +- .../app/models/concerns/s3_file_handleable.rb | 2 +- hyrax/app/models/crc1280_experiment.rb | 19 +--- hyrax/app/models/dataset.rb | 17 +--- hyrax/app/models/hyrax/file_set.rb | 17 +--- hyrax/app/models/hyrax/pcdm_collection.rb | 17 +--- hyrax/app/models/user.rb | 8 +- .../hyrax/crc1280_experiment_presenter.rb | 2 +- hyrax/app/services/doi_service.rb | 2 +- .../collections/permissions_create_service.rb | 2 +- hyrax/app/services/hyrax/valkyrie_upload.rb | 2 +- .../app/services/verify_crc_dataset_import.rb | 2 +- .../_all_children.html.erb | 2 +- .../_parent_collection.html.erb | 2 +- .../hyrax/crc1280_experiments/_title.html.erb | 8 -- .../hyrax/crc1280_experiments/show.html.erb | 2 +- .../downloads_controller_override.rb | 4 +- hyrax/config/initializers/riiif.rb | 4 +- .../tasks/default_admin_set_for_workflow.rake | 2 +- 39 files changed, 169 insertions(+), 150 deletions(-) create mode 100644 hyrax/app/models/concerns/common_query.rb diff --git a/hyrax/app/controllers/hyrax/crc1280_experiments/complex_modalities_controller.rb b/hyrax/app/controllers/hyrax/crc1280_experiments/complex_modalities_controller.rb index 9a6b84ad..0644b0e7 100644 --- a/hyrax/app/controllers/hyrax/crc1280_experiments/complex_modalities_controller.rb +++ b/hyrax/app/controllers/hyrax/crc1280_experiments/complex_modalities_controller.rb @@ -67,7 +67,7 @@ module Hyrax private def set_crc1280_experiment - @crc1280_experiment = ::Hyrax.query_service.find_by(id: params[:crc1280_experiment_id]) + @crc1280_experiment = Crc1280Experiment.find(params[:crc1280_experiment_id]) end def set_complex_session diff --git a/hyrax/app/controllers/hyrax/crc1280_experiments/complex_sessions_controller.rb b/hyrax/app/controllers/hyrax/crc1280_experiments/complex_sessions_controller.rb index 9bd3c041..1f641c6f 100644 --- a/hyrax/app/controllers/hyrax/crc1280_experiments/complex_sessions_controller.rb +++ b/hyrax/app/controllers/hyrax/crc1280_experiments/complex_sessions_controller.rb @@ -70,7 +70,7 @@ module Hyrax private def set_crc1280_experiment - @crc1280_experiment = ::Hyrax.query_service.find_by(id: params[:crc1280_experiment_id]) + @crc1280_experiment = Crc1280Experiment.find(params[:crc1280_experiment_id]) end def set_complex_subject diff --git a/hyrax/app/controllers/hyrax/crc1280_experiments/complex_subjects_controller.rb b/hyrax/app/controllers/hyrax/crc1280_experiments/complex_subjects_controller.rb index d99a7b38..35e17a9e 100644 --- a/hyrax/app/controllers/hyrax/crc1280_experiments/complex_subjects_controller.rb +++ b/hyrax/app/controllers/hyrax/crc1280_experiments/complex_subjects_controller.rb @@ -64,7 +64,7 @@ module Hyrax private def set_crc1280_experiment - @crc1280_experiment = ::Hyrax.query_service.find_by(id: params[:crc1280_experiment_id]) + @crc1280_experiment = Crc1280Experiment.find(params[:crc1280_experiment_id]) end def set_complex_subject diff --git a/hyrax/app/controllers/hyrax/crc1280_experiments_controller.rb b/hyrax/app/controllers/hyrax/crc1280_experiments_controller.rb index d4672000..c1007481 100644 --- a/hyrax/app/controllers/hyrax/crc1280_experiments_controller.rb +++ b/hyrax/app/controllers/hyrax/crc1280_experiments_controller.rb @@ -46,7 +46,7 @@ module Hyrax private def check_tombstone - @crc1280_experiment = Hyrax.query_service.find_by(id: params[:id]) + @crc1280_experiment = Crc1280Experiment.find(params[:id]) if current_user.present? && (current_user.publication_manager? || current_user.admin?) if @crc1280_experiment.is_tombstoned == true && params[:action] == 'edit' redirect_to main_app.polymorphic_path(@crc1280_experiment) @@ -62,7 +62,7 @@ module Hyrax def redirect_to_default_collection return if params.has_key?(:add_works_to_collection) - collection = Hyrax::PcdmCollection.where(title: [ENV.fetch('CRC_1280_COLLECTION', "CRC 1280")]).first + collection = Hyrax::PcdmCollection.find_by(title: [ENV.fetch('CRC_1280_COLLECTION', "CRC 1280")]) flash[:notice] = "You need to navigate to your group to create an experiment." redirect_to dashboard_collection_path(collection.id) @@ -70,10 +70,9 @@ module Hyrax def build_breadcrumbs return super if ['show', 'edit'].exclude?(action_name) - - work = Hyrax.query_service.find_by(id: presenter.id) - parent_group_collection = Hyrax.query_service.custom_queries.find_parent_collections(resource: work).first - crc_1280_collection = Hyrax.query_service.custom_queries.find_parent_collections(resource: parent_group_collection).first if parent_group_collection + work = Crc1280Experiment.find(presenter.id) + parent_group_collection = work.parent_collections.first + crc_1280_collection = parent_group_collection.parent_collections.first if parent_group_collection add_breadcrumb t(:'hyrax.controls.home'), root_path add_breadcrumb crc_1280_collection.title.first, dashboard_collection_path(crc_1280_collection.id) if crc_1280_collection.present? diff --git a/hyrax/app/controllers/hyrax/dashboard/collections_controller.rb b/hyrax/app/controllers/hyrax/dashboard/collections_controller.rb index e2df45ef..ea9f4eca 100644 --- a/hyrax/app/controllers/hyrax/dashboard/collections_controller.rb +++ b/hyrax/app/controllers/hyrax/dashboard/collections_controller.rb @@ -485,17 +485,17 @@ module Hyrax end def move_members_between_collections + remove_members_from_collection add_members_to_collection(collection_id: params[:destination_collection_id]) - destination_title = - Hyrax.query_service.find_by(id: params[:destination_collection_id]).title.first || + Hyrax::PcdmCollection.find(params[:destination_collection_id]).title.first || params[:destination_collection_id] flash[:notice] = "Successfully moved #{batch.count} files to #{destination_title} Collection." rescue StandardError => err Hyrax.logger.error(err) destination_title = - Hyrax.query_service.find_by(id: params[:destination_collection_id]).title.first || + Hyrax::PcdmCollection.find(params[:destination_collection_id]).title.first || destination_id flash[:error] = "An error occured. Files were not moved to #{destination_title} Collection." end diff --git a/hyrax/app/controllers/hyrax/datasets_controller.rb b/hyrax/app/controllers/hyrax/datasets_controller.rb index 0e549fb7..e68042f1 100644 --- a/hyrax/app/controllers/hyrax/datasets_controller.rb +++ b/hyrax/app/controllers/hyrax/datasets_controller.rb @@ -22,7 +22,7 @@ module Hyrax private def check_tombstone - @dataset = Hyrax.query_service.find_by(id: params[:id]) + @dataset = Dataset.find(params[:id]) if current_user.nil? if @dataset.is_tombstoned == true diff --git a/hyrax/app/factories/bulkrax/valkyrie_object_factory.rb b/hyrax/app/factories/bulkrax/valkyrie_object_factory.rb index 837330b0..3eec53a9 100644 --- a/hyrax/app/factories/bulkrax/valkyrie_object_factory.rb +++ b/hyrax/app/factories/bulkrax/valkyrie_object_factory.rb @@ -142,9 +142,9 @@ module Bulkrax if resource.respond_to?(:save!) resource.save! else - result = Hyrax.persister.save(resource: resource) + result = resource.save raise Valkyrie::Persistence::ObjectNotFoundError unless result - Hyrax.index_adapter.save(resource: result) + result.save_index if result.collection? publish('collection.metadata.updated', collection: result, user: user) else @@ -156,7 +156,7 @@ module Bulkrax def self.update_index(resources:) Array(resources).each do |resource| - Hyrax.index_adapter.save(resource: resource) + resource.save_index end end @@ -202,16 +202,14 @@ module Bulkrax def self.ordered_file_sets_for(object) return [] if object.blank? - - Hyrax.custom_queries.find_child_file_sets(resource: object) + object.child_filesets end def delete(user) obj = find return false unless obj - - Hyrax.persister.delete(resource: obj) - Hyrax.index_adapter.delete(resource: obj) + obj.delete + obj.delete_index self.class.publish(event: 'object.deleted', object: obj, user: user) end @@ -230,7 +228,7 @@ module Bulkrax return if @object.depositor.present? @object.depositor = @user.email - object = Hyrax.persister.save(resource: @object) + object = @object.save self.class.publish(event: "object.metadata.updated", object: object, user: @user) object end @@ -476,7 +474,7 @@ module Bulkrax # @Override Destroy existing files with Hyrax::Transactions def destroy_existing_files - existing_files = Hyrax.custom_queries.find_child_file_sets(resource: object) + existing_files = object.child_filesets existing_files.each do |fs| transactions["file_set.destroy"] diff --git a/hyrax/app/helpers/admin_set_helper.rb b/hyrax/app/helpers/admin_set_helper.rb index 1db3b1f2..d30b0bcf 100644 --- a/hyrax/app/helpers/admin_set_helper.rb +++ b/hyrax/app/helpers/admin_set_helper.rb @@ -1,5 +1,5 @@ module AdminSetHelper - def self.find_admin_set_by_property(**args) + def self.find_by(**args) query = <<-SQL SELECT * FROM orm_resources WHERE metadata @> ? diff --git a/hyrax/app/helpers/hyrax/listeners/lifecycle_listener_helper.rb b/hyrax/app/helpers/hyrax/listeners/lifecycle_listener_helper.rb index 795bda0c..5a95a55b 100644 --- a/hyrax/app/helpers/hyrax/listeners/lifecycle_listener_helper.rb +++ b/hyrax/app/helpers/hyrax/listeners/lifecycle_listener_helper.rb @@ -14,8 +14,8 @@ module Hyrax object = object.register_ark(user: user) end - object = save_object!(object) - Hyrax.index_adapter.save(resource: object) + object.save + object.save_index object end @@ -25,8 +25,8 @@ module Hyrax object = object.set_format_and_size end - object = save_object!(object) - Hyrax.index_adapter.save(resource: object) + object.save + object.save_index object end @@ -74,10 +74,6 @@ module Hyrax s3.delete_object(bucket_name, self.object_key_on_s3) parent.update(date_modified: DateTime.now) end - - def save_object!(object) - Hyrax.persister.save(resource: object) - end end end end \ No newline at end of file diff --git a/hyrax/app/helpers/hyrax_helper.rb b/hyrax/app/helpers/hyrax_helper.rb index 850e896e..32cba110 100644 --- a/hyrax/app/helpers/hyrax_helper.rb +++ b/hyrax/app/helpers/hyrax_helper.rb @@ -45,19 +45,19 @@ module HyraxHelper end def manager_role(presenter) - Hyrax.query_service.find_by(id: presenter.id).manager_role + Hyrax::PcdmCollection.find(presenter.id).manager_role end def member_role(presenter) - Hyrax.query_service.find_by(id: presenter.id).member_role + Hyrax::PcdmCollection.find(presenter.id).member_role end def manager_role_for_group(presenter) - Hyrax.query_service.find_by(id: presenter.id).manager_role_for_group + Hyrax::PcdmCollection.find(presenter.id).manager_role_for_group end def member_role_for_group(presenter) - Hyrax.query_service.find_by(id: presenter.id).member_role_for_group + Hyrax::PcdmCollection.find(presenter.id).member_role_for_group end def can_create_work_in_group?(group_id) @@ -151,8 +151,7 @@ module HyraxHelper def s3_file_download_url_for_file_set(file_set_id) s3 = S3StorageService.new s3.init_client - - file_set = Hyrax.query_service.find_by(id: file_set_id) + file_set = Hyrax::FileSet.find(file_set_id) bucket_name = s3.sanitise_name(file_set.parent_work.id) s3.presigned_url_for_download(bucket_name, file_set.object_key_on_s3) diff --git a/hyrax/app/jobs/hyrax/file_sets/grant_edit_job.rb b/hyrax/app/jobs/hyrax/file_sets/grant_edit_job.rb index 093735ea..99802379 100644 --- a/hyrax/app/jobs/hyrax/file_sets/grant_edit_job.rb +++ b/hyrax/app/jobs/hyrax/file_sets/grant_edit_job.rb @@ -6,8 +6,7 @@ module Hyrax include PermissionJobBehavior def perform(file_set_id, group_key) - file_set = Hyrax.query_service.find_by(id: file_set_id) - + file_set = Hyrax::FileSet.find(file_set_id) file_set.edit_groups = file_set.edit_groups.to_a + Array.wrap(group_key) # += works in Ruby 2.6+ file_set.try(:permission_manager)&.acl&.save end diff --git a/hyrax/app/jobs/hyrax/file_sets/grant_read_job.rb b/hyrax/app/jobs/hyrax/file_sets/grant_read_job.rb index 23707d08..b34e52f6 100644 --- a/hyrax/app/jobs/hyrax/file_sets/grant_read_job.rb +++ b/hyrax/app/jobs/hyrax/file_sets/grant_read_job.rb @@ -8,8 +8,7 @@ module Hyrax include PermissionJobBehavior def perform(file_set_id, group_key) - file_set = Hyrax.query_service.find_by(id: file_set_id) - + file_set = Hyrax::FileSet.find(file_set_id) file_set.read_groups = file_set.read_groups.to_a + Array.wrap(group_key) # += works in Ruby 2.6+ file_set.try(:permission_manager)&.acl&.save end diff --git a/hyrax/app/jobs/hyrax/file_sets/revoke_edit_job.rb b/hyrax/app/jobs/hyrax/file_sets/revoke_edit_job.rb index db5349c1..133bda9e 100644 --- a/hyrax/app/jobs/hyrax/file_sets/revoke_edit_job.rb +++ b/hyrax/app/jobs/hyrax/file_sets/revoke_edit_job.rb @@ -8,8 +8,7 @@ module Hyrax include PermissionJobBehavior def perform(file_set_id, group_key) - file_set = Hyrax.query_service.find_by(id: file_set_id) - + file_set = Hyrax::FileSet.find(file_set_id) file_set.edit_groups = file_set.edit_groups.to_a - Array.wrap(group_key) # += works in Ruby 2.6+ file_set.try(:permission_manager)&.acl&.save end diff --git a/hyrax/app/jobs/valkyrie_ingest_job.rb b/hyrax/app/jobs/valkyrie_ingest_job.rb index e29c2bde..33e01664 100644 --- a/hyrax/app/jobs/valkyrie_ingest_job.rb +++ b/hyrax/app/jobs/valkyrie_ingest_job.rb @@ -24,7 +24,7 @@ class ValkyrieIngestJob < Hyrax::ApplicationJob # @return [void] def ingest(file:, pcdm_use:) file_set_uri = Valkyrie::ID.new(file.file_set_uri) - file_set = Hyrax.query_service.find_by(id: file_set_uri) + file_set = Hyrax::FileSet.find(file_set_uri) upload_file( file: file, file_set: file_set, diff --git a/hyrax/app/models/bulkrax/crc_folder_complex_subject_entry.rb b/hyrax/app/models/bulkrax/crc_folder_complex_subject_entry.rb index d96587ab..91ba8b9d 100644 --- a/hyrax/app/models/bulkrax/crc_folder_complex_subject_entry.rb +++ b/hyrax/app/models/bulkrax/crc_folder_complex_subject_entry.rb @@ -29,7 +29,7 @@ module Bulkrax end def crc1280_experiment_created? - ::Crc1280Experiment.find_by_property(source: [self.raw_metadata['parents']]).present? + ::Crc1280Experiment.find_by(source: [self.raw_metadata['parents']]).present? end def validate_and_fix_title diff --git a/hyrax/app/models/complex_modality.rb b/hyrax/app/models/complex_modality.rb index c2f08822..637da4be 100644 --- a/hyrax/app/models/complex_modality.rb +++ b/hyrax/app/models/complex_modality.rb @@ -31,7 +31,7 @@ class ComplexModality < ActiveRecord::Base } def file_sets - @file_sets ||= FileSet.where(for_complex_type: ["ComplexModality"], for_complex_identifier: [self.source_identifier]) + @file_sets ||= Hyrax::FileSet.where(for_complex_type: ["ComplexModality"], for_complex_identifier: [self.source_identifier]) end def s3_object_prefix @@ -69,6 +69,6 @@ class ComplexModality < ActiveRecord::Base end def reindex_parent_work - Hyrax.index_adapter.save(resource: crc1280_experiment) + crc1280_experiment.save_index end end diff --git a/hyrax/app/models/complex_session.rb b/hyrax/app/models/complex_session.rb index 38ecb059..2bd9dfcb 100644 --- a/hyrax/app/models/complex_session.rb +++ b/hyrax/app/models/complex_session.rb @@ -32,7 +32,7 @@ class ComplexSession < ActiveRecord::Base } def file_sets - @file_sets ||= FileSet.where(for_complex_type: ["ComplexSession"], for_complex_identifier: [self.source_identifier]) + @file_sets ||= Hyrax::FileSet.where(for_complex_type: ["ComplexSession"], for_complex_identifier: [self.source_identifier]) end def display_date_recorded @@ -74,6 +74,6 @@ class ComplexSession < ActiveRecord::Base end def reindex_parent_work - Hyrax.index_adapter.save(resource: crc1280_experiment) + crc1280_experiment.save_index end end diff --git a/hyrax/app/models/complex_subject.rb b/hyrax/app/models/complex_subject.rb index cccbae8f..fdb2ca2e 100644 --- a/hyrax/app/models/complex_subject.rb +++ b/hyrax/app/models/complex_subject.rb @@ -30,11 +30,11 @@ class ComplexSubject < ActiveRecord::Base } #Thu, 05 Dec 2024 05:36:17 +0000 def crc1280_experiment - @crc1280_experiment ||= Crc1280Experiment.find_by_property(source: [parent_source_identifier]) + @crc1280_experiment ||= Crc1280Experiment.find_by(source: [parent_source_identifier]) end def file_sets - @file_sets ||= FileSet.where(for_complex_type: ["ComplexSubject"], for_complex_identifier: [self.source_identifier]) + @file_sets ||= Hyrax::FileSet.where(for_complex_type: ["ComplexSubject"], for_complex_identifier: [self.source_identifier]) end def s3_object_prefix @@ -72,6 +72,6 @@ class ComplexSubject < ActiveRecord::Base end def reindex_parent_work - Hyrax.index_adapter.save(resource: crc1280_experiment) + crc1280_experiment.save_index end end diff --git a/hyrax/app/models/concerns/common_query.rb b/hyrax/app/models/concerns/common_query.rb new file mode 100644 index 00000000..a590fb5f --- /dev/null +++ b/hyrax/app/models/concerns/common_query.rb @@ -0,0 +1,93 @@ +module CommonQuery + extend ActiveSupport::Concern + + def parent_collections + return [] unless self.persisted? + Hyrax.query_service.custom_queries.find_parent_collections(resource: self) + end + + def parent_work + Hyrax.custom_queries.find_parent_work(resource: self) + end + + def child_filesets + Hyrax.custom_queries.find_child_file_sets(resource: self) + end + + + # save resource + def save + Hyrax.persister.save(resource: self) + end + + def save_index + Hyrax.index_adapter.save(resource: self) + end + + + # delete resource + def delete + Hyrax.persister.delete(resource: self) + end + + def delete_index + Hyrax.index_adapter.delete(resource: self) + end + + + # clss methods + class_methods do + def find_by(**args) + conditions = ["metadata @> ?"] + id = args.delete(:id) + jsonb_query = args.to_json + + if id.present? + if valid_uuid?(id) + conditions << "id = '#{id}'" + else + raise Valkyrie::Persistence::ObjectNotFoundError, "Invalid or missing UUID for id=#{id}" + end + end + + conditions << "internal_resource = '#{name}'" + + query = <<-SQL + SELECT * FROM orm_resources + WHERE #{conditions.join(' AND ')}; + SQL + + Hyrax.query_service.run_query(query, jsonb_query).first + end + + def where(**args) + query = <<-SQL + SELECT * FROM orm_resources + WHERE metadata @> ? + AND internal_resource = '#{name}'; + SQL + + jsonb_query = args.to_json + Hyrax.query_service.run_query(query, jsonb_query).to_a + end + + def find(id) + unless id.present? && valid_uuid?(id) + raise Valkyrie::Persistence::ObjectNotFoundError, "Invalid or missing UUID for id=#{id}" + end + + result = find_by(id: id) + + if result.nil? + raise Valkyrie::Persistence::ObjectNotFoundError, "Couldn't find resource with id=#{id}" + end + + result + end + + def valid_uuid?(string) + uuid_regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i + uuid_regex.match?(string) + end + end +end diff --git a/hyrax/app/models/concerns/hyrax/tombstone_behavior.rb b/hyrax/app/models/concerns/hyrax/tombstone_behavior.rb index 9d983f9f..12f415f7 100644 --- a/hyrax/app/models/concerns/hyrax/tombstone_behavior.rb +++ b/hyrax/app/models/concerns/hyrax/tombstone_behavior.rb @@ -5,8 +5,7 @@ module Hyrax self.is_tombstoned = true self.tombstone_status = "initiated" self.tombstone_date = DateTime.now - - work = Hyrax.persister.save(resource: self) + work = self.save Hyrax.publisher.publish('object.metadata.updated', object: work, user: user) end @@ -14,8 +13,7 @@ module Hyrax return false unless self.is_tombstoned || self.tombstone_status == "initiated" self.tombstone_status = "deleted" - - work = Hyrax.persister.save(resource: self) + work = self.save Hyrax.publisher.publish('object.metadata.updated', object: work, user: user) Hyrax::RemoveAssociatedObjectsJob.perform_later(work.id.to_s, user.id) @@ -27,8 +25,7 @@ module Hyrax self.is_tombstoned = false self.tombstone_status = "restored" - - work = Hyrax.persister.save(resource: self) + work = self.save Hyrax.publisher.publish('object.metadata.updated', object: work, user: user) end end diff --git a/hyrax/app/models/concerns/rdms_roles.rb b/hyrax/app/models/concerns/rdms_roles.rb index 35c4cbf6..4f53bef1 100644 --- a/hyrax/app/models/concerns/rdms_roles.rb +++ b/hyrax/app/models/concerns/rdms_roles.rb @@ -26,7 +26,7 @@ module RdmsRoles end def crc_manager_for?(group_id) - group = Hyrax.query_service.find_by(id: group_id) rescue nil + group = Hyrax::PcdmCollection.find(group_id) rescue nil return false unless group @@ -35,7 +35,7 @@ module RdmsRoles end def group_manager_for?(group_id) - group = Hyrax.query_service.find_by(id: group_id) rescue nil + group = Hyrax::PcdmCollection.find(group_id) rescue nil return false unless group @@ -44,7 +44,7 @@ module RdmsRoles end def crc_member_for?(group_id) - group = Hyrax.query_service.find_by(id: group_id) rescue nil + group = Hyrax::PcdmCollection.find(group_id) rescue nil return false unless group @@ -53,7 +53,7 @@ module RdmsRoles end def group_member_for?(group_id) - group = Hyrax.query_service.find_by(id: group_id) rescue nil + group = Hyrax::PcdmCollection.find(group_id) rescue nil return false unless group diff --git a/hyrax/app/models/concerns/s3_file_handleable.rb b/hyrax/app/models/concerns/s3_file_handleable.rb index 73c40f99..6cccc4dc 100644 --- a/hyrax/app/models/concerns/s3_file_handleable.rb +++ b/hyrax/app/models/concerns/s3_file_handleable.rb @@ -75,7 +75,7 @@ module S3FileHandleable crc1280_experiment.files_size = [total_size.to_s] crc1280_experiment.format = list_of_format - Hyrax.persister.save(resource: crc1280_experiment) + crc1280_experiment.save end diff --git a/hyrax/app/models/crc1280_experiment.rb b/hyrax/app/models/crc1280_experiment.rb index d71d299f..efe74a41 100644 --- a/hyrax/app/models/crc1280_experiment.rb +++ b/hyrax/app/models/crc1280_experiment.rb @@ -10,7 +10,7 @@ class Crc1280Experiment < Hyrax::Work attribute :complex_identifier , Valkyrie::Types::Array.of(Valkyrie::Types::String) include Hyrax::Schema(:basic_metadata) include Hyrax::Schema(:crc1280_experiment) - include CommonWorksQuery + include CommonQuery include ::Hyrax::TombstoneBehavior include ExternalServices include S3FileHandleable @@ -32,22 +32,11 @@ class Crc1280Experiment < Hyrax::Work ] + CRC_FILTER_FACET_FIELDS def default_admin_set - AdminSetHelper.find_admin_set_by_property(title: [ENV.fetch('CRC_ADMIN_SET_TITLE', 'CRC 1280 Publishing Workflow')]) - end - - def self.find_by_property(**args) - query = <<-SQL - SELECT * FROM orm_resources - WHERE metadata @> ? - AND internal_resource = 'Crc1280Experiment'; - SQL - - jsonb_query = args.to_json - Hyrax.query_service.run_query(query, jsonb_query).first + AdminSetHelper.find_by(title: [ENV.fetch('CRC_ADMIN_SET_TITLE', 'CRC 1280 Publishing Workflow')]) end def file_sets - @file_sets ||= FileSet.where(for_complex_type: ["Crc1280Experiment"], for_complex_identifier: self.source) + @file_sets ||= Hyrax::FileSet.where(for_complex_type: ["Crc1280Experiment"], for_complex_identifier: self.source) end def complex_subjects @@ -63,7 +52,7 @@ class Crc1280Experiment < Hyrax::Work end def apply_parent_permissions - parent = Hyrax.custom_queries.find_parent_collections(resource: self).first + parent = self.parent_collections.first if parent.present? template = Hyrax::PermissionTemplate.find_by(source_id: parent.id.to_s) self.edit_groups += template.agent_ids_for(agent_type: 'group', access: 'manage') diff --git a/hyrax/app/models/dataset.rb b/hyrax/app/models/dataset.rb index b12f4b88..48f2af82 100644 --- a/hyrax/app/models/dataset.rb +++ b/hyrax/app/models/dataset.rb @@ -10,28 +10,17 @@ class Dataset < Hyrax::Work attribute :complex_identifier , Valkyrie::Types::Array.of(Valkyrie::Types::String) include Hyrax::Schema(:basic_metadata) include Hyrax::Schema(:dataset) - include CommonWorksQuery + include CommonQuery include ::Hyrax::TombstoneBehavior include ExternalServices include S3FileHandleable def default_admin_set - AdminSetHelper.find_admin_set_by_property(title: [ENV.fetch('RUB_ADMIN_SET_TITLE', 'RUB publication workflow')]) - end - - def self.find_by_property(**args) - query = <<-SQL - SELECT * FROM orm_resources - WHERE metadata @> ? - AND internal_resource = 'Dataset'; - SQL - - jsonb_query = args.to_json - Hyrax.query_service.run_query(query, jsonb_query).first + AdminSetHelper.find_by(title: [ENV.fetch('RUB_ADMIN_SET_TITLE', 'RUB publication workflow')]) end def file_sets - @file_sets ||= Hyrax.custom_queries.find_child_file_sets(resource: self) + @file_sets ||= self.child_filesets end end diff --git a/hyrax/app/models/hyrax/file_set.rb b/hyrax/app/models/hyrax/file_set.rb index f5b38e39..5cdad76c 100644 --- a/hyrax/app/models/hyrax/file_set.rb +++ b/hyrax/app/models/hyrax/file_set.rb @@ -51,6 +51,7 @@ module Hyrax class FileSet < Hyrax::Resource include Hyrax::Schema(:core_metadata) include Hyrax::Schema(:file_set_metadata) + include CommonQuery attribute :for_complex_identifier, Valkyrie::Types::String attribute :for_complex_type, Valkyrie::Types::String @@ -128,22 +129,6 @@ module Hyrax true end - def self.where(**args) - query = <<-SQL - SELECT * FROM orm_resources - WHERE metadata @> ? - AND internal_resource = 'Hyrax::FileSet'; - SQL - - jsonb_query = args.to_json - - Hyrax.query_service.run_query(query, jsonb_query).to_a - end - - def parent_work - Hyrax.custom_queries.find_parent_work(resource: self) - end - def parent_object case for_complex_type when 'ComplexSubject' diff --git a/hyrax/app/models/hyrax/pcdm_collection.rb b/hyrax/app/models/hyrax/pcdm_collection.rb index 41fe97e6..c5c213ec 100644 --- a/hyrax/app/models/hyrax/pcdm_collection.rb +++ b/hyrax/app/models/hyrax/pcdm_collection.rb @@ -42,6 +42,7 @@ module Hyrax class PcdmCollection < Hyrax::Resource include Hyrax::Schema(:core_metadata) include Hyrax::Schema(:collection_metadata) + include CommonQuery attribute :collection_type_gid, Valkyrie::Types::String attribute :member_ids, Valkyrie::Types::Array.of(Valkyrie::Types::ID).meta(ordered: true) @@ -94,22 +95,6 @@ module Hyrax Role.find_by_name("#{collection_type.title.parameterize(separator: '_')}_#{id}_member") end - def parent_collections - Hyrax.custom_queries.find_parent_collections(resource: self) - - end - - def self.where(**args) - query = <<-SQL - SELECT * FROM orm_resources - WHERE metadata @> ? - AND internal_resource = 'Hyrax::PcdmCollection'; - SQL - - jsonb_query = args.to_json - Hyrax.query_service.run_query(query, jsonb_query) - end - protected def visibility_writer diff --git a/hyrax/app/models/user.rb b/hyrax/app/models/user.rb index 06557226..1b1b76e8 100644 --- a/hyrax/app/models/user.rb +++ b/hyrax/app/models/user.rb @@ -238,7 +238,7 @@ class User < ApplicationRecord private def handle_crc_1280_manager_role(action) - admin_set = AdminSetHelper.find_admin_set_by_property(title: [ENV.fetch('CRC_ADMIN_SET_TITLE', 'CRC 1280 Publishing Workflow')]) + admin_set = AdminSetHelper.find_by(title: [ENV.fetch('CRC_ADMIN_SET_TITLE', 'CRC 1280 Publishing Workflow')]) add_or_remove_responsibility(admin_set, 'approving_crc_manager', action) end @@ -249,19 +249,19 @@ class User < ApplicationRecord ] titles.each do |title| - admin_set = AdminSetHelper.find_admin_set_by_property(title: [title]) + admin_set = AdminSetHelper.find_by(title: [title]) next if admin_set.nil? add_or_remove_responsibility(admin_set, 'approving_publication_manager', action) end end def handle_group_manager_role(action) - admin_set = AdminSetHelper.find_admin_set_by_property(title: [ENV.fetch('CRC_ADMIN_SET_TITLE', 'CRC 1280 Publishing Workflow')]) + admin_set = AdminSetHelper.find_by(title: [ENV.fetch('CRC_ADMIN_SET_TITLE', 'CRC 1280 Publishing Workflow')]) add_or_remove_responsibility(admin_set, 'approving_group_manager', action) end def handle_group_member_role(action) - admin_set = AdminSetHelper.find_admin_set_by_property(title: [ENV.fetch('CRC_ADMIN_SET_TITLE', 'CRC 1280 Publishing Workflow')]) + admin_set = AdminSetHelper.find_by(title: [ENV.fetch('CRC_ADMIN_SET_TITLE', 'CRC 1280 Publishing Workflow')]) add_or_remove_responsibility(admin_set, 'depositor', action) end diff --git a/hyrax/app/presenters/hyrax/crc1280_experiment_presenter.rb b/hyrax/app/presenters/hyrax/crc1280_experiment_presenter.rb index 79a3f411..648aa612 100644 --- a/hyrax/app/presenters/hyrax/crc1280_experiment_presenter.rb +++ b/hyrax/app/presenters/hyrax/crc1280_experiment_presenter.rb @@ -15,7 +15,7 @@ module Hyrax 'session' => {}, 'modality' => {} } - experiment = Hyrax.query_service.find_by(id: self.id) + experiment = Crc1280Experiment.find(self.id) # subject filter query if filter available subject_query = build_query(subject_field_mappings, options[:filter]) diff --git a/hyrax/app/services/doi_service.rb b/hyrax/app/services/doi_service.rb index 6c5531db..bc6fa2e0 100644 --- a/hyrax/app/services/doi_service.rb +++ b/hyrax/app/services/doi_service.rb @@ -66,7 +66,7 @@ class DoiService @work.complex_identifier = @work.complex_identifier + [complex_identifier] @work.complex_date = @work.complex_date + [complex_date] - Hyrax.persister.save(resource: @work) + @work.save Hyrax.publisher.publish('object.metadata.updated', object: @work, user: user) end end \ No newline at end of file diff --git a/hyrax/app/services/hyrax/collections/permissions_create_service.rb b/hyrax/app/services/hyrax/collections/permissions_create_service.rb index e341d838..0d09910a 100644 --- a/hyrax/app/services/hyrax/collections/permissions_create_service.rb +++ b/hyrax/app/services/hyrax/collections/permissions_create_service.rb @@ -44,7 +44,7 @@ module Hyrax # access: Hyrax::PermissionTemplateAccess::DEPOSIT } ] # @see Hyrax::PermissionTemplateAccess for valid values for agent_type and access def add_access(collection_id:, grants:) - collection = Hyrax.query_service.find_by(id: collection_id) + collection = Hyrax::PcdmCollection.find(collection_id) template = Hyrax::PermissionTemplate.find_by!(source_id: collection_id.to_s) grants.each do |grant| Hyrax::PermissionTemplateAccess.find_or_create_by(permission_template_id: template.id.to_s, diff --git a/hyrax/app/services/hyrax/valkyrie_upload.rb b/hyrax/app/services/hyrax/valkyrie_upload.rb index ef52eafa..ff9749c2 100644 --- a/hyrax/app/services/hyrax/valkyrie_upload.rb +++ b/hyrax/app/services/hyrax/valkyrie_upload.rb @@ -143,7 +143,7 @@ class Hyrax::ValkyrieUpload # @return [Hyrax::FileSet] updated file set def add_file_to_file_set(file_set:, file_metadata:, user:) file_set.file_ids += [file_metadata.id] - Hyrax.persister.save(resource: file_set) + file_set.save Hyrax.publisher.publish('object.membership.updated', object: file_set, user: user) end diff --git a/hyrax/app/services/verify_crc_dataset_import.rb b/hyrax/app/services/verify_crc_dataset_import.rb index 462bb017..0719695b 100644 --- a/hyrax/app/services/verify_crc_dataset_import.rb +++ b/hyrax/app/services/verify_crc_dataset_import.rb @@ -119,7 +119,7 @@ class VerifyCrcDatasetImport end # Get CrcDataset for the entry - works = Crc1280Experiment.find_by_property(source: [entry.identifier]) + works = Crc1280Experiment.find_by(source: [entry.identifier]) unless works.present? msg = "The CrcDataset with source identifier #{entry.identifier} was not found" return false, msg, paths_compared, nil diff --git a/hyrax/app/views/hyrax/crc1280_experiments/_all_children.html.erb b/hyrax/app/views/hyrax/crc1280_experiments/_all_children.html.erb index fa3c6712..0c9cdddd 100644 --- a/hyrax/app/views/hyrax/crc1280_experiments/_all_children.html.erb +++ b/hyrax/app/views/hyrax/crc1280_experiments/_all_children.html.erb @@ -1,5 +1,5 @@ <% - member_ids = Hyrax.query_service.custom_queries.find_child_file_sets(resource: work).to_a #+ experiment.complex_subjects&.ids + member_ids = work.child_filesets.to_a #+ experiment.complex_subjects&.ids %> <% if presenter.crc_work_type.present? && presenter.crc_work_type[0] == 'experiment' %> diff --git a/hyrax/app/views/hyrax/crc1280_experiments/_parent_collection.html.erb b/hyrax/app/views/hyrax/crc1280_experiments/_parent_collection.html.erb index e20a5e9c..2053a322 100644 --- a/hyrax/app/views/hyrax/crc1280_experiments/_parent_collection.html.erb +++ b/hyrax/app/views/hyrax/crc1280_experiments/_parent_collection.html.erb @@ -1,4 +1,4 @@ -<% parent_collections = Hyrax.query_service.custom_queries.find_parent_collections(resource: collection) %> +<% parent_collections = collection.parent_collections %> <% if parent_collections.present? %> <% parent_collections.each do |collection| %> <%= render 'parent_collection', collection: collection %> diff --git a/hyrax/app/views/hyrax/crc1280_experiments/_title.html.erb b/hyrax/app/views/hyrax/crc1280_experiments/_title.html.erb index 09c40f39..122f7572 100644 --- a/hyrax/app/views/hyrax/crc1280_experiments/_title.html.erb +++ b/hyrax/app/views/hyrax/crc1280_experiments/_title.html.erb @@ -14,14 +14,6 @@ </h2> <% end %> <% end %> - <div class="row"> - <% if is_published?(presenter) %> - <div class="col-md-3"> - <%= render 'citations', presenter: @presenter %> - <%= render 'social_media' %> - </div> - <% end %> - </div> </div> </div> </div> \ No newline at end of file diff --git a/hyrax/app/views/hyrax/crc1280_experiments/show.html.erb b/hyrax/app/views/hyrax/crc1280_experiments/show.html.erb index 202e8e76..108f4354 100644 --- a/hyrax/app/views/hyrax/crc1280_experiments/show.html.erb +++ b/hyrax/app/views/hyrax/crc1280_experiments/show.html.erb @@ -1,5 +1,5 @@ <% presenter ||= @presenter %> -<% work = Hyrax.query_service.find_by(id: presenter.id) %> +<% work = Crc1280Experiment.find(presenter.id) %> <% filter = params[:filter].present? ? params[:filter].permit!.to_h : {} %> <div class="row show-work"> <div class="col-md-12 work-type"> diff --git a/hyrax/config/initializers/downloads_controller_override.rb b/hyrax/config/initializers/downloads_controller_override.rb index 7fd9bd02..f5efb423 100644 --- a/hyrax/config/initializers/downloads_controller_override.rb +++ b/hyrax/config/initializers/downloads_controller_override.rb @@ -10,12 +10,12 @@ Rails.application.config.to_prepare do use_valkyrie: Hyrax.config.use_valkyrie? ) else - Hyrax.query_service.find_by(id: file_set_id) + Hyrax::FileSet.find(file_set_id) end @parent ||= case file_set when Hyrax::Resource - Hyrax.query_service.find_parents(resource: file_set).first + file_set.parent_work else file_set.parent end diff --git a/hyrax/config/initializers/riiif.rb b/hyrax/config/initializers/riiif.rb index eace5cda..25edd426 100644 --- a/hyrax/config/initializers/riiif.rb +++ b/hyrax/config/initializers/riiif.rb @@ -97,8 +97,8 @@ module Hyrax def load_file(id) benchmark "RiiifFileResolver loaded #{id}", level: :debug do fs_id = id.sub(/\A([^\/]*)\/.*/, '\1') - file_set = Hyrax.query_service.find_by(id: fs_id) - file_metadata = Hyrax.custom_queries.find_original_file(file_set: file_set) + file_set = Hyrax::FileSet.find(fs_id) + file_metadata = file_set.original_file file_metadata.file.disk_path.to_s # Stores a local copy in tmpdir end end diff --git a/hyrax/lib/tasks/default_admin_set_for_workflow.rake b/hyrax/lib/tasks/default_admin_set_for_workflow.rake index c0a5b776..5955eabf 100644 --- a/hyrax/lib/tasks/default_admin_set_for_workflow.rake +++ b/hyrax/lib/tasks/default_admin_set_for_workflow.rake @@ -12,7 +12,7 @@ namespace :hyrax do crc_default_admin_set_title = ENV.fetch('CRC_ADMIN_SET_TITLE', 'CRC 1280 Publishing Workflow') [rub_default_admin_set_title, crc_default_admin_set_title].each do |title| - unless AdminSetHelper.find_admin_set_by_property(title: [title]).present? + unless AdminSetHelper.find_by(title: [title]).present? admin_set = Hyrax::AdministrativeSet.new(title: [title]) updated_admin_set = Hyrax.persister.save(resource: admin_set) -- GitLab