3.27.2 • Published 6 months ago
@aomex/prisma v3.27.2
Installation
Create base models and validators from prisma schema
pnpm add @aomex/prismaTested 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 = "aomex-prisma"
+ }
model user {
id Int @id @default(autoincrement())
name String
age Int?
}- Execute in terminal
npx prisma generate- See output
// File: node_modules/@aomex/prisma/dist/index.js
export class BaseModel {
constructor(db) {
this.db = db;
}
}
export class BaseUserModel extends BaseModel {
static fields = {
id: rule.int(),
name: rule.string(),
age: rule.int().nullable(),
};
name = 'user';
table = this.db.user;
fields = BaseUserModel.fields;
}
// File: node_modules/@aomex/prisma/dist/index.d.ts
export declare abstract class BaseModel {
protected readonly db: PrismaClient;
constructor(db: PrismaClient);
}
export declare abstract class BaseUserModel extends BaseModel {
fields: {
id: IntValidator<number>;
name: StringValidator<string>;
age: IntValidator<number | null>;
};
readonly name = 'user';
readonly table: Prisma.userDelegate<
Prisma.RejectOnNotFound | Prisma.RejectPerOperation | undefined
>;
readonly fields: BaseUserModel['fields'];
}Combine models
import { BaseUserModel, combineModels } from '@aomex/prisma';
import { PrismaClient } from '@prisma/client';
// File: models/user.model.ts
class UserModel extends BaseUserModel {
async getList() {
return this.table.findMany({});
}
// ...Your own business
}
// FIle: models/index.ts
export const db = new PrismaClient();
export const models = combineModels(db, {
user: UserModel,
});Validators
import { pick, omit } from 'lodash-es';
// IntValidator<number>
const ruleId = models.user.fields.id;
// { id: IntValidator<number>; name: StringValidator<string> }
const sub1 = pick(models.user.fields, 'id', 'name');
// { id: IntValidator<number>; age: IntValidator<number | null>; }
const sub2 = omit(models.user.fields, 'name');3.20.0
8 months ago
3.22.0
8 months ago
3.21.1
8 months ago
3.21.0
8 months ago
3.24.0
8 months ago
3.23.1
8 months ago
3.23.0
8 months ago
3.15.0
10 months ago
3.14.1
11 months ago
3.14.0
12 months ago
3.13.1
12 months ago
3.17.0
9 months ago
3.15.1
10 months ago
3.14.2
11 months ago
3.17.2
9 months ago
3.18.0
9 months ago
3.17.1
9 months ago
3.19.2
8 months ago
3.17.3
9 months ago
3.13.0
12 months ago
3.26.0
8 months ago
3.23.3
8 months ago
3.25.0
8 months ago
3.23.2
8 months ago
3.27.1
7 months ago
3.27.0
8 months ago
3.27.2
6 months ago
0.0.17
2 years ago
0.0.16
2 years ago
0.0.15
2 years ago