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 classspec/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)
src/validators/VALIDATOR_NAME.cr)Test File (spec/validators/VALIDATOR_NAME_spec.cr)
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:
Related Commands
azu generate contract- Generate validation contractsazu generate model- Generate data modelsazu generate service- Generate business logic servicesazu generate endpoint- Generate API endpoints
Templates
The custom validator generator supports different templates:
basic- Simple validator with basic structureformat- Format validation templaterange- Range validation templateuniqueness- Uniqueness validation templateconditional- Conditional validation template
To use a specific template:
Last updated