require 'dry/validation' require 'dry/validation/schema' module Locabulary # Responsible for providing a defined and clear schema for each of the locabulary items. Schema = Dry::Validation.Schema do required(:predicate_name).filled(format?: /\A[a-z_]+\Z/) required(:values).each do required(:term_label).filled(:str?) optional(:description).maybe(:str?) optional(:grouping).maybe(:str?) optional(:affiliation).maybe(:str?) optional(:default_presentation_sequence).maybe(:int?) required(:activated_on).filled(format?: /\A\d{4}-\d{2}-\d{2}\Z/) optional(:deactivated_on).maybe(format?: /\A\d{4}-\d{2}-\d{2}\Z/) end end end