Class: Udb::ArrayConstraints

Inherits:
T::Struct
  • Object
show all
Defined in:
lib/udb/z3.rb

Overview

Aggregates all JSON schema constraints for an array parameter

This struct collects various array validation rules from JSON schemas:

  • Position-specific item schemas (tuple validation)
  • General item schema for remaining positions
  • "contains" requirement (at least one matching item)
  • Uniqueness constraint
  • Size bounds (min/max)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(item_by_idx: {}, item_rest: nil, contains: nil, unique: false, max_size: nil, min_size: nil)

Parameters:

  • item_by_idx (Hash{Integer => TypeConstraint}) (defaults to: {})

    Schema applied to specific array positions (for tuple-style arrays)

  • item_rest (TypeConstraint, nil) (defaults to: nil)

    Schema applied to all positions not covered by item_by_idx

  • contains (TypeConstraint, nil) (defaults to: nil)

    When present, array must contain at least one item matching this schema

  • unique (Boolean) (defaults to: false)

    Whether array items must be unique (JSON schema "uniqueItems")

  • max_size (Integer, nil) (defaults to: nil)

    Maximum number of elements allowed

  • min_size (Integer, nil) (defaults to: nil)

    Minimum number of elements required



# File ''

prop :item_by_idx, T::Hash[Integer, TypeConstraint], default: {}
prop :item_rest, T.nilable(TypeConstraint)
prop :contains, T.nilable(TypeConstraint)
prop :unique, T::Boolean, default: false
prop :max_size, T.nilable(Integer)
prop :min_size, T.nilable(Integer)

Instance Attribute Details

#containsTypeConstraint?

When present, array must contain at least one item matching this schema

Returns:



# File ''

prop :contains, T.nilable(TypeConstraint)

#item_by_idxHash{Integer => TypeConstraint}

Schema applied to specific array positions (for tuple-style arrays)

Returns:



# File ''

prop :item_by_idx, T::Hash[Integer, TypeConstraint], default: {}

#item_restTypeConstraint?

Schema applied to all positions not covered by item_by_idx

Returns:



# File ''

prop :item_rest, T.nilable(TypeConstraint)

#max_sizeInteger?

Maximum number of elements allowed

Returns:

  • (Integer, nil)


# File ''

prop :max_size, T.nilable(Integer)

#min_sizeInteger?

Minimum number of elements required

Returns:

  • (Integer, nil)


# File ''

prop :min_size, T.nilable(Integer)

#uniqueBoolean

Whether array items must be unique (JSON schema "uniqueItems")

Returns:

  • (Boolean)


# File ''

prop :unique, T::Boolean, default: false