blitz generate

Alias: blitz g

Use this command to scaffold all the boring code into your project.

Can generate pages, queries, mutations, and Prisma models. Support for custom templates based on the built-in templates is coming soon, so you can customize the generator to your app’s needs.

  1. blitz generate [type] [model]
ArgumentRequiredDescription
typeYesType of files to generate. Options are listed below.
modelYesThe model name to generate files for

Here’s the matrix of which files are generated by which command:

TypeModelQueriesMutationsPages
allYesYesYesYes
resourceYesYesYes
modelYes
crudYesYes
queriesYes
queryYes
mutationsYes
pagesYes
Example Output

blitz generate all project will generate the following files:

  1. app/projects/pages/projects/[projectId]/edit.tsxapp/projects/pages/projects/[projectId].tsxapp/projects/pages/projects/index.tsxapp/projects/pages/projects/new.tsxapp/projects/components/ProjectForm.tsxapp/projects/queries/getProject.tsapp/projects/queries/getProjects.tsapp/projects/mutations/createProject.tsapp/projects/mutations/deleteProject.tsapp/projects/mutations/updateProject.ts

For the above example, you can view the generated project index page at

localhost:3000/projects

Options

context/model

For organization of files within your project, you can specify a nested folder path in which to generate the files.

  1. blitz generate all admin/products// Will generate files in `app/admin/products` instead of `app/products`

Alternatively, you can provide the folder path via the

--context or -c options

--parent

Shorthand:

-p

Used to specify that you want to generate files for a model which is a child of a parent model.

For example, say you have

Project and Task models. A Task belongs to a Project and Project has many Tasks. You would run this command:

  1. blitz generate all task --parent project

which would generate the following files:

  1. app/tasks/pages/projects/[projectId]/tasks/[taskId]/edit.tsxapp/tasks/pages/projects/[projectId]/tasks/[taskId].tsxapp/tasks/pages/projects/[projectId]/tasks/index.tsxapp/tasks/pages/projects/[projectId]/tasks/new.tsxapp/tasks/components/TaskForm.tsxapp/tasks/queries/getTask.tsapp/tasks/queries/getTasks.tsapp/tasks/mutations/createTask.tsapp/tasks/mutations/deleteTask.tsapp/tasks/mutations/updateTask.ts
--dry-run

Shorthand:

-d

Displays what files would be generated but does not write the files to disk.

Basic Examples

  1. blitz generate all project
  1. blitz generate mutations project
  1. blitz generate crud admin/topsecret/files
  1. blitz generate pages tasks --parent=projects

Model Generation

All of the following commands will generate a model in your prisma schema file:

  • blitz generate all
  • blitz generate resource
  • blitz generate model

Model Fields

Model fields can be added like this:

  1. blitz generate model [fieldName]:[type]:[attribute]
  • fieldName is the name of your database column and can be anything
    • Use belongsTo to add a model relationship, ex: belongsTo:user
  • type
    • Optional - defaults to string if not specified
    • Values: string, boolean, int, float, dateTime, json, or a model name
    • Add ? to make the type optional like this: string?
    • Add [] to make the type a list like: task[]
  • attribute is for adding a prisma field attribute
    • Optional
    • Supported: default, unique
    • If the attribute takes an argument, you can include it in brackets like this: default[false] That will set the default value to false

For more details, see the

docs on Prisma scalar types or the docs on Prisma relations.

Scalar Fields
  1. > blitz generate model puppy isCute:boolean> blitz generate model rocket launchedAt:datetime> blitz generate model task completed:boolean:default[false]
Has One Relation
  1. blitz g model project task:Task

will generate this:

  1. model Project { ... task Task}
Has Many Relation
  1. blitz g model project tasks:Task[]

will generate this:

  1. model Project { ... tasks Task[]}
Belongs To Relation
  1. blitz g model task belongsTo:project

will generate this:

  1. model Task { ... project Project? @relation(fields: [projectId], references: [id]) projectId Int?}
Full Example
  1. blitz generate model task \ name \ completed:boolean:default[false] \ belongsTo:project?

will generate this:

  1. model Task { id Int @default(autoincrement()) @id createdAt DateTime @default(now()) updatedAt DateTime @updatedAt name String completed Boolean @default(false) project Project? @relation(fields: [projectId], references: [id]) projectId Int?}

Updating a model

Running

blitz generate model subsequent times will add fields to the existing model. For example, the below command will add the subheading field to the Task model.

  1. blitz generate model task subheading:string