Custom Validator Generator

The Custom Validator Generator creates reusable validation components that can be used across multiple contracts and models in your Azu application.

Usage

azu generate custom_validator VALIDATOR_NAME [OPTIONS]

Description

Custom validators in Azu applications provide a way to create reusable validation logic that can be shared across different contracts and models. They encapsulate complex validation rules and can be easily tested and maintained.

Options

  • VALIDATOR_NAME - Name of the validator to generate (required)

  • -d, --description DESCRIPTION - Description of the validator

  • -t, --template TEMPLATE - Template to use (default: basic)

  • -f, --force - Overwrite existing files

  • -h, --help - Show help message

Examples

Generate a basic custom validator

This creates:

  • src/validators/email_validator.cr - The validator class

  • spec/validators/email_validator_spec.cr - Test file

Generate a validator with description

Generate specific validator types

Generated Files

Validator Class (src/validators/VALIDATOR_NAME.cr)

Test File (spec/validators/VALIDATOR_NAME_spec.cr)

Validator Patterns

Basic Validator Pattern

Validator with Options

Complex Validator Pattern

Async Validator Pattern

Using Custom Validators

In Contracts

In Models

Creating Validator Instances

Best Practices

1. Keep Validators Focused

Each validator should validate one specific thing:

2. Provide Clear Error Messages

3. Handle Edge Cases

4. Use Type Safety

Testing Validators

Unit Testing

Integration Testing

Common Validator Types

1. Format Validators

Validate data format:

2. Range Validators

Validate numeric ranges:

3. Uniqueness Validators

Validate database uniqueness:

4. Conditional Validators

Validate based on conditions:

  • azu generate contract - Generate validation contracts

  • azu generate model - Generate data models

  • azu generate service - Generate business logic services

  • azu generate endpoint - Generate API endpoints

Templates

The custom validator generator supports different templates:

  • basic - Simple validator with basic structure

  • format - Format validation template

  • range - Range validation template

  • uniqueness - Uniqueness validation template

  • conditional - Conditional validation template

To use a specific template:

Last updated