Sha256: cc4cf25c9fb960bd4b75d65bac42757d4093f9c1d47a782879c2286e89f60024

Contents?: true

Size: 1.51 KB

Versions: 21

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true
module Hyrax
  # This class stores the id of the default `Hyrax::AdministrativeSet`.  This is
  # used to populate a cache of the default admin set in Hyrax::Configuration.
  #
  # @see Hyrax::Configuration.default_admin_set
  # @see Hyrax::Configuration.default_admin_set_id
  # @see Hyrax::Configuration.reset_default_admin_set
  class DefaultAdministrativeSet < ActiveRecord::Base
    self.table_name = 'hyrax_default_administrative_set'

    class << self
      # Set the default admin set id in the first record.
      # @param default_admin_set_id [String | Valkyrie::ID] id of the new default admin set
      def update(default_admin_set_id:)
        validate_id(default_admin_set_id)
        Hyrax.config.reset_default_admin_set

        # saving default_admin_set_id for the first time
        return new(default_admin_set_id: default_admin_set_id.to_s).save if count.zero?

        # replacing previously saved default_admin_set_id
        existing = first
        existing.default_admin_set_id = default_admin_set_id.to_s
        existing.save
      end

      def save_supported?
        ActiveRecord::Base.connection.table_exists? table_name
      end

      private

      def validate_id(id)
        # The id is validated prior to updating because a bad default admin set
        # will cause lots of problems.
        return true if id.is_a?(String) || id.is_a?(Valkyrie::ID)
        raise ArgumentError, "default_admin_set_id must be a non-blank String or Valkyrie::ID"
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
hyrax-5.1.0.pre.beta1 app/models/hyrax/default_administrative_set.rb
hyrax-5.0.4 app/models/hyrax/default_administrative_set.rb
hyrax-5.0.3 app/models/hyrax/default_administrative_set.rb
hyrax-5.0.2 app/models/hyrax/default_administrative_set.rb
hyrax-5.0.1 app/models/hyrax/default_administrative_set.rb
hyrax-5.0.0 app/models/hyrax/default_administrative_set.rb
hyrax-5.0.0.rc3 app/models/hyrax/default_administrative_set.rb
hyrax-5.0.0.rc2 app/models/hyrax/default_administrative_set.rb
hyrax-5.0.0.rc1 app/models/hyrax/default_administrative_set.rb
hyrax-3.6.0 app/models/hyrax/default_administrative_set.rb
hyrax-4.0.0 app/models/hyrax/default_administrative_set.rb
hyrax-4.0.0.rc3 app/models/hyrax/default_administrative_set.rb
hyrax-4.0.0.rc2 app/models/hyrax/default_administrative_set.rb
hyrax-4.0.0.rc1 app/models/hyrax/default_administrative_set.rb
hyrax-3.5.0 app/models/hyrax/default_administrative_set.rb
hyrax-4.0.0.beta2 app/models/hyrax/default_administrative_set.rb
hyrax-3.4.2 app/models/hyrax/default_administrative_set.rb
hyrax-4.0.0.beta1 app/models/hyrax/default_administrative_set.rb
hyrax-3.4.1 app/models/hyrax/default_administrative_set.rb
hyrax-3.4.0 app/models/hyrax/default_administrative_set.rb