Multi-Tenant (Prisma)
Database-per-tenant multi-tenancy with Prisma ORM. Each tenant gets a separate PrismaClient with its own datasourceUrl.
Features
TenantAdapterwith subdomain resolutionTenantConnectionManager<PrismaClient>— typed connection cacheTenantDbService— injectable wrapper usinggetCurrentTenant()AuthAdapterwith JWT authentication- Provider/tenant pattern with fallback to default database
- Each
getDb()call returns a fully typedPrismaClient
Key Files
| File | Purpose |
|---|---|
src/db/schema.ts | Shared types, provider tenant registry |
src/db/tenant-manager.ts | TenantConnectionManager<TDb> + Prisma factory |
src/db/tenant-db.service.ts | @Service() wrapping tenant DB resolution |
src/index.ts | Bootstrap with TenantAdapter + AuthAdapter |
src/modules/projects/ | Controller demonstrating tenant-scoped queries |
Running
bash
cd examples/multi-tenant-prisma-api
pnpm install
kick devSource
See Also
- Multi-Tenancy Guide — concepts, patterns, all ORMs