Defining Enums
Preparing your DB schema and EzQL configuration file
For defining Enums in your GraphQL API you need to setup DB columns and an ezql.yml
configuration file in the following way.
Let's define User.role
field which allows a USER
or ADMIN
role.
class AddUsers < ActiveRecord::Migration[7.0]
def change
create_table :users do |t|
# Define "integer" column for your enum with default value = 0.
t.integer :role, default: 0
end
end
end
enums:
# Your enum name
Role:
# Possible values for the "Role" enum.
- User
- Admin
models:
# Name of the Model
User:
fields:
# Name of the field(column)
role:
# Enum Name defined in "enums" section above.
type: Role
Resulting Model Enum
# Code generated by EzQL, DO NOT EDIT.
class User < ApplicationRecord
enum role: [:user, :admin]
end
Use custom value mapping for enum
With the example above, the enum column's value will be the index
of each value. eg: "user = 0", "admin = 1". If you want to control what value will be used for each Enum value you can use a Map(key & value) style configuration.
class AddUsers < ActiveRecord::Migration[7.0]
def change
create_table :users do |t|
# Enum column can be "integer or string" with proper default value.
t.string :role, default: 1
end
end
end
enums:
# Your enum name
Role:
# Possible values for the "Role" enum.
# We can also use "string" values, but it is not allowed to mix both "integer and string" together.
Admin: 99
User: 1
models:
# Name of the Model
User:
fields:
# Name of the field(column)
role:
# Enum Name defined in "enums" section above.
type: Role
Resulting Model Enums
# Code generated by EzQL, DO NOT EDIT.
class User < ApplicationRecord
enum role: {admin: 99, user: 1}
end
PreviousMany To Many (through Pivot / Junction)NextPre/Post generate scripts (eg: for Code formatter)
Last updated