@rapidd/build
v1.2.2
Published
Dynamic code generator that transforms Prisma schemas into Express.js CRUD APIs with PostgreSQL RLS-to-JavaScript translation
Maintainers
Readme
@rapidd/build
Dynamic code generator that transforms Prisma schemas into complete Express.js CRUD APIs with intelligent PostgreSQL RLS-to-JavaScript translation.
Features
- 🚀 Automatic CRUD API Generation - Creates Express.js routes from Prisma models
- 🔒 RLS Translation - Converts PostgreSQL Row-Level Security policies to JavaScript/Prisma filters (ACL: Access Control Layer)
- 🎯 Dynamic & Schema-Aware - Zero hardcoding, adapts to any database structure
- 🔗 Relationship Handling - Supports 1:1, 1:n, n:m including junction tables
- 👥 Role-Based Access Control - Properly handles role checks in filters
- 📊 Model Generation - Creates CRUD model classes with capitalized filenames
- 🗺️ Relationships JSON - Generates complete relationship mappings with foreign keys
- ⚡ Selective Generation - Update only specific models or components
Requirements
- Prisma 7+ (recommended) - Full support for Prisma 7's new architecture
- Node.js 14.0.0 or higher
Installation
npm install @rapidd/buildQuick Start
# Generate everything in current directory (default)
npx rapidd build
# Generate in specific directory
npx rapidd build --output ./generated
# Generate only specific model
npx rapidd build --model user
# Generate only specific component
npx rapidd build --only model
npx rapidd build --only route
npx rapidd build --only acl
npx rapidd build --only relationship
# Combine model and component filters
npx rapidd build --model account --only route
# Specify custom user table
npx rapidd build --user-table accountsCLI Options
-o, --output <path>- Output directory (default:./)-s, --schema <path>- Prisma schema file (default:./prisma/schema.prisma)-m, --model <name>- Generate/update only specific model (e.g., "account", "user")--only <component>- Generate only specific component: "model", "route", "acl", or "relationship"--user-table <name>- User table name for ACL (default: auto-detected)
Selective Generation
Update Single Model
# Update only the account model across all components
npx rapidd build --model accountThis will:
- Generate/update
src/Model/Account.js - Generate/update
routes/api/v1/account.js - Update the
accountentry inrapidd/relationships.json - Update the
accountentry inrapidd/acl.js
Update Single Component
# Regenerate all routes
npx rapidd build --only route
# Regenerate all ACL configs
npx rapidd build --only acl
# Regenerate all models
npx rapidd build --only model
# Regenerate relationships
npx rapidd build --only relationshipCombine Filters
# Update only the route for a specific model
npx rapidd build --model user --only route
# Update ACL for account model
npx rapidd build --model account --only aclGenerated Structure
./
├── src/Model/
│ ├── User.js
│ ├── Post.js
│ └── ...
├── routes/
│ ├── user.js
│ ├── post.js
│ └── ...
└── rapidd/
├── acl.js
├── relationships.json
└── rapidd.jsACL Translation Example
PostgreSQL Policy:
CREATE POLICY user_policy ON posts
FOR SELECT
USING (author_id = current_user_id() OR current_user_role() IN ('admin', 'moderator'));Generated JavaScript:
getAccessFilter: (user) => {
if (['admin', 'moderator'].includes(user?.role)) return {};
return { author_id: user?.id };
}Use Cases
During Development
# After adding a new model to schema
npx rapidd build --model newModel
# After changing relationships
npx rapidd build --only relationship
# After updating RLS policies
npx rapidd build --only aclContinuous Integration
# Full rebuild for CI/CD
npx rapidd build --output ./generatedIncremental Updates
# Update specific model after schema changes
npx rapidd build --model user --only model
npx rapidd build --model user --only aclMigration from Prisma 6 to 7
If you're upgrading from Prisma 6, this package now automatically:
- Uses
@prisma/internalsfor DMMF access (no longer relies on generated client) - Reads database URL from multiple sources in order:
prisma.config.ts(Prisma 7 default)- Schema file
datasource.url(Prisma 5/6 style) DATABASE_URLenvironment variable
- Maintains full compatibility - no changes needed to your workflow
Simply update your dependencies and rebuild:
npm install @rapidd/build@latest
npm install prisma@^7.0.0 @prisma/client@^7.0.0
npx rapidd buildFor more details on Prisma 7 migration, see the official Prisma upgrade guide.
License
MIT
