1.4.3 • Published 1 year ago
prisma-dto v1.4.3
Define your prisma schema using classes and decorators with similar syntax to Typeorm.
Installation
npm install prisma-dto reflect-metadata
Usage
Define your models and fields in your class DTO
import {Relation} from "./relation";
@Model()
export class Post {
@Field("id", { primary: true })
id!: number;
@Field("string")
name!: string;
// Create an implicit many to many relationship
@Field(() => User, { array: true })
likedBy!: User[];
@Field(() => User)
@Relation('Author', { references: ['id'], fields: ['authorId'] })
author!: any;
@Field('int')
authorId!: number;
}
@Model()
export class User {
constructor(example: IExample) {
this.id = example.id;
this.name = example.name;
this.levels = example.levels;
}
@Field("id", { primary: true })
id!: number;
@Field("string", { nullable: true })
name?: string;
@Field(() => Post, { array: true })
@Relation('author')
posts!: Post[];
// Create an implicit many to many relationship
@Field(() => Post, { array: true })
likedPosts!: Post[];
// Enums can also be an array of strings
@Field("enum", { enum: UserRole })
role?: UserRole;
}
enum UserRole {
USER,
ADMIN,
}
Generating Your Schema
- installing the prisma-dto-generator package on your node server
npm install prisma-dto-generator
- creating a file containing the following in the prisma folder
- execute this file via
npx ts-node prisma/prisma-dto.ts
import { generatePrismaSchema } from "prisma-dto-generator";
generatePrismaSchema([User, Post], "schema.prisma");
db {
provider = "postgresql"
url = env("DATABASE_URL")
}
client {
provider = "prisma-client-js"
}
model Post {
id Int @id @default(autoincrement())
name String
likedBy User[]
author User @relation('author', fields: [authorId], references: [id])
authorId Int
}
model User {
id Int @id @default(autoincrement())
name String?
posts Post[] @relation("author")
likedPosts Post[]
role UserRole?
}
enum UserRole {
USER
ADMIN
}
Enjoy!
1.2.0
1 year ago
1.3.7
1 year ago
1.2.8
1 year ago
1.3.6
1 year ago
1.2.7
1 year ago
1.1.8
1 year ago
1.3.5
1 year ago
1.2.6
1 year ago
1.1.7
1 year ago
1.4.3
1 year ago
1.3.4
1 year ago
1.1.6
1 year ago
1.4.2
1 year ago
1.2.4
1 year ago
1.4.1
1 year ago
1.2.3
1 year ago
1.4.0
1 year ago
1.3.1
1 year ago
1.2.2
1 year ago
1.3.0
1 year ago
1.2.1
1 year ago
1.3.9
1 year ago
1.3.8
1 year ago
1.1.5
1 year ago
1.1.4
1 year ago
1.1.3
1 year ago
1.1.2
1 year ago
1.1.1
1 year ago
1.1.0
1 year ago
1.0.93
1 year ago
1.0.92
1 year ago
1.0.91
1 year ago
1.0.9
1 year ago
1.0.8
1 year ago
1.0.7
1 year ago
1.0.6
1 year ago
1.0.5
1 year ago
1.0.4
1 year ago
1.0.3
1 year ago
1.0.2
1 year ago
1.0.1
1 year ago
1.0.0
1 year ago