0.4.111 • Published 4 months ago
@api-buddy/prisma v0.4.111
@api-buddy/prisma
A powerful Prisma extension for API Buddy that provides type-safe database access, automatic CRUD API generation, and enhanced developer experience for Next.js applications.
Installation
pnpm add @api-buddy/prisma @prisma/client
Features
- 🔄 Automatic CRUD API Generation - Generate RESTful API routes from your Prisma schema
- 🛡️ Type-Safe Database Access - Full TypeScript support with zero-config type safety
- 📊 Built-in Logging - Comprehensive logging for all database operations
- 🚀 Next.js Integration - Seamless integration with Next.js API routes and Server Components
- ⚡ Performance Optimized - Built with performance and developer experience in mind
Basic Usage
1. Initialize the Prisma Service
import { PrismaService } from '@api-buddy/prisma';
// Initialize with your Prisma schema
const prisma = new PrismaService({
log: ['query', 'info', 'warn', 'error'],
});
// Use like regular Prisma Client
const users = await prisma.user.findMany();
2. Generate CRUD APIs (CLI)
Automatically generate RESTful API routes for your Prisma models:
npx @api-buddy/prisma generate:routes --output src/app/api
This will create RESTful API endpoints for all your Prisma models in the specified directory.
3. Use in Next.js API Routes
// app/api/users/route.ts
import { prisma } from '@/lib/prisma';
import { NextResponse } from 'next/server';
export async function GET() {
const users = await prisma.user.findMany();
return NextResponse.json(users);
}
export async function POST(request: Request) {
const data = await request.json();
const user = await prisma.user.create({ data });
return NextResponse.json(user, { status: 201 });
}
Advanced Usage
Generate Routes for Specific Models
npx @api-buddy/prisma generate:routes --models User,Post --output src/app/api
Exclude Models from Generation
npx @api-buddy/prisma generate:routes --exclude User,Session --output src/app/api
Add Authentication to Routes
npx @api-buddy/prisma generate:routes --auth --output src/app/api
API Reference
PrismaService
Extends the standard PrismaClient with additional features:
const prisma = new PrismaService({
// Standard Prisma options
log: ['query', 'info', 'warn', 'error'],
// Custom logger (optional)
logger: {
info: (message) => console.log(`[INFO] ${message}`),
error: (message, error) => console.error(`[ERROR] ${message}`, error)
}
});
// Generate CRUD routes programmatically
await prisma.generateCRUDRoutes({
outputDir: 'src/app/api',
models: ['User', 'Post'],
exclude: ['Session', 'Account'],
auth: {
required: true,
userIdField: 'id'
}
});
Configuration
CLI Options
Usage: api-buddy-prisma generate:routes [options]
Generate CRUD routes from your Prisma schema
Options:
-o, --output <dir> Output directory for generated routes (default: "src/app/api")
--models <models> Specific models to generate routes for (comma-separated)
--exclude <models> Models to exclude from route generation (comma-separated)
--auth Add authentication middleware to routes
-h, --help Display help for command
License
MIT