@mostajs/mproject
v1.0.7
Published
Multi-project manager for @mostajs — orchestrate N isolated ORM instances
Maintainers
Readme
@mostajs/mproject
Multi-project manager for @mostajs — orchestrate N isolated ORM instances on one server.
Install
npm install @mostajs/mproject @mostajs/ormUsage
import { ProjectManager } from '@mostajs/mproject'
const pm = new ProjectManager()
// Add projects with isolated databases
await pm.addProject({
name: 'app1',
dialect: 'postgres',
uri: 'postgresql://user:pass@localhost:5432/app1',
schemas: [...],
schemaStrategy: 'update',
pool: { min: 2, max: 20 },
})
await pm.addProject({
name: 'analytics',
dialect: 'mongodb',
uri: 'mongodb://user:pass@localhost:27017/analytics',
schemas: [...],
})
// Route to the right project
const project = pm.resolveProject('app1')
const result = await project.entityService.execute({ op: 'findAll', entity: 'users' })
// Persistence
pm.enableAutoPersist('projects-tree.json')
// Pool management
pm.setGlobalPoolBudget(200)
pm.getPoolStats()Features
- N isolated databases on one process
- Auto-persistence to
projects-tree.json - Anti-overlap guards — prevents two projects mapping same schemas on same DB
- Pool budget — global connection limit across all projects
- Update/remove projects at runtime
- Backward compatible — default project = existing ORM singleton
API
| Method | Description |
|---|---|
| addProject(config) | Add a new project with isolated dialect |
| removeProject(name) | Disconnect and remove |
| updateProject(name, updates) | Modify an existing project |
| getProject(name) | Get project context |
| resolveProject(name?) | Resolve by name, fallback to default |
| listProjects() | List all projects (safe info) |
| loadFromFile(path) | Load from JSON file |
| saveToFile(path) | Save to JSON file |
| enableAutoPersist(path) | Auto-save after changes |
| setGlobalPoolBudget(max) | Set connection limit |
| getPoolStats() | Get pool metrics |
| disconnectAll() | Clean shutdown |
License
MIT — (c) 2026 Dr Hamid MADANI [email protected]
