From bde2631ee362c3640f8698a1c587f73edb1c4873 Mon Sep 17 00:00:00 2001 From: Dirk de Visser Date: Tue, 2 Feb 2021 20:10:08 +0100 Subject: [PATCH] code-gen: fix field types of update partial for optional fields (#647) Closes #643 --- packages/code-gen/src/generator/sql/partial-type.js | 10 ++++++++++ packages/store/src/generated/types.js | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/code-gen/src/generator/sql/partial-type.js b/packages/code-gen/src/generator/sql/partial-type.js index e3152f1188..53568d3a75 100644 --- a/packages/code-gen/src/generator/sql/partial-type.js +++ b/packages/code-gen/src/generator/sql/partial-type.js @@ -1,3 +1,4 @@ +import { isNil } from "@compas/stdlib"; import { ObjectType } from "../../builders/ObjectType.js"; import { upperCaseFirst } from "../../utils.js"; import { js } from "../tag/index.js"; @@ -73,6 +74,15 @@ export function createPartialTypes(context) { ...fieldType, isOptional: true, }; + + // Create correct types by setting allowNull, since the value will be used in the update statement + if (fieldType.isOptional && isNil(fieldType.defaultValue)) { + updatePartial.keys[key].validator = Object.assign( + {}, + updatePartial.keys[key].validator, + { allowNull: true }, + ); + } } type.partial = { diff --git a/packages/store/src/generated/types.js b/packages/store/src/generated/types.js index 2879b4db4c..f4a38749ba 100644 --- a/packages/store/src/generated/types.js +++ b/packages/store/src/generated/types.js @@ -66,13 +66,13 @@ export const __generated__ = true; * @typedef {{"id"?: string, "contentLength": number, "bucketName": string, "contentType": string, "name": string, "meta"?: {}, "createdAt"?: Date, "updatedAt"?: Date, "deletedAt"?: Date, }} StoreFileInsertPartial */ /** - * @typedef {{"contentLength"?: number, "bucketName"?: string, "contentType"?: string, "name"?: string, "meta"?: {}, "createdAt"?: Date, "updatedAt"?: Date, "deletedAt"?: Date, }} StoreFileUpdatePartial + * @typedef {{"contentLength"?: number, "bucketName"?: string, "contentType"?: string, "name"?: string, "meta"?: {}, "createdAt"?: Date, "updatedAt"?: Date, "deletedAt"?: null|Date, }} StoreFileUpdatePartial */ /** * @typedef {{"id"?: string, "order"?: number, "file"?: string, "parent"?: string, "name"?: string, "meta"?: {}, "createdAt"?: Date, "updatedAt"?: Date, "deletedAt"?: Date, }} StoreFileGroupInsertPartial */ /** - * @typedef {{"order"?: number, "file"?: string, "parent"?: string, "name"?: string, "meta"?: {}, "createdAt"?: Date, "updatedAt"?: Date, "deletedAt"?: Date, }} StoreFileGroupUpdatePartial + * @typedef {{"order"?: number, "file"?: null|string, "parent"?: null|string, "name"?: null|string, "meta"?: {}, "createdAt"?: Date, "updatedAt"?: Date, "deletedAt"?: null|Date, }} StoreFileGroupUpdatePartial */ /** * @typedef {{"id"?: number, "isComplete"?: boolean, "priority"?: number, "name": string, "scheduledAt"?: Date, "data"?: *, "createdAt"?: Date, "updatedAt"?: Date, }} StoreJobInsertPartial