CRUD Validation Command
The crud-validation
command generates validation schemas for a model in your zopio
project. This helps ensure data integrity and validation across your application.
Usage
zopio crud-validation [options]
Options
Option | Description |
---|
-m, --model <name> | Model name |
-f, --fields <fields> | Fields in format “name:type:validations,age:number:required|min=18” |
-o, --output <directory> | Output directory for validation schemas |
-l, --library <library> | Validation library (yup, zod, class-validator) (default: “zod”) |
-h, --help | Display help for command |
Examples
Generate Zod validation schema for a User model
zopio crud-validation --model User --fields "name:string:required,email:string:required|email,age:number:min=18,isActive:boolean"
Generate Yup validation schema
zopio crud-validation --model Product --fields "name:string:required|min=3,price:number:required|min=0,description:string:max=500" --library yup
Generate class-validator decorators
zopio crud-validation --model Customer --fields "name:string:IsNotEmpty,email:string:IsEmail,phone:string:IsPhoneNumber" --library class-validator
Generated Files
When you run the crud-validation
command, validation schemas will be generated based on the specified library:
Zod Schema Example
import { z } from 'zod';
export const UserSchema = z.object({
id: z.string().uuid().optional(),
name: z.string().min(1, { message: "Name is required" }),
email: z.string().email({ message: "Invalid email address" }),
age: z.number().min(18, { message: "Must be at least 18 years old" }),
isActive: z.boolean().optional(),
createdAt: z.date().optional(),
updatedAt: z.date().optional(),
});
export type User = z.infer<typeof UserSchema>;
Yup Schema Example
import * as yup from 'yup';
export const UserSchema = yup.object({
id: yup.string().uuid(),
name: yup.string().required("Name is required"),
email: yup.string().email("Invalid email address").required("Email is required"),
age: yup.number().min(18, "Must be at least 18 years old").required("Age is required"),
isActive: yup.boolean(),
createdAt: yup.date(),
updatedAt: yup.date(),
});
export type User = yup.InferType<typeof UserSchema>;
Class Validator Example
import { IsNotEmpty, IsEmail, Min, IsBoolean, IsUUID, IsDate } from 'class-validator';
export class User {
@IsUUID()
id: string;
@IsNotEmpty({ message: "Name is required" })
name: string;
@IsEmail({}, { message: "Invalid email address" })
@IsNotEmpty({ message: "Email is required" })
email: string;
@Min(18, { message: "Must be at least 18 years old" })
age: number;
@IsBoolean()
isActive: boolean;
@IsDate()
createdAt: Date;
@IsDate()
updatedAt: Date;
}
crud
- Generate basic CRUD operations
crud-schema
- Generate JSON schema and TypeScript interface
crud-unified
- Generate a complete CRUD setup