Sha256: f93002b9556c49f82f50a077f440662ca69f61b76e0a7f041240f4c3c7d550d3
Contents?: true
Size: 1.21 KB
Versions: 15
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true require "dry/validation" require "refinements/array" module Tana module Requests # Validates a generic node within an API request. class Node < Dry::Validation::Contract TYPES = %w[boolean date field file plain reference url].freeze using Refinements::Array def initialize(types: TYPES, **) @types = types super(**) end json do optional(:attributeId).filled :string optional(:contentType).filled :string optional(:dataType).filled :string optional(:description).filled :string optional(:file).filled :string optional(:filename).filled :string optional(:id).filled :string optional(:name).filled :string optional(:supertags).array(:hash) { required(:id).filled :string } optional(:type).filled :string optional(:value).filled :bool end rule :type do key.failure "is invalid. Use: #{types.to_usage :or}" if key? && !types.include?(value) end rule :dataType do key.failure "is invalid. Use: #{types.to_usage :or}" if key? && !types.include?(value) end private attr_reader :types end end end
Version data entries
15 entries across 15 versions & 1 rubygems