@alleen/cli
v1.0.1
Published
CLI for alleen-api — manage multi-database Prisma setup
Readme
@alleen/cli
⚠️ Important
This package cannot function on its own.
It is designed as a required dependency for alleen to work properly within a project.👉 To correctly initialize a compatible project, use the official repository:
https://github.com/olivierAdou/alleen-api.git
CLI for alleen-api — Manage multi-database Prisma setup with a single command.
Installation
npm install @alleen/cli --save-devOr use directly via npx:
npx alleen db:add --name=phoenix --url=postgresql://...Commands
alleen db:add
Add a new database. Generates everything automatically:
alleen db:add --name=phoenix --url=postgresql://user:pass@host/dbnameWhat it generates:
✅ prisma/phoenix/schema.prisma ← ready to add your models
✅ src/prisma/phoenix.service.ts ← NestJS PrismaService
✅ .env ← DATABASE_PHOENIX_URL added
✅ src/prisma/prisma.registry.ts ← auto-updated, no manual switch neededOptions:
| Option | Description | Default |
|---|---|---|
| --name | Database name (required) | — |
| --url | Connection URL (required) | — |
| --provider | DB provider | postgresql |
Supported providers: postgresql, mysql, sqlite, sqlserver, mongodb
alleen db:remove
Remove a database and clean up all generated files:
alleen db:remove --name=phoenixWhat it removes:
🗑️ src/prisma/phoenix.service.ts
🗑️ prisma/phoenix/
🗑️ DATABASE_PHOENIX_URL from .env
✅ src/prisma/prisma.registry.ts regeneratedalleen db:list
List all registered databases with their status:
alleen db:list🗄️ alleen db:list — Registered databases
1. phoenix ✅ .env ✅ schema
2. bulk ✅ .env ✅ schema
3. finance ✅ .env ❌ schema missing
Total: 3 database(s)alleen db:generate
Regenerate the registry from existing service files.
Useful after cloning the project or manually adding files:
alleen db:generateHow it works
Instead of maintaining a manual switch statement:
// ❌ Before — manual, breaks every time you add a DB
switch (database) {
case 'phoenix': dbInstance = this.phoenixPrismaService; break;
case 'bulk': dbInstance = this.bulkPrismaService; break;
// ... forever
}@alleen/cli auto-generates a registry:
// ✅ After — auto-generated, never touch it manually
// src/prisma/prisma.registry.ts
import { PhoenixPrismaService } from './phoenix.service';
import { BulkPrismaService } from './bulk.service';
export const PRISMA_REGISTRY = {
'phoenix': PhoenixPrismaService,
'bulk': BulkPrismaService,
};And your service becomes 3 lines:
const ServiceClass = PRISMA_REGISTRY[database];
if (!ServiceClass) throw new Error(`Database "${database}" not found`);
const dbInstance = this.moduleRef.get(ServiceClass, { strict: false });After adding a database
# 1. Add your models in prisma/phoenix/schema.prisma
# 2. Generate the Prisma client
npx prisma generate --schema=prisma/phoenix/schema.prisma
# 3. Run migrations
npx prisma migrate dev --schema=prisma/phoenix/schema.prismaLicense
MIT © olivier adou
