diff --git a/packages/schema/src/plugins/zod/utils/schema-gen.ts b/packages/schema/src/plugins/zod/utils/schema-gen.ts index 802127c58..39e7d2bb2 100644 --- a/packages/schema/src/plugins/zod/utils/schema-gen.ts +++ b/packages/schema/src/plugins/zod/utils/schema-gen.ts @@ -89,6 +89,18 @@ export function makeFieldSchema(field: DataModelField, respectDefault = false) { schema += `.url(${messageArgFirst})`; break; } + case '@trim': { + 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 1a9446d7b..be241fe2c 100644 --- a/packages/schema/src/res/stdlib.zmodel +++ b/packages/schema/src/res/stdlib.zmodel @@ -514,6 +514,21 @@ 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 + +/** + * 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. */