CLI Command Examples
Purpose: Common CLI command patterns and workflows
Last Updated: 2024-11-28
Basic Commands
Generate All Schemas
pnpm db:codegen
Generate Specific Schema
pnpm db:codegen --schema graph
pnpm db:codegen --schema auth
pnpm db:codegen --schema studio
Generate Multiple Schemas
pnpm db:codegen --schema graph --schema auth
Verbose Output
pnpm db:codegen --verbose
Development Workflow
Standard Development Flow
# Edit SQL files
vim db/300_graph.sql
# Apply to database
pnpm db:reset # or pnpm db:migrate
# Regenerate code
pnpm db:codegen
# Start dev server
pnpm dev
Debug Workflow
# Step 1: Verbose output
pnpm db:codegen --verbose
# Step 2: Check what queries are run
pnpm db:codegen --verbose 2>&1 | grep "SELECT"
# Step 3: Check what files are written
pnpm db:codegen --verbose 2>&1 | grep "Writing"
# Step 4: Force regeneration if needed
pnpm db:codegen --force
Optimization Workflow
# Fast iteration on single schema
pnpm db:codegen --schema graph
# Use caching for large schemas
pnpm db:codegen --cache
# Parallel generation for multiple schemas
pnpm db:codegen --parallel
CI/CD Integration
Basic CI Pipeline
# Setup database
pnpm db:reset
# Generate code
pnpm db:codegen
# Verify it matches repository
pnpm db:codegen --check
# Run tests
pnpm test
Full CI Example (GitHub Actions)
steps:
- name: Setup database
run: pnpm db:reset
- name: Generate code
run: pnpm db:codegen
- name: Verify generated code
run: pnpm db:codegen --check
- name: Type check
run: pnpm tsc --noEmit
- name: Run tests
run: pnpm test
GitLab CI Example
codegen:
script:
- pnpm db:reset
- pnpm db:codegen
- pnpm db:codegen --check
Git Hooks
Pre-commit Hook
# Check if SQL files changed
git diff --cached --name-only | grep -q '^db/' && pnpm db:codegen
# Alternative: Always check
pnpm db:codegen --check || pnpm db:codegen
Husky Integration
# .husky/pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
# Check if SQL files changed
if git diff --cached --name-only | grep -q '^db/'; then
echo "Regenerating database types..."
pnpm db:codegen
# Add generated files to commit
git add src/__generated__
fi
Docker Integration
Dockerfile
# Generate types during build
RUN pnpm db:codegen
Docker Compose
services:
app:
command: sh -c "pnpm db:reset && pnpm db:codegen && pnpm dev"
Package.json Scripts
Basic Scripts
{
"scripts": {
"db:codegen": "tsx src/lib/codegen/cli.ts",
"db:codegen:check": "tsx src/lib/codegen/cli.ts --check",
"db:codegen:graph": "tsx src/lib/codegen/cli.ts --schema graph",
"postdb:reset": "pnpm db:codegen",
"postdb:migrate": "pnpm db:codegen"
}
}
Advanced Scripts
{
"scripts": {
"db:codegen": "tsx src/lib/codegen/cli.ts",
"db:codegen:watch": "nodemon --watch db --ext sql --exec pnpm db:codegen",
"db:codegen:verify": "pnpm db:codegen --check || (pnpm db:codegen && exit 1)",
"precommit": "git diff --cached --name-only | grep -q '^db/' && pnpm db:codegen || true"
}
}
Watch Mode
Using Nodemon
# Watch SQL files and regenerate
nodemon --watch db --ext sql --exec "pnpm db:codegen"
Custom Watch Script
#!/bin/bash
# watch-codegen.sh
while true; do
inotifywait -e modify -r db/
echo "SQL files changed, regenerating..."
pnpm db:codegen
done
Environment-Specific Commands
Development
# Fast iteration
pnpm db:codegen --schema graph
# Full generation
pnpm db:codegen
Testing
# Generate for test database
NODE_ENV=test pnpm db:codegen
Production Build
# Ensure clean generation
rm -rf src/__generated__
pnpm db:codegen --force
CI/CD
# Non-interactive, fail-fast
pnpm db:codegen --check || (pnpm db:codegen && exit 1)
Troubleshooting Commands
Check Database Connection
# Check available schemas
pnpm db:codegen --verbose | grep "Loading schema"
# Verify schema exists in database
psql -d savvi_dev -c "\dn"
Check Generated Files
# List generated files
find src/__generated__ -name "*.ts"
# Check specific schema
ls -la src/__generated__/graph/
Force Clean Regeneration
# Remove all generated files
rm -rf src/__generated__
# Regenerate from scratch
pnpm db:codegen
Debug with Verbose Output
# See all introspection queries
pnpm db:codegen --schema graph --verbose 2>&1 | tee codegen.log
# Filter for specific info
pnpm db:codegen --verbose 2>&1 | grep -A5 "Error"
Performance Optimization
Selective Schema Generation
# Only generate changed schema
pnpm db:codegen --schema graph
# Multiple specific schemas
pnpm db:codegen --schema graph --schema auth
Parallel Processing
# Generate schemas in parallel
pnpm db:codegen --parallel
# Combine with caching
pnpm db:codegen --parallel --cache
Cache Management
# Enable caching
pnpm db:codegen --cache
# Clear cache and regenerate
pnpm db:codegen --force --no-cache
Related Documentation
- CLI Reference - Complete CLI documentation
- Usage - Development workflow details
- Troubleshooting - Common issues and solutions
These examples show common CLI patterns for various development scenarios.