Skip to content

ResourcefulArrayType

The ResourcefulArrayType class provides validation for arrays with typed items and constraints. It supports complex item validation and array-specific rules like uniqueness.

For complete API reference, see ResourcefulArrayType.

Basic Usage

typescript
import { ResourcefulArrayType, ResourcefulStringType } from '@nhtio/lucid-resourceful/definitions'

const tagsType = ResourcefulArrayType({
  items: ResourcefulStringType({ minLength: 1, maxLength: 30 }),
  minItems: 1,
  maxItems: 10,
  uniqueItems: true
})

Configuration

  • items: ResourcefulDataType - Type definition for array items
  • minItems?: number - Minimum array length
  • maxItems?: number - Maximum array length
  • uniqueItems?: boolean - Whether items must be unique

Common Patterns

typescript
class Article extends compose(BaseModel, withResourceful({ name: 'Article' })) {
  // Tag array
  @resourcefulColumn.array({
    type: ResourcefulArrayType({
      items: ResourcefulStringType({ minLength: 1, maxLength: 30 }),
      minItems: 0,
      maxItems: 10,
      uniqueItems: true
    }),
    nullable: true
  })
  declare tags: string[] | null

  // Category IDs
  @resourcefulColumn.array({
    type: ResourcefulArrayType({
      items: ResourcefulUnsignedIntegerType({
        minimum: 1,
        maximum: 999999,
        exclusiveMinimum: false,
        exclusiveMaximum: false,
        multipleOf: 1
      }),
      minItems: 1,
      maxItems: 5,
      uniqueItems: true
    }),
    nullable: false
  })
  declare categoryIds: number[]
}

Composition Support

Array items can use composition patterns:

typescript
const mixedArrayType = ResourcefulArrayType({
  items: {
    oneOf: [
      ResourcefulStringType({ minLength: 1, maxLength: 100 }),
      ResourcefulNumberType({ minimum: 0, maximum: 1000, format: 'double' })
    ]
  },
  maxItems: 50
})

Best Practices

  • Set reasonable array size limits
  • Use uniqueItems for sets of values
  • Consider performance with large arrays
  • Validate item types appropriately