@api-buddy/prisma
Version:
Prisma database utilities for API Buddy
134 lines (95 loc) • 3.35 kB
Markdown
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.
```bash
pnpm add @api-buddy/prisma @prisma/client
```
- 🔄 **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
```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();
```
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.
```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 });
}
```
```bash
npx @api-buddy/prisma generate:routes --models User,Post --output src/app/api
```
```bash
npx @api-buddy/prisma generate:routes --exclude User,Session --output src/app/api
```
```bash
npx @api-buddy/prisma generate:routes --auth --output src/app/api
```
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'
}
});
```
```
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