Installation
pnpm add @aomex/prisma-to-validator
Tested engines
- mysql
- postgresql
- mongodb
- sqlite
Generator
- Inject to File
prisma/schema.prisma
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
+ generator aomex {
+ provider = "prisma-to-aomex-validator"
+ }
model user {
id Int @id @default(autoincrement())
name String
age Int?
}
- Execute in terminal
- See output
// File: node_modules/@aomex/prisma-to-validator/dist/index.js
export const UserModel = {
/**
* Original: `Int`
*
* Runtime: `rule.int()`
*/
id: rule.int(),
/**
* Original: `String`
*
* Runtime: `rule.string()`
*/
name: rule.string(),
/**
* Original: `Int?`
*
* Runtime: `rule.int().nullable()`
*/
age: rule.int().nullable(),
};
// File: node_modules/@aomex/prisma-to-validator/dist/index.d.ts
export declare const UserModel: {
/**
* Original: `Int`
*
* Runtime: `rule.int()`
*/
id: IntValidator<number>;
/**
* Original: `String`
*
* Runtime: `rule.string()`
*/
name: StringValidator<string>;
/**
* Original: `Int?`
*
* Runtime: `rule.int().nullable()`
*/
age: IntValidator<number | null>;
};
Import generated models
import { UserModel, pick, omit } from '@aomex/prisma-to-validator';
// IntValidator<number>
const ruleId = UserModel.id;
// { id: IntValidator<number>; name: StringValidator<string> }
const sub1 = pick(UserModel, 'id', 'name');
// { id: IntValidator<number>; age: IntValidator<number | null>; }
const sub2 = omit(UserModel, 'name');