UNPKG

@api-buddy/prisma

Version:

Prisma database utilities for API Buddy

134 lines (95 loc) 3.35 kB
# `@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 ```bash 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 ```typescript 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: ```bash 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 ```typescript // 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 ```bash npx @api-buddy/prisma generate:routes --models User,Post --output src/app/api ``` ### Exclude Models from Generation ```bash npx @api-buddy/prisma generate:routes --exclude User,Session --output src/app/api ``` ### Add Authentication to Routes ```bash npx @api-buddy/prisma generate:routes --auth --output src/app/api ``` ## API Reference ### `PrismaService` Extends the standard PrismaClient with additional features: ```typescript 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