From 6d27e486d5766858031bc71b37c48aa056692cc0 Mon Sep 17 00:00:00 2001 From: Simon Edelmann Date: Fri, 2 Feb 2024 14:31:59 +0100 Subject: [PATCH 1/2] Add @trim "validation" --- packages/schema/src/plugins/zod/utils/schema-gen.ts | 4 ++++ packages/schema/src/res/stdlib.zmodel | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/packages/schema/src/plugins/zod/utils/schema-gen.ts b/packages/schema/src/plugins/zod/utils/schema-gen.ts index 802127c58..aed6751e0 100644 --- a/packages/schema/src/plugins/zod/utils/schema-gen.ts +++ b/packages/schema/src/plugins/zod/utils/schema-gen.ts @@ -89,6 +89,10 @@ export function makeFieldSchema(field: DataModelField, respectDefault = false) { schema += `.url(${messageArgFirst})`; break; } + case '@trim': { + schema += `.trim()`; + break; + } case '@datetime': { schema += `.datetime({ offset: true${message ? ', message: ' + JSON.stringify(message) : ''} })`; break; diff --git a/packages/schema/src/res/stdlib.zmodel b/packages/schema/src/res/stdlib.zmodel index 1a9446d7b..9f39ee9f7 100644 --- a/packages/schema/src/res/stdlib.zmodel +++ b/packages/schema/src/res/stdlib.zmodel @@ -514,6 +514,11 @@ attribute @datetime(_ message: String?) @@@targetField([StringField]) @@@validat */ attribute @url(_ message: String?) @@@targetField([StringField]) @@@validation +/** + * Trims whitespaces from the start and end of the string. + */ +attribute @trim() @@@targetField([StringField]) @@@validation + /** * Validates a number field is greater than the given value. */ From a9a09f8d10ee11a59f28922ed284bea8595da356 Mon Sep 17 00:00:00 2001 From: Simon Edelmann Date: Fri, 2 Feb 2024 14:45:21 +0100 Subject: [PATCH 2/2] Add @upper / @lower --- packages/schema/src/plugins/zod/utils/schema-gen.ts | 8 ++++++++ packages/schema/src/res/stdlib.zmodel | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/packages/schema/src/plugins/zod/utils/schema-gen.ts b/packages/schema/src/plugins/zod/utils/schema-gen.ts index aed6751e0..39e7d2bb2 100644 --- a/packages/schema/src/plugins/zod/utils/schema-gen.ts +++ b/packages/schema/src/plugins/zod/utils/schema-gen.ts @@ -93,6 +93,14 @@ export function makeFieldSchema(field: DataModelField, respectDefault = false) { schema += `.trim()`; break; } + case '@lower': { + schema += `.toLowerCase()`; + break; + } + case '@upper': { + schema += `.toUpperCase()`; + break; + } case '@datetime': { schema += `.datetime({ offset: true${message ? ', message: ' + JSON.stringify(message) : ''} })`; break; diff --git a/packages/schema/src/res/stdlib.zmodel b/packages/schema/src/res/stdlib.zmodel index 9f39ee9f7..be241fe2c 100644 --- a/packages/schema/src/res/stdlib.zmodel +++ b/packages/schema/src/res/stdlib.zmodel @@ -519,6 +519,16 @@ attribute @url(_ message: String?) @@@targetField([StringField]) @@@validation */ attribute @trim() @@@targetField([StringField]) @@@validation +/** + * Transform entire string toLowerCase. + */ +attribute @lower() @@@targetField([StringField]) @@@validation + +/** + * Transform entire string toUpperCase. + */ +attribute @upper() @@@targetField([StringField]) @@@validation + /** * Validates a number field is greater than the given value. */