UNPKG

@brakebein/prisma-generator-nestjs-dto

Version:

Generates DTO and Entity classes from Prisma Schema for NestJS

98 lines (97 loc) 2.5 kB
import { DMMF } from '@prisma/generator-helper'; import { WritableDeep } from 'type-fest'; export interface Model extends WritableDeep<DMMF.Model> { output: { dto: string; entity: string; }; } export interface ParsedField { kind: DMMF.FieldKind | 'relation-input'; name: string; type: string; modelName?: string; documentation?: string; isRequired: boolean; isList: boolean; isId: boolean; isUnique: boolean; isReadOnly: boolean; isUpdatedAt?: boolean; isNullable?: boolean; hasDefaultValue?: boolean; default?: any; apiProperties?: IApiProperty[]; apiHideProperty?: boolean; classValidators?: IClassValidator[]; relationName?: string; relationFromFields?: string[]; relationToFields?: string[]; pureType?: boolean; } export interface ExtraModel { originalName: string; preAndPostfixedName: string; isLocal?: boolean; } export interface ImportStatementParams { from: string; default?: string | { '*': string; }; destruct?: (string | Record<string, string>)[]; } export interface DtoParams { model: WritableDeep<DMMF.Model>; fields: ParsedField[]; imports: ImportStatementParams[]; } export interface ConnectDtoParams extends DtoParams { extraClasses: string[]; apiExtraModels: string[]; } export interface CreateDtoParams extends DtoParams { extraClasses: string[]; apiExtraModels: string[]; } export interface UpdateDtoParams extends DtoParams { extraClasses: string[]; apiExtraModels: string[]; } export interface EntityParams extends DtoParams { apiExtraModels: string[]; } export interface PlainDtoParams extends DtoParams { apiExtraModels: string[]; } export interface ModelParams { connect: ConnectDtoParams; create: CreateDtoParams; update: UpdateDtoParams; entity: EntityParams; plain: PlainDtoParams; } export interface TypeParams { create: CreateDtoParams; update: UpdateDtoParams; plain: PlainDtoParams; } export type WriteableFileSpecs = { fileName: string; content: string; }; export type NamingStyle = 'snake' | 'camel' | 'pascal' | 'kebab'; export interface IApiProperty { name: string; value: string; noEncapsulation?: boolean; } export interface IClassValidator { name: string; value?: string; } export interface IDecorators { apiProperties?: IApiProperty[]; apiHideProperty?: boolean; classValidators?: IClassValidator[]; }