From 398c3fb414c513c8c5a3cbe57b86ffcfda5e9375 Mon Sep 17 00:00:00 2001 From: JongBeom Kim Date: Mon, 12 Aug 2024 18:28:32 +0900 Subject: [PATCH 1/6] doc: fix wrong example filename --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ad31f62..d3c809b 100755 --- a/README.md +++ b/README.md @@ -132,7 +132,7 @@ export class ProductDto extends IntersectionType( ``` ```typescript - // product.ts + // company.ts import { Product } from './product' import { ApiProperty } from '@nestjs/swagger' @@ -161,7 +161,7 @@ export class ProductDto extends IntersectionType( ``` ```typescript - // category.ts + // product.ts import { Category } from './category' import { Company } from './company' import { ProductType } from '@prisma/client' From 8e83027bfe382b06cba704be225572098dd2b668 Mon Sep 17 00:00:00 2001 From: Jad Chahed <46532649+Jad31@users.noreply.github.com> Date: Mon, 12 Aug 2024 11:55:47 +0200 Subject: [PATCH 2/6] fix: filenames in readme (#64) From d4db372ba770158c4db8eb5adf82e8b8e70852e1 Mon Sep 17 00:00:00 2001 From: Ashen Gunaratne Date: Mon, 12 Aug 2024 15:27:15 +0530 Subject: [PATCH 3/6] Update primitive typing of Json (#69) --- src/convertor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/convertor.ts b/src/convertor.ts index c08d547..341c461 100755 --- a/src/convertor.ts +++ b/src/convertor.ts @@ -28,7 +28,7 @@ const primitiveMapType: Record = { String: 'string', DateTime: 'Date', Boolean: 'boolean', - Json: 'object', + Json: 'Record | unknown[] | boolean | string | number | null', BigInt: 'BigInt', Float: 'number', Decimal: 'number', From 6633e7270826ae8cf1f026b65aaf948a8acc17af Mon Sep 17 00:00:00 2001 From: JongBeom Kim Date: Mon, 12 Aug 2024 18:58:49 +0900 Subject: [PATCH 4/6] pckg: version up --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6c32638..2181be1 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "prisma-class-generator", - "version": "0.2.9", + "version": "0.2.10", "description": "Class generator from Prisma schema", "main": "dist/index.js", "license": "MIT", From ed55c464423e0f3fabc594d1b652aa45cf11e962 Mon Sep 17 00:00:00 2001 From: JongBeom Kim Date: Mon, 12 Aug 2024 21:04:32 +0900 Subject: [PATCH 5/6] pr rollback --- package.json | 2 +- src/convertor.ts | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 2181be1..1fff259 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "prisma-class-generator", - "version": "0.2.10", + "version": "0.2.11", "description": "Class generator from Prisma schema", "main": "dist/index.js", "license": "MIT", diff --git a/src/convertor.ts b/src/convertor.ts index 341c461..f825350 100755 --- a/src/convertor.ts +++ b/src/convertor.ts @@ -28,7 +28,7 @@ const primitiveMapType: Record = { String: 'string', DateTime: 'Date', Boolean: 'boolean', - Json: 'Record | unknown[] | boolean | string | number | null', + Json: 'object', BigInt: 'BigInt', Float: 'number', Decimal: 'number', @@ -212,7 +212,11 @@ export class PrismaConvertor { const relationTypes = uniquify( model.fields .filter( - (field) => field.relationName && (this._config.separateRelationFields ? true : model.name !== field.type), + (field) => + field.relationName && + (this._config.separateRelationFields + ? true + : model.name !== field.type), ) .map((v) => v.type), ) From 97b7e99e4a8d55e3365d6680856d6bb203702848 Mon Sep 17 00:00:00 2001 From: "David Seunghwan Kim (DK)" Date: Fri, 21 Nov 2025 02:46:58 -0600 Subject: [PATCH 6/6] fix(Generator): :bug: Fix the issue with the default values for the mapped fields incorrectly being assigned to a date object like `new Date('1')` for `Int` fields (if the default value was 1 in this case) or not being assigned at all. Update the PostgreSQL Prisma schema for testing the default values. Reformat the changed files. --- prisma/postgresql.prisma | 3 ++- src/components/field.component.ts | 10 ++++------ src/convertor.ts | 25 ++++++++++++++++--------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/prisma/postgresql.prisma b/prisma/postgresql.prisma index 9560e8b..d885daa 100755 --- a/prisma/postgresql.prisma +++ b/prisma/postgresql.prisma @@ -33,7 +33,7 @@ model Product { desc String @default("abc") @db.VarChar(1024) images Json @db.Json isShown Boolean? @default(false) - stock Int? @default(0) + stock Int @default(0) type ProductType anotherType ProductAnotherType @default(AA) averageRating Float? @@ -41,6 +41,7 @@ model Product { companyId Int category Category @relation(fields: [categoryId], references: [id]) company Company @relation(fields: [companyId], references: [id]) + releasedAt DateTime @default("2024-01-01T00:00:00Z") @db.Timestamp(6) createdAt DateTime @default(now()) @db.Timestamp(6) updatedAt DateTime @updatedAt @db.Timestamp(6) } diff --git a/src/components/field.component.ts b/src/components/field.component.ts index 9c78f2d..b008421 100755 --- a/src/components/field.component.ts +++ b/src/components/field.component.ts @@ -25,16 +25,14 @@ export class FieldComponent extends BaseComponent implements Echoable { } let defaultValue = '' - if (this.default) { - if (!isNaN(Date.parse(this.default))) { + if (this.default !== undefined && this.default !== null) { + if (this.type === 'Date' && !Number.isNaN(Date.parse(this.default))) { defaultValue = `= new Date('${this.default}')` } else { defaultValue = `= ${this.default}` } - } else { - if (this.useUndefinedDefault === true) { - defaultValue = `= undefined` - } + } else if (this.useUndefinedDefault === true) { + defaultValue = `= undefined` } return FIELD_TEMPLATE.replace('#!{NAME}', name) diff --git a/src/convertor.ts b/src/convertor.ts index f825350..fe6dbf4 100755 --- a/src/convertor.ts +++ b/src/convertor.ts @@ -3,13 +3,7 @@ import { ClassComponent } from './components/class.component' import { DecoratorComponent } from './components/decorator.component' import { FieldComponent } from './components/field.component' import { PrismaClassGeneratorConfig } from './generator' -import { - arrayify, - capitalizeFirst, - uniquify, - wrapArrowFunction, - wrapQuote, -} from './util' +import { arrayify, capitalizeFirst, uniquify, wrapArrowFunction, wrapQuote, } from './util' /** BigInt, Boolean, Bytes, DateTime, Decimal, Float, Int, JSON, String, $ModelName */ type DefaultPrismaFieldType = @@ -367,13 +361,15 @@ export class PrismaConvertor { field.preserveDefaultNullable = true } - if (dmmfField.default) { + if (dmmfField.default !== undefined && dmmfField.default !== null) { if (typeof dmmfField.default !== 'object') { - field.default = dmmfField.default?.toString() + field.default = dmmfField.default.toString() if (dmmfField.kind === 'enum') { field.default = `${dmmfField.type}.${dmmfField.default}` } else if (dmmfField.type === 'BigInt') { field.default = `BigInt(${field.default})` + } else if (dmmfField.type === 'Int') { + field.default = `${field.default}` } else if (dmmfField.type === 'String') { field.default = `'${field.default}'` } @@ -385,9 +381,20 @@ export class PrismaConvertor { } else { field.default = `[${dmmfField.default.toString()}]` } + } else if (dmmfField.type === 'DateTime') { + const defaultDateStr = JSON.stringify(dmmfField.default); + if (defaultDateStr.includes('now')) { + field.default = 'new Date()'; + } else { + field.default = `new Date('${defaultDateStr}')` + } } } + if (dmmfField.isUpdatedAt) { + field.default = 'new Date()' + } + if (type) { field.type = type } else {