You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Feature Request] Allow for Prisma enums in validation rules #1211
Is your feature request related to a problem? Please describe.
While Zenstack is already offering great validation capabilities, it would be nice if it were possible to use Prisma enums
inside a validate block, for example with an in operation. This would allow for an always-in-sync validation instead of relying on manual updates in both codebase and validation rules.
One might ask why not set the field as the enum? The answer to that being that working with primitives is easier to migrate and also better supported across third party vendors, like Hasura GraphQL.
Describe the solution you'd like
Allow for Prisma enums to be referenced in validations rules, especially with the in operator.
@ymc9 This would be a short example with some options for the validate API.
enum PostStatus {
DRAFT
ACTIVE
CANCELLED
}
model Post {
id String @id
status String
@@validate(status in PostStatus)
@@validate(status == PostStatus.ACTIVE)
}
I actually don't get why this is necessary. Making status of type PostStatus instead of String would already validate the type natively in prisma. No need for in operator in zenstack in this case.
@Eliav2 It's mentioned at the bottom of the issue description. Also both the @@validate and the in operator exist already, just without compatibility for enum fields. No new operator would be introduced into the Zenstack language.
Activity
ymc9 commentedon Apr 2, 2024
Hey @nwidynski , thanks for filing this. Do you mind providing a ZModel snippet showing how you want to use it? Thanks!
nwidynski commentedon Apr 6, 2024
@ymc9 This would be a short example with some options for the validate API.
ymc9 commentedon Apr 9, 2024
Got it. Yes, string and enum can be compatible for comparison.
nwidynski commentedon Apr 9, 2024
We‘re especially looking for the in operator which would probably translate to:
Object.values(PostStatus).includes(value)
Eliav2 commentedon Apr 25, 2024
I actually don't get why this is necessary. Making
statusof type PostStatus instead of String would already validate the type natively in prisma. No need for in operator in zenstack in this case.nwidynski commentedon Apr 28, 2024
@Eliav2 It's mentioned at the bottom of the issue description. Also both the
@@validateand theinoperator exist already, just without compatibility for enum fields. No new operator would be introduced into the Zenstack language.sanny-io commentedon Aug 17, 2026
2 years later
The
==comparison currently works with enums as long as you don't fully qualify the enum and instead reference the field directly.I've implemented support for the
inoperator in #2807