lib/cocina/models/admin_policy.rb in cocina-models-0.19.0 vs lib/cocina/models/admin_policy.rb in cocina-models-0.20.0

- old
+ new

@@ -1,27 +1,23 @@ # frozen_string_literal: true module Cocina module Models # An admin policy object. - class AdminPolicy < Dry::Struct + class AdminPolicy < Struct include Checkable TYPES = [ Vocab.admin_policy ].freeze # Subschema for access concerns - class Access < Dry::Struct - def self.from_dynamic(_dyn) - params = {} - Access.new(params) - end + class Access < Struct end # Subschema for administrative concerns - class Administrative < Dry::Struct + class Administrative < Struct # This was copied from the ActiveFedora defaults: Dor::AdminPolicyObject.new.defaultObjectRights.content DEFAULT_OBJECT_RIGHTS = <<~XML <?xml version="1.0" encoding="UTF-8"?> <rightsMetadata> @@ -55,25 +51,16 @@ attribute :registration_workflow, Types::String.optional.default(nil) # Allowing hasAdminPolicy to be omittable for now (until rolled out to consumers), # but I think it's actually required for every Admin Policy attribute :hasAdminPolicy, Types::Coercible::String.optional.default(nil) - - def self.from_dynamic(dyn) - params = { - default_object_rights: dyn['default_object_rights'], - registration_workflow: dyn['registration_workflow'] - } - params[:hasAdminPolicy] = dyn['hasAdminPolicy'] - Administrative.new(params) - end end - class Identification < Dry::Struct + class Identification < Struct end - class Structural < Dry::Struct + class Structural < Struct end attribute :externalIdentifier, Types::Strict::String attribute :type, Types::String.enum(*TYPES) attribute :label, Types::Strict::String @@ -85,10 +72,10 @@ attribute :description, Description.optional.default(nil) attribute(:identification, Identification.default { Identification.new }) attribute(:structural, Structural.default { Structural.new }) def self.from_dynamic(dyn) - AdminPolicyBuilder.build(self, dyn) + AdminPolicy.new(dyn) end def self.from_json(json) from_dynamic(JSON.parse(json)) end