Skip to content

Latest commit

 

History

History
250 lines (174 loc) · 7.58 KB

File metadata and controls

250 lines (174 loc) · 7.58 KB
description CLI references
sidebar_position 2
sidebar_label CLI

ZenStack CLI Reference

Usage

zenstack [options] [command]

ζ ZenStack is a Prisma power pack for building full-stack apps.

Documentation: https://zenstack.dev.

Options:
  -v --version           display CLI version
  -h, --help             display help for command

Commands:
  info [path]            Get information of installed ZenStack and related packages.
  init [options] [path]  Initialize an existing project for ZenStack.
  generate [options]     Generates RESTful API and Typescript client for your data model.
  repl [options]         Start a REPL session.
  format [options]       Format a ZenStack schema file.
  check [options]        Check a ZenStack schema file for syntax or semantic errors.
  help [command]         Display help for a command.

Sub Commands

info

Get information of installed ZenStack and related packages.

zenstack info [options] [path]

Arguments

Name Description Default
path Project path current folder

init

Initializes an existing project to use ZenStack.

zenstack init [options] [path]

Arguments

Name Description Default
path Project path current folder

Options

Name Description Default
--prisma location of Prisma schema file to bootstrap from <project path>/prisma/schema.prisma
-p, --package-manager package manager to use: "npm", "yarn", or "pnpm" auto detect
--no-version-check do not check for new versions of ZenStack false

Examples

Initialize current folder with default settings.

npx zenstack init

Initialize "myapp" folder with custom package manager and schema location.

npx zenstack init -p pnpm --prisma prisma/my.schema myapp

generate

Generates Prisma schema and other artifacts as specified by "plugin"s in ZModel.

zenstack generate [options]

Arguments

Name Description Default
path Project path current folder

Options

Name Description Default
--schema schema file (with extension .zmodel) ./schema.zmodel
-o, --output <path> default output directory for TS/JS files generated by built-in plugins node_modules/.zenstack
--with-plugins only run specific plugins
--without-plugins exclude specific plugins
--no-default-plugins do not automatically run built-in plugins false
--no-compile do not compile the output of built-in plugins false
--no-version-check do not check for new versions of ZenStack false

You can also specify the ZModel schema location in the "package.json" file of your project like the following:

{
  "zenstack": {
    "schema": "./db/schema.zmodel"
  }
}

Examples

Generate with default settings.

npx zenstack generate

Generate with custom schema location.

npx zenstack generate --schema src/my.zmodel

repl

Starts a REPL session. You should run the command inside the package where you ran zenstack generate.

npx zenstack repl

You can call PrismaClient methods interactively in the REPL session. The following variables are available in the REPL session.

  • prisma

    The original PrismaClient instance (without ZenStack enhancement).

  • db

    The ZenStack enhanced PrismaClient instance.

You don't need to await the Prisma method call result. The REPL session will automatically await and print the result.

Options

Name Description Default
--debug Enable debug output. Can be toggled on the fly in the repl session with the ".debug" command. false
--table Enable table format. Can be toggled on the fly in the repl session with the ".table" command. false
--prisma-client Path to load PrismaClient module. "./node_modules/.prisma/client"

Repl Commands

You can use the following commands in the REPL session.

  • .debug [on|off]

    Toggle debug output.

  • .table [on|off]

    Toggle table format.

  • .auth [user object]

    Set current user. E.g.: .auth { id: 1 }. Run the command without argument to reset to anonymous user.

Examples

Start the session:

npx zenstack repl

Inside the session:

> prisma.user.findMany()
[
  {
    id: '7aa301d2-7a29-4e1e-a041-822913a3ea78',
    createdAt: 2023-09-05T04:04:43.793Z,
    updatedAt: 2023-09-05T04:04:43.793Z,
    email: 'yiming@whimslab.io',
    ...
  }
]

> .auth { id: '7aa301d2-7a29-4e1e-a041-822913a3ea78' }
Auth user: { id: '7aa301d2-7a29-4e1e-a041-822913a3ea78' }. Use ".auth" to switch to anonymous.

> .table
Table output: true

> db.list.findMany({select: { title: true, private: true}})
┌─────────┬────────────────────────────────────────────────────┬─────────┐
 (index)                        title                         private 
├─────────┼────────────────────────────────────────────────────┼─────────┤
    0                            'L1'                          false  
    1                   'Wonderful new world'                  false  
    2     'Model for a space in which users can collaborate'   false  
└─────────┴────────────────────────────────────────────────────┴─────────┘

format

Format a ZenStack schema file.

zenstack format [options]

Options

Name Description Default
--schema schema file (with extension .zmodel) ./schema.zmodel

You can also specify the ZModel schema location in the "package.json" file of your project like the following:

{
  "zenstack": {
    "schema": "./db/schema.zmodel"
  }
}

check

Check a ZenStack schema file for syntax or semantic errors. You can use the CLI's exit code to determine if the schema is valid.

zenstack check [options]

Options

Name Description Default
--schema schema file (with extension .zmodel) ./schema.zmodel