@brakebein/prisma-generator-nestjs-dto
Version:
Generates DTO and Entity classes from Prisma Schema for NestJS
97 lines (96 loc) • 2.48 kB
TypeScript
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;
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[];
}