entc/gen: skip enum identifier checks in case it has custom Go type (#2766)

Fixes https://github.com/ent/ent/issues/2756
This commit is contained in:
Ariel Mashraki
2022-07-17 17:14:43 +03:00
committed by GitHub
parent 9e0d8af284
commit 077670451a
5 changed files with 11 additions and 10 deletions

View File

@@ -1503,7 +1503,7 @@ func (f Field) enums(lf *load.Field) ([]Enum, error) {
return nil, fmt.Errorf("%q field value cannot be empty", f.Name) return nil, fmt.Errorf("%q field value cannot be empty", f.Name)
case values[value]: case values[value]:
return nil, fmt.Errorf("duplicate values %q for enum field %q", value, f.Name) return nil, fmt.Errorf("duplicate values %q for enum field %q", value, f.Name)
case !token.IsIdentifier(name): case !token.IsIdentifier(name) && !f.HasGoType():
return nil, fmt.Errorf("enum %q does not have a valid Go identifier (%q)", value, name) return nil, fmt.Errorf("enum %q does not have a valid Go identifier (%q)", value, name)
default: default:
values[value] = true values[value] = true

View File

@@ -316,7 +316,7 @@ const DefaultRole role.Role = "READ"
// RoleValidator is a validator for the "role" field enum values. It is called by the builders before save. // RoleValidator is a validator for the "role" field enum values. It is called by the builders before save.
func RoleValidator(r role.Role) error { func RoleValidator(r role.Role) error {
switch r { switch r {
case "ADMIN", "OWNER", "USER", "READ", "WRITE": case "ADMIN", "OWNER", "USER", "READ", "WRITE", "READ+WRITE":
return nil return nil
default: default:
return fmt.Errorf("fieldtype: invalid enum value for role field: %q", r) return fmt.Errorf("fieldtype: invalid enum value for role field: %q", r)

View File

@@ -126,7 +126,7 @@ var (
{Name: "schema_float", Type: field.TypeFloat64, Nullable: true}, {Name: "schema_float", Type: field.TypeFloat64, Nullable: true},
{Name: "schema_float32", Type: field.TypeFloat32, Nullable: true}, {Name: "schema_float32", Type: field.TypeFloat32, Nullable: true},
{Name: "null_float", Type: field.TypeFloat64, Nullable: true}, {Name: "null_float", Type: field.TypeFloat64, Nullable: true},
{Name: "role", Type: field.TypeEnum, Enums: []string{"ADMIN", "OWNER", "USER", "READ", "WRITE"}, Default: "READ"}, {Name: "role", Type: field.TypeEnum, Enums: []string{"ADMIN", "OWNER", "USER", "READ", "WRITE", "READ+WRITE"}, Default: "READ"},
{Name: "priority", Type: field.TypeEnum, Nullable: true, Enums: []string{"UNKNOWN", "LOW", "HIGH"}}, {Name: "priority", Type: field.TypeEnum, Nullable: true, Enums: []string{"UNKNOWN", "LOW", "HIGH"}},
{Name: "optional_uuid", Type: field.TypeUUID, Nullable: true}, {Name: "optional_uuid", Type: field.TypeUUID, Nullable: true},
{Name: "nillable_uuid", Type: field.TypeUUID, Nullable: true}, {Name: "nillable_uuid", Type: field.TypeUUID, Nullable: true},

View File

@@ -11,15 +11,16 @@ import (
type Role string type Role string
const ( const (
Admin Role = "ADMIN" Admin Role = "ADMIN"
Owner Role = "OWNER" Owner Role = "OWNER"
User Role = "USER" User Role = "USER"
Read Role = "READ" Read Role = "READ"
Write Role = "WRITE" Write Role = "WRITE"
ReadWrite Role = "READ+WRITE"
) )
func (Role) Values() (roles []string) { func (Role) Values() (roles []string) {
for _, r := range []Role{Admin, Owner, User, Read, Write} { for _, r := range []Role{Admin, Owner, User, Read, Write, ReadWrite} {
roles = append(roles, string(r)) roles = append(roles, string(r))
} }
return return

View File

@@ -223,7 +223,7 @@ const DefaultRole role.Role = "READ"
// RoleValidator is a validator for the "role" field enum values. It is called by the builders before save. // RoleValidator is a validator for the "role" field enum values. It is called by the builders before save.
func RoleValidator(r role.Role) error { func RoleValidator(r role.Role) error {
switch r { switch r {
case "ADMIN", "OWNER", "USER", "READ", "WRITE": case "ADMIN", "OWNER", "USER", "READ", "WRITE", "READ+WRITE":
return nil return nil
default: default:
return fmt.Errorf("fieldtype: invalid enum value for role field: %q", r) return fmt.Errorf("fieldtype: invalid enum value for role field: %q", r)