@api-buddy/prisma
Version:
Prisma database utilities for API Buddy
33 lines (31 loc) • 3.49 kB
JavaScript
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
;var p=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var D=(s,e)=>{for(var r in e)p(s,r,{get:e[r],enumerable:!0})},u=(s,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of $(e))!v.call(s,o)&&o!==r&&p(s,o,{get:()=>e[o],enumerable:!(t=x(e,o))||t.enumerable});return s},n=(s,e,r)=>(u(s,e,"default"),r&&u(r,e,"default"));var M=s=>u(p({},"__esModule",{value:!0}),s);var i={};D(i,{CRUDGenerator:()=>c,PrismaService:()=>d,createPrismaService:()=>w,default:()=>b,generateCRUDRoutes:()=>N});module.exports=M(i);var y=require("@prisma/client");var a=require("fs"),g=require("path"),c=class{constructor(e){this.prisma=e}getModelNames(){return[]}getModelFields(e){let r=e;return this.prisma[r]?["id","createdAt","updatedAt"]:[]}generateRouteContent(e,r){let t=e.toLowerCase(),o=`${t}Id`;return`// Generated by @api-buddy/prisma
import { NextResponse } from 'next/server';
import { prisma } from '@/lib/prisma';
// GET /api/${t}
export async function GET() {
try {
const items = await prisma.${t}.findMany();
return NextResponse.json(items);
} catch (error) {
return NextResponse.json(
{ error: 'Failed to fetch ${t}s' },
{ status: 500 }
);
}
}
// POST /api/${t}
export async function POST(request: Request) {
try {
const data = await request.json();
const item = await prisma.${t}.create({ data });
return NextResponse.json(item, { status: 201 });
} catch (error) {
return NextResponse.json(
{ error: 'Failed to create ${t}' },
{ status: 500 }
);
}
}
`}async generateCRUDRoutes(e){let{outputDir:r,models:t,exclude:o=[],auth:U}=e;(0,a.existsSync)(r)||(0,a.mkdirSync)(r,{recursive:!0});let C=(t||this.getModelNames()).filter(l=>!o.includes(l));for(let l of C){let m=String(l),P=this.getModelFields(m),R=this.generateRouteContent(m,P),h=(0,g.join)(r,m.toLowerCase(),"route.ts"),f=(0,g.join)(r,m.toLowerCase());(0,a.existsSync)(f)||(0,a.mkdirSync)(f,{recursive:!0}),(0,a.writeFileSync)(h,R),console.log(`\u2705 Generated CRUD routes for ${l} at ${h}`)}}};async function N(s,e){return new c(s).generateCRUDRoutes(e)}n(i,require("@prisma/client"),module.exports);var d=class{prisma;logger;crud;$connect;$disconnect;constructor(e){return this.prisma=new y.PrismaClient,this.logger=e||{info:r=>console.log(`[Prisma] ${r}`),error:(r,t)=>{let o=t?`${r}: ${t.message||t}`:r;console.error(`[Prisma] ${o}`),t!=null&&t.stack&&console.error(t.stack)}},this.crud=new c(this.prisma),this.$connect=this.prisma.$connect.bind(this.prisma),this.$disconnect=this.prisma.$disconnect.bind(this.prisma),new Proxy(this,{get:(r,t)=>t in r?r[t]:this.prisma[t]})}async connect(){try{await this.$connect(),this.logger.info("Successfully connected to the database")}catch(e){throw this.logger.error("Failed to connect to the database",e),e}}async disconnect(){try{await this.$disconnect(),this.logger.info("Successfully disconnected from the database")}catch(e){this.logger.error("Error disconnecting from the database",e)}}async generateCRUDRoutes(e){return this.crud.generateCRUDRoutes({outputDir:e.outputDir,models:e.models,exclude:e.exclude,auth:e.auth})}};function w(s){return new d(s)}var b=d;0&&(module.exports={CRUDGenerator,PrismaService,createPrismaService,generateCRUDRoutes,...require("@prisma/client")});
//# sourceMappingURL=index.js.map