diff --git a/packages/core/utils/src/dml/__tests__/entity-builder.spec.ts b/packages/core/utils/src/dml/__tests__/entity-builder.spec.ts index ed9628b7e8..6770d0913d 100644 --- a/packages/core/utils/src/dml/__tests__/entity-builder.spec.ts +++ b/packages/core/utils/src/dml/__tests__/entity-builder.spec.ts @@ -236,6 +236,12 @@ describe("Entity builder", () => { expect(metaData.className).toEqual("User") expect(metaData.path).toEqual("User") + const userInstance = new User() + expect(userInstance.username).toEqual(null) + + userInstance.username = "john" + expect(userInstance.username).toEqual("john") + expect(metaData.filters).toEqual({ softDeletable: { name: "softDeletable", @@ -547,6 +553,12 @@ describe("Entity builder", () => { const metaData = MetadataStorage.getMetadataFromDecorator(User) + const userInstance = new User() + expect(userInstance.role).toEqual(null) + + userInstance.role = "admin" + expect(userInstance.role).toEqual("admin") + expect(metaData.className).toEqual("User") expect(metaData.path).toEqual("User") diff --git a/packages/core/utils/src/dml/helpers/create-mikro-orm-entity.ts b/packages/core/utils/src/dml/helpers/create-mikro-orm-entity.ts index 5a7bfffc00..3c13554dbb 100644 --- a/packages/core/utils/src/dml/helpers/create-mikro-orm-entity.ts +++ b/packages/core/utils/src/dml/helpers/create-mikro-orm-entity.ts @@ -158,6 +158,18 @@ export function createMikrORMEntity() { MikroORMEntity: EntityConstructor, field: PropertyMetadata ) { + /** + * Here we initialize nullable properties with a null value + */ + if (field.nullable) { + Object.defineProperty(MikroORMEntity.prototype, field.fieldName, { + value: null, + configurable: true, + enumerable: true, + writable: true, + }) + } + if (SPECIAL_PROPERTIES[field.fieldName]) { SPECIAL_PROPERTIES[field.fieldName](MikroORMEntity, field) return @@ -188,12 +200,12 @@ export function createMikrORMEntity() { ? PrimaryKey({ columnType: "text", type: "string", - nullable: field.nullable, + nullable: false, }) : Property({ columnType: "text", type: "string", - nullable: field.nullable, + nullable: false, }) IdDecorator(MikroORMEntity.prototype, field.fieldName) @@ -584,6 +596,7 @@ export function createMikrORMEntity() { */ return function createEntity>(entity: T): Infer { class MikroORMEntity {} + const { name, schema, cascades } = entity.parse() const { modelName, tableName } = parseEntityName(name)