ZZuro Docs

Database

Add PostgreSQL or MySQL with Drizzle in one command

Database

Use this command to scaffold Drizzle + a DB client (PostgreSQL or MySQL) into your Zuro project.


What This Command Does

When you run add database, Zuro:

  1. Installs DB dependencies.
  2. Generates DB files.
  3. Adds/updates DATABASE_URL in .env.
  4. Adds DATABASE_URL validation in env.ts.
  5. Prints next steps (schema + migrations).

Command

npx zuro-cli add database
pnpm dlx zuro-cli add database
bun x zuro-cli add database

Supported Module Inputs

You can call the database module with any of these:

  • database (interactive dialect picker)
  • database-pg
  • database-mysql
  • pg, postgres, postgresql
  • mysql

Flags

Dedicated DB flags are not available yet.

Current practical options:

  • zuro-cli add database for interactive setup
  • zuro-cli add database-pg or zuro-cli add database-mysql to skip dialect selection
  • zuro-cli add database --help to see command help

Interactive Flow

Pick A Dialect

? Which database dialect?
❯ PostgreSQL
  MySQL

Enter Database URL

Tip: Leave blank to use postgresql://postgres@localhost:5432/mydb
? Database URL

Defaults:

  • PostgreSQL: postgresql://postgres@localhost:5432/mydb
  • MySQL: mysql://root@localhost:3306/mydb

Install + Scaffold

CLI installs dependencies and generates DB files automatically.


What Gets Installed

DialectRuntime depsDev deps
PostgreSQLdrizzle-orm, pgdrizzle-kit, @types/pg
MySQLdrizzle-orm, mysql2drizzle-kit

Files Generated

index.ts
index.ts
env.ts
drizzle.config.ts
.env

drizzle.config.ts is generated at project root, and its schema path follows your configured srcDir (for example ./src/db/schema/*).


What To Expect After Running

Typical success output:

✔ database-pg added successfully!

📋 Next Steps:
1. Create schemas in src/db/schema/
2. Ensure the database exists
3. Run migrations

If you left DB URL blank, you will also see a reminder to update DATABASE_URL.


  1. Add module:
    npx zuro-cli add database
  2. Create a schema file:
    src/db/schema/posts.ts
    import { pgTable, text } from "drizzle-orm/pg-core";
    
    export const posts = pgTable("posts", {
      id: text("id").primaryKey(),
      title: text("title").notNull(),
    });
  3. Export schema:
    src/db/schema/index.ts
    export * from "./posts";
  4. Create DB and run migrations:
    npx drizzle-kit generate
    npx drizzle-kit migrate

Environment Behavior

When you add a database module:

  • .env gets DATABASE_URL=...
  • existing DATABASE_URL is updated to your new value
  • env.ts gets DATABASE_URL: z.string().url()

Dialect Switching Safety

If your project already has one DB dialect and you add the other:

  1. Zuro warns before overwrite.
  2. Asks for confirmation.
  3. Creates a backup in .zuro/backups/... before replacing DB files.

Troubleshooting

  • Invalid database URL: use a valid URL format (postgresql://... or mysql://...).
  • Package manager ... not installed: install selected PM (pnpm, bun, etc.) or use npm.
  • Failed during registry fetch: verify internet/registry URL and retry.
  • Module not found: run npx zuro-cli add database (or database-pg/database-mysql).

URL Examples

DatabaseURL
PostgreSQL localpostgresql://postgres@localhost:5432/mydb
PostgreSQL with passwordpostgresql://user:password@localhost:5432/mydb
MySQL localmysql://root@localhost:3306/mydb
MySQL with passwordmysql://root:password@localhost:3306/mydb
Neonpostgresql://user:pass@ep-xxx.neon.tech/mydb?sslmode=require
PlanetScalemysql://user:pass@aws.connect.psdb.cloud/mydb?ssl=...

Next Steps

npx zuro-cli add auth
pnpm dlx zuro-cli add auth
bun x zuro-cli add auth

On this page