1.4.3 • Published 1 year ago

prisma-dto v1.4.3

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

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