@velopays/prisma-crud-generator
Version:
Generate CRUD operations and tests from Prisma models for NestJS
95 lines • 2.44 kB
TypeScript
export interface GeneratorConfig {
prismaSchemaPath: string;
outputPath: string;
apiPrefix?: string;
swaggerEnabled?: boolean;
customTemplatesPath?: string;
schemaName?: string;
clientPath?: string;
generateCommonFiles?: boolean;
generateRootModules?: boolean;
imports?: {
apiResponseDto?: string;
jwtAuthGuard?: string;
permissionGuard?: string;
requirePermission?: string;
permissionTypes?: string;
baseQueryDto?: string;
prismaService?: string;
};
includeRelationsInCreateDto?: boolean;
includeRelationsInQueryDto?: boolean;
schemaMap?: Record<string, string>;
}
export interface ModelInfo {
name: string;
pluralName: string;
kebabName: string;
pascalName: string;
camelName: string;
fields: FieldInfo[];
relations: RelationInfo[];
hasCompositeId: boolean;
compositeIdFields?: string[];
uniqueFields: UniqueFieldInfo[];
indexes: IndexInfo[];
}
export interface FieldInfo {
name: string;
type: string;
kind?: string;
isList: boolean;
isRequired: boolean;
isUnique: boolean;
isId: boolean;
isUpdatedAt: boolean;
isCreatedAt: boolean;
default?: any;
documentation?: string;
validations: ValidationInfo[];
}
export interface RelationInfo {
name: string;
type: string;
isList: boolean;
isRequired: boolean;
relatedModel: string;
foreignKeys?: string[];
references?: string[];
}
export interface ValidationInfo {
type: string;
value?: any;
}
export interface UniqueFieldInfo {
name: string;
fields: string[];
isComposite: boolean;
}
export interface IndexInfo {
name?: string;
fields: string[];
type?: 'UNIQUE' | 'NORMAL' | 'FULLTEXT';
isComposite: boolean;
}
export interface TemplateData extends ModelInfo {
imports: ImportInfo[];
apiPrefix: string;
swaggerEnabled: boolean;
schemaName: string;
apiResponseDtoPath: string;
jwtAuthGuardPath: string;
permissionGuardPath: string;
requirePermissionDecoratorPath: string;
permissionTypesPath: string;
baseQueryDtoPath: string;
prismaServicePath: string;
includeRelationsInCreateDto: boolean;
includeRelationsInQueryDto: boolean;
schemaMap?: Record<string, string>;
}
export interface ImportInfo {
name: string;
from: string;
}
//# sourceMappingURL=types.d.ts.map