@onroad/core 4.0.0-alpha.1 → 4.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +444 -8
- package/dist/OnRoadExpress.d.ts.map +1 -1
- package/dist/OnRoadExpress.js +12 -3
- package/dist/OnRoadExpress.js.map +1 -1
- package/dist/container/Container.d.ts +1 -1
- package/dist/container/Container.d.ts.map +1 -1
- package/dist/container/Container.js +15 -6
- package/dist/container/Container.js.map +1 -1
- package/dist/core/AbstractService.d.ts +12 -0
- package/dist/core/AbstractService.d.ts.map +1 -1
- package/dist/core/AbstractService.js +14 -0
- package/dist/core/AbstractService.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/database/ConnectionManager.d.ts +1 -0
- package/dist/database/ConnectionManager.d.ts.map +1 -1
- package/dist/database/ConnectionManager.js +2 -0
- package/dist/database/ConnectionManager.js.map +1 -1
- package/dist/dev/DevServer.d.ts +51 -0
- package/dist/dev/DevServer.d.ts.map +1 -0
- package/dist/dev/DevServer.js +404 -0
- package/dist/dev/DevServer.js.map +1 -0
- package/dist/dev/MigrationCLI.d.ts +19 -0
- package/dist/dev/MigrationCLI.d.ts.map +1 -0
- package/dist/dev/MigrationCLI.js +140 -0
- package/dist/dev/MigrationCLI.js.map +1 -0
- package/dist/dev/index.d.ts +5 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +3 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/entity/EntityRegistry.d.ts +25 -0
- package/dist/entity/EntityRegistry.d.ts.map +1 -1
- package/dist/entity/EntityRegistry.js +130 -4
- package/dist/entity/EntityRegistry.js.map +1 -1
- package/dist/entity/decorators.d.ts +1 -0
- package/dist/entity/decorators.d.ts.map +1 -1
- package/dist/entity/decorators.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> TypeScript backend framework for multi-tenant Express APIs — DI Container, Filter Chain, EventBus, Provider Pattern.
|
|
4
4
|
|
|
5
|
-
**v4.0.0-alpha.
|
|
5
|
+
**v4.0.0-alpha.1** — Full TypeScript rewrite of the onRoad framework.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -25,8 +25,11 @@
|
|
|
25
25
|
- [Storage](#storage)
|
|
26
26
|
- [Health Endpoint](#health-endpoint)
|
|
27
27
|
- [Graceful Shutdown](#graceful-shutdown)
|
|
28
|
+
- [Local Development (DevServer)](#local-development-devserver)
|
|
29
|
+
- [Migration CLI](#migration-cli)
|
|
28
30
|
- [Testing](#testing)
|
|
29
31
|
- [Subpath Exports](#subpath-exports)
|
|
32
|
+
- [Known Pitfalls](#known-pitfalls)
|
|
30
33
|
|
|
31
34
|
---
|
|
32
35
|
|
|
@@ -600,7 +603,7 @@ await app.shutdown()
|
|
|
600
603
|
|
|
601
604
|
## Testing
|
|
602
605
|
|
|
603
|
-
TypeRoad uses [Vitest](https://vitest.dev/) with **
|
|
606
|
+
TypeRoad uses [Vitest](https://vitest.dev/) with **242 tests** across 10 test files:
|
|
604
607
|
|
|
605
608
|
```bash
|
|
606
609
|
npm test # Run all tests
|
|
@@ -610,7 +613,7 @@ npm run test:coverage # Coverage report
|
|
|
610
613
|
|
|
611
614
|
| Test File | Tests | Covers |
|
|
612
615
|
|-----------|-------|--------|
|
|
613
|
-
| `container.test.ts` |
|
|
616
|
+
| `container.test.ts` | 19 | DI Container, decorators, scopes |
|
|
614
617
|
| `entity.test.ts` | 14 | Entity, Column, associations |
|
|
615
618
|
| `database.test.ts` | 13 | ConnectionManagers |
|
|
616
619
|
| `filters.test.ts` | 33 | FilterChain, all 5 built-in filters |
|
|
@@ -619,6 +622,7 @@ npm run test:coverage # Coverage report
|
|
|
619
622
|
| `logging.test.ts` | 20 | PinoLogger, OnRoadLogger |
|
|
620
623
|
| `providers.test.ts` | 41 | All 4 providers, graceful-fail, shutdown |
|
|
621
624
|
| `transport.test.ts` | 25 | HttpTransport, MessagingTransport, TransportFactory, RequestContext |
|
|
625
|
+
| `dev.test.ts` | 16 | DevServer, MigrationCLI |
|
|
622
626
|
|
|
623
627
|
---
|
|
624
628
|
|
|
@@ -631,21 +635,184 @@ src/
|
|
|
631
635
|
├── container/ # DI Container + decorators
|
|
632
636
|
├── context/ # RequestContext (AsyncLocalStorage)
|
|
633
637
|
├── core/ # AbstractController/Service/Repository, Sentinel, EventBus
|
|
638
|
+
├── database/ # ConnectionManager abstract + Sequelize/Mongo implementations
|
|
639
|
+
│ └── migrations/ # MigrationRunner (Umzug)
|
|
640
|
+
├── dev/ # DevServer, MigrationCLI — local dev tools
|
|
634
641
|
├── entity/ # @Entity, @Column, @Field, associations
|
|
635
642
|
├── filters/ # FilterChain, @Filter, built-in filters (Cors, JWT, Tenant, Role, RequestContext)
|
|
636
|
-
├── security/ # @Roles, @Public
|
|
637
|
-
├── database/ # ConnectionManager abstract + Sequelize/Mongo implementations
|
|
638
|
-
├── transport/ # InterServiceTransport, HttpTransport, MessagingTransport, TransportFactory
|
|
639
|
-
├── messaging/ # MatchingObject
|
|
640
|
-
├── providers/ # MessagingProvider, RealtimeProvider, TaskSchedulerProvider, SocketProvider
|
|
641
643
|
├── logging/ # OnRoadLogger interface + PinoLogger
|
|
644
|
+
├── messaging/ # MatchingObject
|
|
642
645
|
├── plugins/ # OnRoadPlugin interface
|
|
646
|
+
├── providers/ # MessagingProvider, RealtimeProvider, TaskSchedulerProvider, SocketProvider
|
|
647
|
+
├── security/ # @Roles, @Public
|
|
643
648
|
├── storage/ # StorageProvider abstract
|
|
649
|
+
├── transport/ # InterServiceTransport, HttpTransport, MessagingTransport, TransportFactory
|
|
644
650
|
└── types/ # Express Request augmentation
|
|
645
651
|
```
|
|
646
652
|
|
|
647
653
|
---
|
|
648
654
|
|
|
655
|
+
## Local Development (DevServer)
|
|
656
|
+
|
|
657
|
+
TypeRoad includes a `DevServer` that makes local development self-sufficient — it starts database containers, runs migrations, and logs all environment variables your frontend needs.
|
|
658
|
+
|
|
659
|
+
### Quick Start
|
|
660
|
+
|
|
661
|
+
```ts
|
|
662
|
+
import "reflect-metadata"
|
|
663
|
+
import { OnRoadExpress } from "@onroad/core"
|
|
664
|
+
import { SequelizeConnectionManager } from "@onroad/core/database"
|
|
665
|
+
import { DevServer } from "@onroad/core/dev"
|
|
666
|
+
|
|
667
|
+
const app = new OnRoadExpress({
|
|
668
|
+
connections: [
|
|
669
|
+
new SequelizeConnectionManager({
|
|
670
|
+
dialect: "postgres",
|
|
671
|
+
host: "localhost",
|
|
672
|
+
port: 5432,
|
|
673
|
+
user: "typeroad",
|
|
674
|
+
password: "typeroad_dev",
|
|
675
|
+
database: "typeroad_dev",
|
|
676
|
+
migrations: {
|
|
677
|
+
path: "./src/migrations",
|
|
678
|
+
runOnConnect: true,
|
|
679
|
+
},
|
|
680
|
+
}),
|
|
681
|
+
],
|
|
682
|
+
})
|
|
683
|
+
|
|
684
|
+
// Register your controllers, services, repositories...
|
|
685
|
+
app.register([/* ... */])
|
|
686
|
+
|
|
687
|
+
const devServer = new DevServer({
|
|
688
|
+
app,
|
|
689
|
+
databases: [{ engine: "postgres", port: 5432 }],
|
|
690
|
+
migrationsPath: "./src/migrations",
|
|
691
|
+
tenants: ["default"],
|
|
692
|
+
frontendVars: {
|
|
693
|
+
REACT_APP_TENANT: "default",
|
|
694
|
+
REACT_APP_WS_URL: "ws://localhost:3000",
|
|
695
|
+
},
|
|
696
|
+
})
|
|
697
|
+
|
|
698
|
+
await devServer.start({ port: 3000 })
|
|
699
|
+
// Press Ctrl+C to stop
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
### What DevServer Does
|
|
703
|
+
|
|
704
|
+
1. **Generates `docker-compose.dev.yml`** — PostgreSQL (or MySQL) container with healthcheck, volumes, and sensible defaults
|
|
705
|
+
2. **Starts the container** — `docker compose up -d` automatically
|
|
706
|
+
3. **Waits for readiness** — polls `pg_isready` / `mysqladmin ping` until the DB accepts connections
|
|
707
|
+
4. **Runs migrations** — applies all pending Umzug migrations from your configured path
|
|
708
|
+
5. **Starts the API server** — calls `app.buildServer()` as usual
|
|
709
|
+
6. **Logs frontend env vars** — prints a copy-pasteable block and writes `.env.dev`:
|
|
710
|
+
|
|
711
|
+
```
|
|
712
|
+
┌──────────────────────────────────────────────────────────────┐
|
|
713
|
+
│ FRONTEND ENVIRONMENT VARIABLES │
|
|
714
|
+
├──────────────────────────────────────────────────────────────┤
|
|
715
|
+
│ REACT_APP_API_URL=http://localhost:3000
|
|
716
|
+
│ NEXT_PUBLIC_API_URL=http://localhost:3000
|
|
717
|
+
│ VITE_API_URL=http://localhost:3000
|
|
718
|
+
│ DATABASE_URL=postgresql://typeroad:typeroad_dev@localhost:5432/typeroad_dev
|
|
719
|
+
│ REACT_APP_TENANT=default
|
|
720
|
+
└──────────────────────────────────────────────────────────────┘
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
### DevServer Config
|
|
724
|
+
|
|
725
|
+
| Option | Type | Default | Description |
|
|
726
|
+
|--------|------|---------|-------------|
|
|
727
|
+
| `app` | `OnRoadExpress` | required | The app instance |
|
|
728
|
+
| `databases` | `DevDatabaseConfig[]` | `[{ engine: "postgres" }]` | Database containers to start |
|
|
729
|
+
| `frontendVars` | `Record<string, string>` | `{}` | Extra vars to log for frontend |
|
|
730
|
+
| `migrationsPath` | `string` | — | Path to migration files |
|
|
731
|
+
| `autoMigrate` | `boolean` | `true` | Run migrations on start |
|
|
732
|
+
| `tenants` | `string[]` | `["default"]` | Tenants to run migrations for |
|
|
733
|
+
| `composeFile` | `string` | `"docker-compose.dev.yml"` | Docker compose filename |
|
|
734
|
+
|
|
735
|
+
### Database Defaults
|
|
736
|
+
|
|
737
|
+
| Engine | Image | Port | User | Password | Database |
|
|
738
|
+
|--------|-------|------|------|----------|----------|
|
|
739
|
+
| `postgres` | `postgres:16-alpine` | `5432` | `typeroad` | `typeroad_dev` | `typeroad_dev` |
|
|
740
|
+
| `mysql` | `mysql:8.0` | `3306` | `typeroad` | `typeroad_dev` | `typeroad_dev` |
|
|
741
|
+
|
|
742
|
+
---
|
|
743
|
+
|
|
744
|
+
## Migration CLI
|
|
745
|
+
|
|
746
|
+
The `MigrationCLI` class provides a programmatic API for managing database migrations.
|
|
747
|
+
|
|
748
|
+
### Usage
|
|
749
|
+
|
|
750
|
+
```ts
|
|
751
|
+
import { MigrationCLI } from "@onroad/core/dev"
|
|
752
|
+
import { SequelizeConnectionManager } from "@onroad/core/database"
|
|
753
|
+
|
|
754
|
+
const connection = new SequelizeConnectionManager({
|
|
755
|
+
dialect: "postgres",
|
|
756
|
+
host: "localhost",
|
|
757
|
+
user: "typeroad",
|
|
758
|
+
password: "typeroad_dev",
|
|
759
|
+
database: "typeroad_dev",
|
|
760
|
+
migrations: { path: "./src/migrations" },
|
|
761
|
+
})
|
|
762
|
+
|
|
763
|
+
const cli = new MigrationCLI({
|
|
764
|
+
migrationsPath: "./src/migrations",
|
|
765
|
+
connection,
|
|
766
|
+
tenant: "default",
|
|
767
|
+
})
|
|
768
|
+
|
|
769
|
+
// Run from CLI args
|
|
770
|
+
await cli.run() // reads process.argv
|
|
771
|
+
|
|
772
|
+
// Or call directly
|
|
773
|
+
cli.create("add-users-table") // creates timestamped migration file
|
|
774
|
+
await cli.up() // apply all pending
|
|
775
|
+
await cli.up(1) // apply 1 step
|
|
776
|
+
await cli.down() // revert last migration
|
|
777
|
+
await cli.status() // show status table
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
### CLI Commands
|
|
781
|
+
|
|
782
|
+
| Command | Description | Example |
|
|
783
|
+
|---------|-------------|---------|
|
|
784
|
+
| `create <name>` | Create a new migration file | `cli.run(["create", "add-orders"])` |
|
|
785
|
+
| `up [steps]` | Apply pending migrations | `cli.run(["up"])` or `cli.run(["up", "3"])` |
|
|
786
|
+
| `down [steps]` | Revert migrations (default: 1) | `cli.run(["down", "2"])` |
|
|
787
|
+
| `status` | Show applied/pending status | `cli.run(["status"])` |
|
|
788
|
+
|
|
789
|
+
### Migration File Format
|
|
790
|
+
|
|
791
|
+
Generated `.ts` files follow the Umzug/Sequelize pattern:
|
|
792
|
+
|
|
793
|
+
```ts
|
|
794
|
+
import type { QueryInterface, Sequelize } from "sequelize"
|
|
795
|
+
|
|
796
|
+
export default {
|
|
797
|
+
async up(queryInterface: QueryInterface, sequelize: Sequelize): Promise<void> {
|
|
798
|
+
await queryInterface.createTable("ordens", {
|
|
799
|
+
id: { type: sequelize.constructor["DataTypes"].UUID, primaryKey: true },
|
|
800
|
+
descricao: { type: sequelize.constructor["DataTypes"].STRING, allowNull: false },
|
|
801
|
+
createdAt: sequelize.constructor["DataTypes"].DATE,
|
|
802
|
+
updatedAt: sequelize.constructor["DataTypes"].DATE,
|
|
803
|
+
})
|
|
804
|
+
},
|
|
805
|
+
|
|
806
|
+
async down(queryInterface: QueryInterface): Promise<void> {
|
|
807
|
+
await queryInterface.dropTable("ordens")
|
|
808
|
+
},
|
|
809
|
+
}
|
|
810
|
+
```
|
|
811
|
+
|
|
812
|
+
Migration state is tracked in the `__typeroad_migrations` table (configurable via `tableName` in `MigrationConfig`).
|
|
813
|
+
|
|
814
|
+
---
|
|
815
|
+
|
|
649
816
|
## Subpath Exports
|
|
650
817
|
|
|
651
818
|
Import only what you need:
|
|
@@ -661,6 +828,275 @@ import { HttpTransport, TransportFactory } from "@onroad/core/transport" // Tran
|
|
|
661
828
|
import { MatchingObject } from "@onroad/core/messaging" // Messaging
|
|
662
829
|
import { PinoLogger } from "@onroad/core/logging" // Logging
|
|
663
830
|
import { StorageProvider } from "@onroad/core/storage" // Storage
|
|
831
|
+
import { DevServer, MigrationCLI } from "@onroad/core/dev" // Dev Tools
|
|
832
|
+
```
|
|
833
|
+
|
|
834
|
+
---
|
|
835
|
+
|
|
836
|
+
## Known Pitfalls
|
|
837
|
+
|
|
838
|
+
### Controller base path must not be empty
|
|
839
|
+
|
|
840
|
+
Always pass `/` or a non-empty path to `@Controller()`. An empty string is falsy and previously caused the route guard to **silently drop all routes** of that controller.
|
|
841
|
+
|
|
842
|
+
```ts
|
|
843
|
+
// ❌ Wrong — all routes silently skipped
|
|
844
|
+
@Controller("")
|
|
845
|
+
class UserController extends AbstractController<UserService> { ... }
|
|
846
|
+
|
|
847
|
+
// ✅ Correct — root-level routes
|
|
848
|
+
@Controller("/")
|
|
849
|
+
class UserController extends AbstractController<UserService> { ... }
|
|
850
|
+
|
|
851
|
+
// ✅ Correct — prefixed routes
|
|
852
|
+
@Controller("/users")
|
|
853
|
+
class UserController extends AbstractController<UserService> { ... }
|
|
854
|
+
```
|
|
855
|
+
|
|
856
|
+
> Since **v4.0.0-alpha.1** the path guard was tightened (`basePath === undefined || basePath === null`) and paths are normalized (`//auth` → `/auth`), so `@Controller("/")` + route `"/auth"` resolves correctly to `/auth` instead of `//auth`.
|
|
857
|
+
|
|
858
|
+
---
|
|
859
|
+
|
|
860
|
+
### Circular service dependencies
|
|
861
|
+
|
|
862
|
+
When two services reference each other (e.g. `UserService ↔ CompanyService`), eager instantiation inside `configDependencies()` causes a `RangeError: Maximum call stack size exceeded` at startup because the constructors recurse infinitely.
|
|
863
|
+
|
|
864
|
+
```ts
|
|
865
|
+
// ❌ Wrong — infinite recursion on startup
|
|
866
|
+
@Service()
|
|
867
|
+
class UserService extends AbstractService<UserRepository> {
|
|
868
|
+
companySVC!: CompanyService
|
|
869
|
+
|
|
870
|
+
configDependencies() {
|
|
871
|
+
this.companySVC = new CompanyService() // → CompanyService() → new UserService() → ...
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
```
|
|
875
|
+
|
|
876
|
+
Fix: replace the eager field with a **lazy getter**. The getter body only runs on first access, never during construction, which breaks the cycle:
|
|
877
|
+
|
|
878
|
+
```ts
|
|
879
|
+
// ✅ Correct — lazy getter breaks the circular chain
|
|
880
|
+
@Service()
|
|
881
|
+
class UserService extends AbstractService<UserRepository> {
|
|
882
|
+
private _companySVC?: CompanyService
|
|
883
|
+
|
|
884
|
+
protected get companySVC(): CompanyService {
|
|
885
|
+
if (!this._companySVC) this._companySVC = new CompanyService()
|
|
886
|
+
return this._companySVC
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
@Service()
|
|
891
|
+
class CompanyService extends AbstractService<CompanyRepository> {
|
|
892
|
+
private _userSVC?: UserService
|
|
893
|
+
|
|
894
|
+
protected get userSVC(): UserService {
|
|
895
|
+
if (!this._userSVC) this._userSVC = new UserService()
|
|
896
|
+
return this._userSVC
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
```
|
|
900
|
+
|
|
901
|
+
> **Why it was masked before**: the `if (!basePath)` bug meant controllers (and therefore services) were never instantiated during `buildServer()`. The circular dep crash only surfaced after fixing the route guard.
|
|
902
|
+
|
|
903
|
+
---
|
|
904
|
+
|
|
905
|
+
### Overriding `fullAssociation` in Repositories
|
|
906
|
+
|
|
907
|
+
When using `@onroad/core`, the `@Repository` decorator automatically builds relations and injects the `fullAssociation` property populated with the appropriate Sequelize Models. Manually overriding this property in your repository class using raw ES classes will cause crashes during runtime (e.g., `TypeError: include.model.getTableName is not a function`) because Sequelize expects internal model objects, not raw classes.
|
|
908
|
+
|
|
909
|
+
```ts
|
|
910
|
+
// ❌ Wrong — overriding fullAssociation with raw ES classes crashes Sequelize
|
|
911
|
+
@Repository({ entity: User })
|
|
912
|
+
export class UserRepository extends BaseRepository<User> {
|
|
913
|
+
readonly fullAssociation = [{ model: FilterPref, as: "filters" }]
|
|
914
|
+
}
|
|
915
|
+
```
|
|
916
|
+
|
|
917
|
+
**Fix:** Remove the hardcoded override. If you are extending a custom `BaseRepository` and need TypeScript to recognize the property without emitting an overriding value in the compiled JavaScript, use the `declare` modifier:
|
|
918
|
+
|
|
919
|
+
```ts
|
|
920
|
+
// ✅ Correct — Let the decorator inject the value and use `declare` for typings
|
|
921
|
+
export abstract class BaseRepository<TEntity = unknown> extends SequelizeRepository<TEntity> {
|
|
922
|
+
declare readonly fullAssociation: any[] // Tells TS it exists without overriding it
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
@Repository({ entity: User })
|
|
926
|
+
export class UserRepository extends BaseRepository<User> {
|
|
927
|
+
// No fullAssociation override here!
|
|
928
|
+
}
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
---
|
|
932
|
+
|
|
933
|
+
---
|
|
934
|
+
|
|
935
|
+
## Migration Guide — Lessons Learned (v3 → v4)
|
|
936
|
+
|
|
937
|
+
This section documents the key issues found while migrating `teraprox-api-user` from onRoad v3 to TypeRoad v4. Use this as a checklist when migrating other APIs (`api-manutencao`, `api-processo`, etc.).
|
|
938
|
+
|
|
939
|
+
### 1. Entity Associations — Use Decorators, Not `buildAssociations()`
|
|
940
|
+
|
|
941
|
+
v3 used `buildAssociations()` inside repositories. v4 uses decorators on entity classes. **Every association must be declared on the entity itself.**
|
|
942
|
+
|
|
943
|
+
```ts
|
|
944
|
+
// ❌ v3 — Repository-based associations (REMOVE)
|
|
945
|
+
class UserRepository extends BaseRepository {
|
|
946
|
+
buildAssociations() {
|
|
947
|
+
this.hasMany(UserRole, "userRole")
|
|
948
|
+
this.belongsTo(Company, "company")
|
|
949
|
+
}
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
// ✅ v4 — Entity decorator associations
|
|
953
|
+
@Entity("user", { engine: "sequelize", timestamps: true })
|
|
954
|
+
class User {
|
|
955
|
+
@HasMany(() => UserRole, "userId")
|
|
956
|
+
userRole!: UserRole[]
|
|
957
|
+
|
|
958
|
+
@BelongsToMany(() => Company, () => UserCompany, "userId", "companyId")
|
|
959
|
+
companies!: Company[]
|
|
960
|
+
}
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
**Checklist per entity:**
|
|
964
|
+
- Join table entities (e.g. `UserRole`, `UserSetor`, `UserCompany`) **must** declare their FK columns with `@Column` AND the `@BelongsTo` back-reference.
|
|
965
|
+
|
|
966
|
+
```ts
|
|
967
|
+
@Entity("userRole", { engine: "sequelize", timestamps: true })
|
|
968
|
+
class UserRole {
|
|
969
|
+
@Column({ type: DataType.STRING })
|
|
970
|
+
userId!: string
|
|
971
|
+
|
|
972
|
+
@Column({ type: DataType.STRING })
|
|
973
|
+
roleId!: string
|
|
974
|
+
|
|
975
|
+
@BelongsTo(() => Role, "roleId")
|
|
976
|
+
role!: Role
|
|
977
|
+
}
|
|
978
|
+
```
|
|
979
|
+
|
|
980
|
+
### 2. Includes — Use String-Based Associations, Not Model References
|
|
981
|
+
|
|
982
|
+
v3 used `this.repository.fullAssociation` (injected array of `{ model: SequelizeModel }`).
|
|
983
|
+
v4 uses **string-based `association` names** that match the decorator property name.
|
|
984
|
+
|
|
985
|
+
```ts
|
|
986
|
+
// ❌ v3 — model-based includes (CRASH: model is a raw class, not Sequelize model)
|
|
987
|
+
const user = await this.repository.findOne({
|
|
988
|
+
where: { email },
|
|
989
|
+
include: this.repository.fullAssociation
|
|
990
|
+
})
|
|
991
|
+
|
|
992
|
+
// ✅ v4 — string-based association includes
|
|
993
|
+
const USER_FULL_INCLUDE = [
|
|
994
|
+
{ association: "filters" },
|
|
995
|
+
{ association: "tickets" },
|
|
996
|
+
{ association: "userRole" },
|
|
997
|
+
{ association: "userSetor" }
|
|
998
|
+
]
|
|
999
|
+
const user = await this.repository.findOne({
|
|
1000
|
+
where: { email },
|
|
1001
|
+
include: USER_FULL_INCLUDE
|
|
1002
|
+
})
|
|
1003
|
+
```
|
|
1004
|
+
|
|
1005
|
+
**Nested includes follow the same pattern:**
|
|
1006
|
+
```ts
|
|
1007
|
+
include: [
|
|
1008
|
+
{
|
|
1009
|
+
association: "userRole",
|
|
1010
|
+
include: [{ association: "role", where: { companyId }, required: false }]
|
|
1011
|
+
},
|
|
1012
|
+
{
|
|
1013
|
+
association: "userSetor",
|
|
1014
|
+
include: [{ association: "setor", where: { companyId }, required: false }]
|
|
1015
|
+
}
|
|
1016
|
+
]
|
|
1017
|
+
```
|
|
1018
|
+
|
|
1019
|
+
### 3. Raw Queries — Use `getSequelizeConnection()`
|
|
1020
|
+
|
|
1021
|
+
v3 accessed `(this.repository as any).connection.query(...)`.
|
|
1022
|
+
v4 exposes this through `BaseRepository.getSequelizeConnection()`.
|
|
1023
|
+
|
|
1024
|
+
```ts
|
|
1025
|
+
// ❌ v3
|
|
1026
|
+
const [results] = await (this.repository as any).connection.query(sql)
|
|
1027
|
+
|
|
1028
|
+
// ✅ v4 — add this method to your BaseRepository
|
|
1029
|
+
getSequelizeConnection() { return this.getConnection() }
|
|
1030
|
+
|
|
1031
|
+
// Usage in service:
|
|
1032
|
+
const [results] = await this.repository.getSequelizeConnection().query(sql)
|
|
1033
|
+
```
|
|
1034
|
+
|
|
1035
|
+
### 4. Remove `fullAssociation` from BaseRepository
|
|
1036
|
+
|
|
1037
|
+
v3 APIs declare `fullAssociation` on `BaseRepository`. **Remove it entirely** — v4 does not use it. Includes are now inline at the query site.
|
|
1038
|
+
|
|
1039
|
+
```ts
|
|
1040
|
+
// ❌ v3
|
|
1041
|
+
export abstract class BaseRepository<T> extends SequelizeRepository<T> {
|
|
1042
|
+
declare readonly fullAssociation: any[]
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
// ✅ v4
|
|
1046
|
+
export abstract class BaseRepository<T> extends SequelizeRepository<T> {
|
|
1047
|
+
// No fullAssociation — define includes where you query
|
|
1048
|
+
}
|
|
1049
|
+
```
|
|
1050
|
+
|
|
1051
|
+
### 5. Controller Return Values Are Auto-Serialized
|
|
1052
|
+
|
|
1053
|
+
v4's `OnRoadExpress` automatically calls `res.json(result)` when a controller method returns a value and `res.headersSent` is false. **Do not manually call `res.json()` in controllers if you return a value** — it will cause "headers already sent" errors.
|
|
1054
|
+
|
|
1055
|
+
```ts
|
|
1056
|
+
// ✅ Just return the value — framework serializes it
|
|
1057
|
+
async login(form: any, req: Request, res: Response) {
|
|
1058
|
+
const userData = await this.service.login(form, req, res)
|
|
1059
|
+
return userData // Framework calls res.json(userData)
|
|
1060
|
+
}
|
|
1061
|
+
```
|
|
1062
|
+
|
|
1063
|
+
### 6. `BelongsToMany` Includes — Beware of Query Hangs
|
|
1064
|
+
|
|
1065
|
+
Using `BelongsToMany` associations (like `User ↔ Company` through `UserCompany`) in Sequelize `include` can cause queries to hang with large datasets or complex joins. **Avoid including BelongsToMany in default/frequent queries.** Use it only in specific methods that need it, and consider raw SQL queries for performance-critical paths.
|
|
1066
|
+
|
|
1067
|
+
### 7. Common Migration Search Patterns
|
|
1068
|
+
|
|
1069
|
+
When migrating an API, search for these patterns and replace them:
|
|
1070
|
+
|
|
1071
|
+
| Search Pattern | Replace With |
|
|
1072
|
+
|---|---|
|
|
1073
|
+
| `this.repository.fullAssociation` | Inline `[{ association: "..." }]` array |
|
|
1074
|
+
| `(this.xxxRepo as any).model` | `{ association: "aliasName" }` |
|
|
1075
|
+
| `(this.xxxRepo as any).xxxRepo` | `{ association: "aliasName" }` |
|
|
1076
|
+
| `(this.repository as any).connection` | `this.repository.getSequelizeConnection()` |
|
|
1077
|
+
| `buildAssociations()` | `@HasMany`, `@BelongsTo`, `@HasOne`, `@BelongsToMany` on entity |
|
|
1078
|
+
| `{ model: SomeClass, as: "..." }` | `{ association: "..." }` |
|
|
1079
|
+
|
|
1080
|
+
### 8. `ARRAY` Column Type
|
|
1081
|
+
|
|
1082
|
+
For PostgreSQL `varchar[]` columns, use the custom `arrayType` option:
|
|
1083
|
+
|
|
1084
|
+
```ts
|
|
1085
|
+
@Column({ type: DataType.ARRAY, arrayType: DataType.STRING })
|
|
1086
|
+
componentesBloqueados!: string[]
|
|
1087
|
+
```
|
|
1088
|
+
|
|
1089
|
+
### 9. Env & Local Dev Setup
|
|
1090
|
+
|
|
1091
|
+
Each API needs a `.env` at its server root with:
|
|
1092
|
+
- `LOCAL_NO_JWT=true` — skips JWT validation for local dev
|
|
1093
|
+
- DB connection vars (`DB_HOST`, `DB_PORT`, `DB_USER`, `DB_PASSWORD`, `DBNAME`)
|
|
1094
|
+
- `TOKEN_KEY` — any string for local token signing
|
|
1095
|
+
- `API_PORT` — local port for the service
|
|
1096
|
+
|
|
1097
|
+
Use `cloud-sql-proxy` for connecting to GCP Cloud SQL locally:
|
|
1098
|
+
```bash
|
|
1099
|
+
./cloud-sql-proxy <PROJECT>:<REGION>:<INSTANCE> --port=5432
|
|
664
1100
|
```
|
|
665
1101
|
|
|
666
1102
|
---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnRoadExpress.d.ts","sourceRoot":"","sources":["../src/OnRoadExpress.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AACzB,OAAgB,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAoC,MAAM,SAAS,CAAA;AAI/F,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"OnRoadExpress.d.ts","sourceRoot":"","sources":["../src/OnRoadExpress.ts"],"names":[],"mappings":"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"}
|
package/dist/OnRoadExpress.js
CHANGED
|
@@ -2,11 +2,12 @@ import "reflect-metadata";
|
|
|
2
2
|
import express from "express";
|
|
3
3
|
import { createServer } from "http";
|
|
4
4
|
import { v4 as uuidv4 } from "uuid";
|
|
5
|
-
import { OnRoadContainer } from "./container/Container.js";
|
|
5
|
+
import { OnRoadContainer, METADATA_KEY } from "./container/Container.js";
|
|
6
6
|
import { FilterChain, getFilterConfig, isFilterInstance, getFilterConstructor } from "./filters/FilterChain.js";
|
|
7
7
|
import { getRoles } from "./security/decorators.js";
|
|
8
8
|
import { RequestEventBus } from "./core/RequestEventBus.js";
|
|
9
9
|
import { TransportFactory } from "./transport/TransportFactory.js";
|
|
10
|
+
import { EntityRegistry } from "./entity/EntityRegistry.js";
|
|
10
11
|
import { PinoLogger } from "./logging/PinoLogger.js";
|
|
11
12
|
import { requestContext } from "./context/RequestContext.js";
|
|
12
13
|
// --- Main Class ---
|
|
@@ -109,6 +110,11 @@ export class OnRoadExpress {
|
|
|
109
110
|
// --- Module registration ---
|
|
110
111
|
register(modules) {
|
|
111
112
|
this.container.scan(modules);
|
|
113
|
+
// Register entity classes with EntityRegistry for association wiring
|
|
114
|
+
const entityClasses = modules.filter((mod) => Reflect.getMetadata(METADATA_KEY.ENTITY, mod) !== undefined);
|
|
115
|
+
if (entityClasses.length > 0) {
|
|
116
|
+
EntityRegistry.registerEntityClasses(entityClasses);
|
|
117
|
+
}
|
|
112
118
|
// Auto-discover @Filter decorated classes
|
|
113
119
|
for (const mod of modules) {
|
|
114
120
|
const filterConfig = getFilterConfig(mod);
|
|
@@ -162,7 +168,7 @@ export class OnRoadExpress {
|
|
|
162
168
|
}
|
|
163
169
|
// Apply registered controllers as routes
|
|
164
170
|
const tenantResolver = config.tenantResolver ?? ((req) => {
|
|
165
|
-
return req.headers["x-tenant-id"] ?? "default";
|
|
171
|
+
return req.tenant ?? req.headers["x-tenant-id"] ?? "default";
|
|
166
172
|
});
|
|
167
173
|
const controllers = this.container.getByType("controller");
|
|
168
174
|
for (const meta of controllers) {
|
|
@@ -200,7 +206,10 @@ export class OnRoadExpress {
|
|
|
200
206
|
}
|
|
201
207
|
// Call the controller method
|
|
202
208
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
203
|
-
await controller[methodName](req, res, next);
|
|
209
|
+
const result = await controller[methodName](req, res, next);
|
|
210
|
+
if (result !== undefined && !res.headersSent) {
|
|
211
|
+
res.json(result);
|
|
212
|
+
}
|
|
204
213
|
}
|
|
205
214
|
catch (err) {
|
|
206
215
|
next(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnRoadExpress.js","sourceRoot":"","sources":["../src/OnRoadExpress.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OnRoadExpress.js","sourceRoot":"","sources":["../src/OnRoadExpress.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,7 +43,7 @@ export declare class OnRoadContainer {
|
|
|
43
43
|
registerConnectionManager(engine: string, manager: unknown): void;
|
|
44
44
|
scan(modules: Constructor[]): void;
|
|
45
45
|
resolve<T>(token: Constructor<T>, scope?: RequestScope): T;
|
|
46
|
-
private
|
|
46
|
+
private wire;
|
|
47
47
|
createScope(requestId: string, tenant?: string): RequestScope;
|
|
48
48
|
getControllerPath(target: Constructor): string | undefined;
|
|
49
49
|
getByType(type: ClassMetadata["type"]): ClassMetadata[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../src/container/Container.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AAEpE,oBAAY,KAAK;IACf,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAA;CACnF;AAID,QAAA,MAAM,YAAY;;;;;;;;;CASR,CAAA;AAEV,OAAO,EAAE,YAAY,EAAE,CAAA;AAIvB,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAKtE;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAM3D;AAED,wBAAgB,OAAO,IAAI,cAAc,CAMxC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAMrE;AAID,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,kBAAkB,CAA6B;IAEvD,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAIjE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAyBlC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../src/container/Container.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AAEpE,oBAAY,KAAK;IACf,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAA;CACnF;AAID,QAAA,MAAM,YAAY;;;;;;;;;CASR,CAAA;AAEV,OAAO,EAAE,YAAY,EAAE,CAAA;AAIvB,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAKtE;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAM3D;AAED,wBAAgB,OAAO,IAAI,cAAc,CAMxC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAMrE;AAID,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,kBAAkB,CAA6B;IAEvD,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAIjE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAyBlC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,CAAC;IAqC1D,OAAO,CAAC,IAAI;IAuDZ,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY;IAQ7D,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAI1D,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,EAAE;IAIvD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI3B,KAAK,IAAI,IAAI;CAId"}
|