@brakebein/prisma-generator-nestjs-dto
Advanced tools
Comparing version 1.24.0-beta0 to 1.24.0-beta1
@@ -104,2 +104,3 @@ "use strict"; | ||
properties.push({ name: 'enum', value: field.type }); | ||
properties.push({ name: 'enumName', value: field.type }); | ||
} | ||
@@ -106,0 +107,0 @@ const defaultValue = getDefaultValue(field); |
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.computeConnectDtoParams = void 0; | ||
const slash_1 = __importDefault(require("slash")); | ||
const node_path_1 = __importDefault(require("node:path")); | ||
const field_classifiers_1 = require("../field-classifiers"); | ||
@@ -87,6 +92,12 @@ const helpers_1 = require("../helpers"); | ||
field.type = 'Float'; | ||
if (field.kind === 'enum') { | ||
imports.push({ | ||
from: (0, slash_1.default)(`${(0, helpers_1.getRelativePath)(model.output.entity, templateHelpers.config.outputPath)}${node_path_1.default.sep}enums`), | ||
destruct: [field.type], | ||
}); | ||
} | ||
} | ||
return (0, helpers_1.mapDMMFToParsedField)(field, overrides, decorators); | ||
}); | ||
const importPrismaClient = (0, helpers_1.makeImportsFromPrismaClient)(fields, templateHelpers.config.prismaClientImportPath); | ||
const importPrismaClient = (0, helpers_1.makeImportsFromPrismaClient)(fields, templateHelpers.config.prismaClientImportPath, !templateHelpers.config.noDependencies); | ||
const importNestjsSwagger = (0, api_decorator_1.makeImportsFromNestjsSwagger)(fields, apiExtraModels); | ||
@@ -93,0 +104,0 @@ const importClassValidator = (0, class_validator_1.makeImportsFromClassValidator)(classValidators); |
@@ -69,4 +69,8 @@ "use strict"; | ||
return result; | ||
if ((0, field_classifiers_1.isRequiredWithDefaultValue)(field)) | ||
return result; | ||
if ((0, field_classifiers_1.isRequiredWithDefaultValue)(field)) { | ||
if (templateHelpers.config.showDefaultValues) | ||
overrides.isRequired = false; | ||
else | ||
return result; | ||
} | ||
} | ||
@@ -139,6 +143,12 @@ if (isDtoOptional) { | ||
field.type = 'Float'; | ||
if (field.kind === 'enum') { | ||
imports.push({ | ||
from: (0, slash_1.default)(`${(0, helpers_1.getRelativePath)(model.output.entity, templateHelpers.config.outputPath)}${node_path_1.default.sep}enums`), | ||
destruct: [field.type], | ||
}); | ||
} | ||
} | ||
return [...result, (0, helpers_1.mapDMMFToParsedField)(field, overrides, decorators)]; | ||
}, []); | ||
const importPrismaClient = (0, helpers_1.makeImportsFromPrismaClient)(fields, templateHelpers.config.prismaClientImportPath); | ||
const importPrismaClient = (0, helpers_1.makeImportsFromPrismaClient)(fields, templateHelpers.config.prismaClientImportPath, !templateHelpers.config.noDependencies); | ||
const importNestjsSwagger = (0, api_decorator_1.makeImportsFromNestjsSwagger)(fields, apiExtraModels); | ||
@@ -145,0 +155,0 @@ const importClassValidator = (0, class_validator_1.makeImportsFromClassValidator)(classValidators); |
@@ -112,6 +112,12 @@ "use strict"; | ||
field.type = 'Float'; | ||
if (field.kind === 'enum') { | ||
imports.push({ | ||
from: (0, slash_1.default)(`${(0, helpers_1.getRelativePath)(model.output.entity, templateHelpers.config.outputPath)}${node_path_1.default.sep}enums`), | ||
destruct: [field.type], | ||
}); | ||
} | ||
} | ||
return [...result, (0, helpers_1.mapDMMFToParsedField)(field, overrides, decorators)]; | ||
}, []); | ||
const importPrismaClient = (0, helpers_1.makeImportsFromPrismaClient)(fields, templateHelpers.config.prismaClientImportPath); | ||
const importPrismaClient = (0, helpers_1.makeImportsFromPrismaClient)(fields, templateHelpers.config.prismaClientImportPath, !templateHelpers.config.noDependencies); | ||
const importNestjsSwagger = (0, api_decorator_1.makeImportsFromNestjsSwagger)(fields, apiExtraModels); | ||
@@ -118,0 +124,0 @@ return { |
@@ -79,6 +79,12 @@ "use strict"; | ||
field.type = 'Float'; | ||
if (field.kind === 'enum') { | ||
imports.push({ | ||
from: (0, slash_1.default)(`${(0, helpers_1.getRelativePath)(model.output.entity, templateHelpers.config.outputPath)}${node_path_1.default.sep}enums`), | ||
destruct: [field.type], | ||
}); | ||
} | ||
} | ||
return [...result, (0, helpers_1.mapDMMFToParsedField)(field, overrides, decorators)]; | ||
}, []); | ||
const importPrismaClient = (0, helpers_1.makeImportsFromPrismaClient)(fields, templateHelpers.config.prismaClientImportPath); | ||
const importPrismaClient = (0, helpers_1.makeImportsFromPrismaClient)(fields, templateHelpers.config.prismaClientImportPath, !templateHelpers.config.noDependencies); | ||
const importNestjsSwagger = (0, api_decorator_1.makeImportsFromNestjsSwagger)(fields, apiExtraModels); | ||
@@ -85,0 +91,0 @@ return { |
@@ -70,4 +70,8 @@ "use strict"; | ||
return result; | ||
if ((0, field_classifiers_1.isRequiredWithDefaultValue)(field)) | ||
return result; | ||
if ((0, field_classifiers_1.isRequiredWithDefaultValue)(field)) { | ||
if (templateHelpers.config.showDefaultValues) | ||
overrides.isRequired = false; | ||
else | ||
return result; | ||
} | ||
} | ||
@@ -149,6 +153,12 @@ if ((0, field_classifiers_1.isAnnotatedWith)(field, annotations_1.DTO_UPDATE_REQUIRED)) { | ||
field.type = 'Float'; | ||
if (field.kind === 'enum') { | ||
imports.push({ | ||
from: (0, slash_1.default)(`${(0, helpers_1.getRelativePath)(model.output.entity, templateHelpers.config.outputPath)}${node_path_1.default.sep}enums`), | ||
destruct: [field.type], | ||
}); | ||
} | ||
} | ||
return [...result, (0, helpers_1.mapDMMFToParsedField)(field, overrides, decorators)]; | ||
}, []); | ||
const importPrismaClient = (0, helpers_1.makeImportsFromPrismaClient)(fields, templateHelpers.config.prismaClientImportPath); | ||
const importPrismaClient = (0, helpers_1.makeImportsFromPrismaClient)(fields, templateHelpers.config.prismaClientImportPath, !templateHelpers.config.noDependencies); | ||
const importNestjsSwagger = (0, api_decorator_1.makeImportsFromNestjsSwagger)(fields, apiExtraModels); | ||
@@ -155,0 +165,0 @@ const importClassValidator = (0, class_validator_1.makeImportsFromClassValidator)(classValidators); |
@@ -10,3 +10,3 @@ import type { DMMF } from '@prisma/generator-helper'; | ||
}>(source: T[], target: T[], prop: string): void; | ||
export declare const makeImportsFromPrismaClient: (fields: ParsedField[], prismaClientImportPath: string) => ImportStatementParams[]; | ||
export declare const makeImportsFromPrismaClient: (fields: ParsedField[], prismaClientImportPath: string, importEnums?: boolean) => ImportStatementParams[]; | ||
export declare const mapDMMFToParsedField: (field: DMMF.Field, overrides?: Partial<DMMF.Field>, decorators?: IDecorators) => ParsedField; | ||
@@ -13,0 +13,0 @@ export declare const getRelationScalars: (fields: DMMF.Field[]) => Record<string, string[]>; |
@@ -25,4 +25,6 @@ "use strict"; | ||
exports.concatUniqueIntoArray = concatUniqueIntoArray; | ||
const makeImportsFromPrismaClient = (fields, prismaClientImportPath) => { | ||
const enumsToImport = (0, exports.uniq)(fields.filter(({ kind }) => kind === 'enum').map(({ type }) => type)); | ||
const makeImportsFromPrismaClient = (fields, prismaClientImportPath, importEnums = true) => { | ||
const enumsToImport = importEnums | ||
? (0, exports.uniq)(fields.filter(({ kind }) => kind === 'enum').map(({ type }) => type)) | ||
: []; | ||
const importPrisma = fields | ||
@@ -29,0 +31,0 @@ .filter(({ kind }) => kind === 'scalar') |
@@ -25,4 +25,5 @@ import { DMMF } from '@prisma/generator-helper'; | ||
wrapRelationsAsType: boolean; | ||
showDefaultValues: boolean; | ||
} | ||
export declare const run: ({ output, dmmf, ...options }: RunParam) => WriteableFileSpecs[]; | ||
export {}; |
@@ -18,6 +18,7 @@ "use strict"; | ||
const generate_plain_dto_1 = require("./generate-plain-dto"); | ||
const generate_enums_1 = require("./generate-enums"); | ||
const annotations_1 = require("./annotations"); | ||
const field_classifiers_1 = require("./field-classifiers"); | ||
const run = ({ output, dmmf, ...options }) => { | ||
const { exportRelationModifierClasses, outputToNestJsResourceStructure, flatResourceStructure, fileNamingStyle = 'camel', classValidation, outputType, noDependencies, definiteAssignmentAssertion, requiredResponseApiProperty, prismaClientImportPath, outputApiPropertyType, generateFileTypes, wrapRelationsAsType, ...preAndSuffixes } = options; | ||
const { exportRelationModifierClasses, outputToNestJsResourceStructure, flatResourceStructure, fileNamingStyle = 'camel', classValidation, outputType, noDependencies, definiteAssignmentAssertion, requiredResponseApiProperty, prismaClientImportPath, outputApiPropertyType, generateFileTypes, wrapRelationsAsType, showDefaultValues, ...preAndSuffixes } = options; | ||
const transformers = { | ||
@@ -37,2 +38,3 @@ camel: case_1.camel, | ||
definiteAssignmentAssertion, | ||
outputPath: output, | ||
prismaClientImportPath, | ||
@@ -42,2 +44,3 @@ requiredResponseApiProperty, | ||
wrapRelationsAsType, | ||
showDefaultValues, | ||
...preAndSuffixes, | ||
@@ -80,2 +83,10 @@ }); | ||
})); | ||
const enumFiles = []; | ||
if (noDependencies) { | ||
(0, utils_1.logger)('Processing enums'); | ||
enumFiles.push({ | ||
fileName: node_path_1.default.join(output, 'enums.ts'), | ||
content: (0, generate_enums_1.generateEnums)(dmmf.datamodel.enums), | ||
}); | ||
} | ||
const typeFiles = filteredTypes.map((model) => { | ||
@@ -169,4 +180,4 @@ (0, utils_1.logger)(`Processing Type ${model.name}`); | ||
}); | ||
return [...typeFiles, ...modelFiles].flat(); | ||
return [...typeFiles, ...modelFiles, ...enumFiles].flat(); | ||
}; | ||
exports.run = run; |
@@ -23,7 +23,9 @@ import { ImportStatementParams, ParsedField } from './types'; | ||
requiredResponseApiProperty: boolean; | ||
outputPath: string; | ||
prismaClientImportPath: string; | ||
outputApiPropertyType: boolean; | ||
wrapRelationsAsType: boolean; | ||
showDefaultValues: boolean; | ||
} | ||
export declare const makeHelpers: ({ connectDtoPrefix, createDtoPrefix, updateDtoPrefix, dtoSuffix, entityPrefix, entitySuffix, transformClassNameCase, transformFileNameCase, classValidation, outputType, noDependencies, definiteAssignmentAssertion, requiredResponseApiProperty, prismaClientImportPath, outputApiPropertyType, wrapRelationsAsType, }: MakeHelpersParam) => { | ||
export declare const makeHelpers: ({ connectDtoPrefix, createDtoPrefix, updateDtoPrefix, dtoSuffix, entityPrefix, entitySuffix, transformClassNameCase, transformFileNameCase, classValidation, outputType, noDependencies, definiteAssignmentAssertion, requiredResponseApiProperty, outputPath, prismaClientImportPath, outputApiPropertyType, wrapRelationsAsType, showDefaultValues, }: MakeHelpersParam) => { | ||
config: { | ||
@@ -41,5 +43,7 @@ connectDtoPrefix: string; | ||
requiredResponseApiProperty: boolean; | ||
outputPath: string; | ||
prismaClientImportPath: string; | ||
outputApiPropertyType: boolean; | ||
wrapRelationsAsType: boolean; | ||
showDefaultValues: boolean; | ||
}; | ||
@@ -46,0 +50,0 @@ apiExtraModels: (names: string[]) => string; |
@@ -66,3 +66,3 @@ "use strict"; | ||
exports.importStatements = importStatements; | ||
const makeHelpers = ({ connectDtoPrefix, createDtoPrefix, updateDtoPrefix, dtoSuffix, entityPrefix, entitySuffix, transformClassNameCase = exports.echo, transformFileNameCase = exports.echo, classValidation, outputType, noDependencies, definiteAssignmentAssertion, requiredResponseApiProperty, prismaClientImportPath, outputApiPropertyType, wrapRelationsAsType, }) => { | ||
const makeHelpers = ({ connectDtoPrefix, createDtoPrefix, updateDtoPrefix, dtoSuffix, entityPrefix, entitySuffix, transformClassNameCase = exports.echo, transformFileNameCase = exports.echo, classValidation, outputType, noDependencies, definiteAssignmentAssertion, requiredResponseApiProperty, outputPath, prismaClientImportPath, outputApiPropertyType, wrapRelationsAsType, showDefaultValues, }) => { | ||
const className = (name, prefix = '', suffix = '') => `${prefix}${transformClassNameCase(name)}${suffix}`; | ||
@@ -108,5 +108,6 @@ const fileName = (name, prefix = '', suffix = '', withExtension = false) => `${prefix}${transformFileNameCase(name)}${suffix}${(0, exports.when)(withExtension, '.ts')}`; | ||
? field.type | ||
: ((field.relationName | ||
: (field.relationName | ||
? entityName(field.type) | ||
: dtoName(field.type, doFullUpdate ? 'create' : dtoType)) + (0, exports.when)(wrapRelationsAsType, 'AsType')))}${(0, exports.when)(field.isList, '[]')}`; | ||
: dtoName(field.type, doFullUpdate ? 'create' : dtoType)) + | ||
(0, exports.when)(wrapRelationsAsType, 'AsType'))}${(0, exports.when)(field.isList, '[]')}`; | ||
}; | ||
@@ -132,5 +133,7 @@ const fieldToDtoProp = (field, dtoType, useInputTypes = false, forceOptional = false) => `${(0, api_decorator_1.decorateApiProperty)(field)}${(0, class_validator_1.decorateClassValidators)(field)}${field.name}${(0, exports.unless)(field.isRequired && !forceOptional, '?', (0, exports.when)(definiteAssignmentAssertion, '!'))}: ${fieldType(field, dtoType, useInputTypes)} ${(0, exports.when)(field.isNullable, ' | ' + | ||
requiredResponseApiProperty, | ||
outputPath, | ||
prismaClientImportPath, | ||
outputApiPropertyType, | ||
wrapRelationsAsType, | ||
showDefaultValues, | ||
}, | ||
@@ -137,0 +140,0 @@ apiExtraModels, |
@@ -1,2 +0,2 @@ | ||
import type { GeneratorOptions } from '@prisma/generator-helper'; | ||
import { GeneratorOptions } from '@prisma/generator-helper'; | ||
export declare const generate: (options: GeneratorOptions) => Promise<void[]>; |
@@ -76,2 +76,3 @@ "use strict"; | ||
const wrapRelationsAsType = stringToBoolean(options.generator.config.wrapRelationsAsType, false); | ||
const showDefaultValues = stringToBoolean(options.generator.config.showDefaultValues, false); | ||
const results = (0, generator_1.run)({ | ||
@@ -99,2 +100,3 @@ output, | ||
wrapRelationsAsType, | ||
showDefaultValues, | ||
}); | ||
@@ -116,9 +118,14 @@ const indexCollections = {}; | ||
const content = []; | ||
Object.keys(indexCollections) | ||
.sort() | ||
.forEach((dirName) => { | ||
const base = dirName | ||
.split(/[\\\/]/) | ||
.slice(flatResourceStructure ? -1 : -2); | ||
content.push(`export * from './${base[0]}${base[1] ? '/' + base[1] : ''}';`); | ||
Object.entries(indexCollections) | ||
.sort((a, b) => a[0].localeCompare(b[0])) | ||
.forEach(([dirName, file]) => { | ||
if (output === dirName) { | ||
content.push(file.content); | ||
} | ||
else { | ||
const base = dirName | ||
.split(/[\\\/]/) | ||
.slice(flatResourceStructure ? -1 : -2); | ||
content.push(`export * from './${base[0]}${base[1] ? '/' + base[1] : ''}';`); | ||
} | ||
}); | ||
@@ -125,0 +132,0 @@ indexCollections[output] = { |
{ | ||
"name": "@brakebein/prisma-generator-nestjs-dto", | ||
"description": "Generates DTO and Entity classes from Prisma Schema for NestJS", | ||
"version": "1.24.0-beta0", | ||
"version": "1.24.0-beta1", | ||
"license": "Apache-2.0", | ||
@@ -6,0 +6,0 @@ "author": { |
177742
55
2717