Skip to content

Commit dde1931

Browse files
simonedelmannymc9
andauthored
Add Zod's built-in string transformations as field attributes (#981)
Co-authored-by: Yiming <[email protected]>
1 parent 79ab755 commit dde1931

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

packages/schema/src/plugins/zod/utils/schema-gen.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,18 @@ export function makeFieldSchema(field: DataModelField, respectDefault = false) {
8989
schema += `.url(${messageArgFirst})`;
9090
break;
9191
}
92+
case '@trim': {
93+
schema += `.trim()`;
94+
break;
95+
}
96+
case '@lower': {
97+
schema += `.toLowerCase()`;
98+
break;
99+
}
100+
case '@upper': {
101+
schema += `.toUpperCase()`;
102+
break;
103+
}
92104
case '@datetime': {
93105
schema += `.datetime({ offset: true${message ? ', message: ' + JSON.stringify(message) : ''} })`;
94106
break;

packages/schema/src/res/stdlib.zmodel

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,21 @@ attribute @datetime(_ message: String?) @@@targetField([StringField]) @@@validat
514514
*/
515515
attribute @url(_ message: String?) @@@targetField([StringField]) @@@validation
516516

517+
/**
518+
* Trims whitespaces from the start and end of the string.
519+
*/
520+
attribute @trim() @@@targetField([StringField]) @@@validation
521+
522+
/**
523+
* Transform entire string toLowerCase.
524+
*/
525+
attribute @lower() @@@targetField([StringField]) @@@validation
526+
527+
/**
528+
* Transform entire string toUpperCase.
529+
*/
530+
attribute @upper() @@@targetField([StringField]) @@@validation
531+
517532
/**
518533
* Validates a number field is greater than the given value.
519534
*/

0 commit comments

Comments
 (0)