@dangao/bun-server 2.0.8 → 2.1.0

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.
Files changed (89) hide show
  1. package/README.md +4 -0
  2. package/dist/controller/controller.d.ts.map +1 -1
  3. package/dist/core/application.d.ts +6 -1
  4. package/dist/core/application.d.ts.map +1 -1
  5. package/dist/core/server.d.ts +5 -0
  6. package/dist/core/server.d.ts.map +1 -1
  7. package/dist/database/database-context.d.ts +25 -0
  8. package/dist/database/database-context.d.ts.map +1 -0
  9. package/dist/database/database-extension.d.ts +8 -9
  10. package/dist/database/database-extension.d.ts.map +1 -1
  11. package/dist/database/database-module.d.ts +7 -1
  12. package/dist/database/database-module.d.ts.map +1 -1
  13. package/dist/database/db-proxy.d.ts +12 -0
  14. package/dist/database/db-proxy.d.ts.map +1 -0
  15. package/dist/database/index.d.ts +6 -1
  16. package/dist/database/index.d.ts.map +1 -1
  17. package/dist/database/orm/transaction-interceptor.d.ts +0 -16
  18. package/dist/database/orm/transaction-interceptor.d.ts.map +1 -1
  19. package/dist/database/orm/transaction-manager.d.ts +10 -61
  20. package/dist/database/orm/transaction-manager.d.ts.map +1 -1
  21. package/dist/database/service.d.ts.map +1 -1
  22. package/dist/database/sql-manager.d.ts +14 -0
  23. package/dist/database/sql-manager.d.ts.map +1 -0
  24. package/dist/database/sqlite-adapter.d.ts +32 -0
  25. package/dist/database/sqlite-adapter.d.ts.map +1 -0
  26. package/dist/database/strategy-decorator.d.ts +8 -0
  27. package/dist/database/strategy-decorator.d.ts.map +1 -0
  28. package/dist/database/types.d.ts +122 -1
  29. package/dist/database/types.d.ts.map +1 -1
  30. package/dist/di/module-registry.d.ts.map +1 -1
  31. package/dist/index.d.ts +3 -3
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +3115 -2586
  34. package/dist/microservice/service-registry/service-registry-module.d.ts +16 -0
  35. package/dist/microservice/service-registry/service-registry-module.d.ts.map +1 -1
  36. package/dist/router/index.d.ts +1 -0
  37. package/dist/router/index.d.ts.map +1 -1
  38. package/dist/router/registry.d.ts +1 -1
  39. package/dist/router/registry.d.ts.map +1 -1
  40. package/dist/router/route.d.ts +2 -1
  41. package/dist/router/route.d.ts.map +1 -1
  42. package/dist/router/router.d.ts +1 -1
  43. package/dist/router/router.d.ts.map +1 -1
  44. package/dist/router/timeout-decorator.d.ts +6 -0
  45. package/dist/router/timeout-decorator.d.ts.map +1 -0
  46. package/docs/database.md +48 -15
  47. package/docs/idle-timeout.md +42 -0
  48. package/docs/lifecycle.md +6 -0
  49. package/docs/microservice-nacos.md +1 -0
  50. package/docs/microservice-service-registry.md +7 -0
  51. package/docs/zh/database.md +48 -15
  52. package/docs/zh/idle-timeout.md +41 -0
  53. package/docs/zh/lifecycle.md +5 -0
  54. package/docs/zh/microservice-nacos.md +1 -0
  55. package/docs/zh/microservice-service-registry.md +6 -0
  56. package/package.json +1 -1
  57. package/src/controller/controller.ts +11 -1
  58. package/src/core/application.ts +60 -1
  59. package/src/core/server.ts +10 -0
  60. package/src/database/database-context.ts +43 -0
  61. package/src/database/database-extension.ts +12 -45
  62. package/src/database/database-module.ts +254 -11
  63. package/src/database/db-proxy.ts +75 -0
  64. package/src/database/index.ts +29 -0
  65. package/src/database/orm/transaction-interceptor.ts +12 -149
  66. package/src/database/orm/transaction-manager.ts +143 -210
  67. package/src/database/service.ts +28 -2
  68. package/src/database/sql-manager.ts +62 -0
  69. package/src/database/sqlite-adapter.ts +121 -0
  70. package/src/database/strategy-decorator.ts +42 -0
  71. package/src/database/types.ts +133 -1
  72. package/src/di/module-registry.ts +20 -4
  73. package/src/index.ts +27 -1
  74. package/src/microservice/service-registry/service-registry-module.ts +25 -1
  75. package/src/router/index.ts +1 -0
  76. package/src/router/registry.ts +10 -1
  77. package/src/router/route.ts +31 -3
  78. package/src/router/router.ts +10 -1
  79. package/src/router/timeout-decorator.ts +35 -0
  80. package/tests/core/application.test.ts +10 -0
  81. package/tests/database/database-module.test.ts +91 -430
  82. package/tests/database/db-proxy.test.ts +93 -0
  83. package/tests/database/sql-manager.test.ts +43 -0
  84. package/tests/database/sqlite-adapter.test.ts +45 -0
  85. package/tests/database/strategy-decorator.test.ts +29 -0
  86. package/tests/database/transaction.test.ts +84 -222
  87. package/tests/di/lifecycle.test.ts +37 -0
  88. package/tests/microservice/service-registry.test.ts +15 -0
  89. package/tests/router/timeout-decorator.test.ts +48 -0
package/README.md CHANGED
@@ -42,6 +42,8 @@
42
42
  and `ResponseBuilder` helpers.
43
43
  - 🧩 **Dependency injection container** with `@Injectable`, `@Inject`, module
44
44
  metadata, lifecycle management and cached dependency plans.
45
+ - 🗄️ **Database v2** with `db` proxy, route-level pool/session strategy,
46
+ multi-tenant manager and unified transactions.
45
47
  - 🧵 **Middleware pipeline** with global/class/method scopes plus built-ins
46
48
  (logging, error, CORS, upload, static, ...).
47
49
  - ✅ **Input validation** via decorators and `ValidationError` integration.
@@ -420,11 +422,13 @@ Examples are organized by difficulty and feature category:
420
422
  - `full-app.ts` - Validation, uploads, static files, WebSocket
421
423
  - `lifecycle-app.ts` - Lifecycle hooks (OnModuleInit, OnModuleDestroy, etc.)
422
424
  - `async-config-app.ts` - Async module config with `forRootAsync()`
425
+ - `idle-timeout-app.ts` - Global and route-level idleTimeout
423
426
 
424
427
  - **[Official Modules](./examples/02-official-modules/)** - Ready-to-use modules
425
428
  - `auth-app.ts` - JWT + OAuth2 authentication (with Web UI)
426
429
  - `session-app.ts` - Session management
427
430
  - `database-app.ts` - Database connection and queries
431
+ - `nacos-auto-register-app.ts` - Nacos autoRegister switch example
428
432
  - `orm-app.ts` - Entity + Repository pattern
429
433
  - `cache-app.ts` - Caching with decorators
430
434
  - `queue-app.ts` - Task queues and Cron jobs
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAShD;;GAEG;AACH,eAAO,MAAM,uBAAuB,eAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAW,IACzB,QAAQ,WAAW,CAAC,OAAO,CAAC,UAI9C;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;IACxE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8C;IAEnF,OAAO;IAIP;;OAEG;WACW,WAAW,IAAI,kBAAkB;IAO/C;;;OAGG;IACI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAgKnF;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,YAAY;IA+BpB;;;OAGG;IACI,YAAY,IAAI,SAAS;IAIhC;;;OAGG;IACI,iBAAiB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;IAIlD;;;OAGG;IACI,wBAAwB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;IAIzD;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAUhD;;GAEG;AACH,eAAO,MAAM,uBAAuB,eAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAW,IACzB,QAAQ,WAAW,CAAC,OAAO,CAAC,UAI9C;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;IACxE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8C;IAEnF,OAAO;IAIP;;OAEG;WACW,WAAW,IAAI,kBAAkB;IAO/C;;;OAGG;IACI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAyKnF;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,YAAY;IA+BpB;;;OAGG;IACI,YAAY,IAAI,SAAS;IAIhC;;;OAGG;IACI,iBAAiB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;IAIlD;;;OAGG;IACI,wBAAwB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;IAIzD;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB"}
@@ -1,7 +1,7 @@
1
1
  import { BunServer } from './server';
2
2
  import type { Middleware } from '../middleware';
3
3
  import type { ApplicationExtension } from '../extensions/types';
4
- import type { ModuleClass } from '../di/module';
4
+ import { type ModuleClass } from '../di/module';
5
5
  import type { Constructor } from './types';
6
6
  /**
7
7
  * 应用配置选项
@@ -32,6 +32,11 @@ export interface ApplicationOptions {
32
32
  * @default false
33
33
  */
34
34
  reusePort?: boolean;
35
+ /**
36
+ * 连接空闲超时时间(毫秒)
37
+ * 框架内部会自动转换为 Bun.serve 的秒单位
38
+ */
39
+ idleTimeout?: number;
35
40
  }
36
41
  /**
37
42
  * 应用主类
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AAMzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAU3C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,uBAAuB,CAAkB;gBAE9B,OAAO,GAAE,kBAAuB;IAsBnD;;;OAGG;IACI,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAIxC;;OAEG;IACU,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDpE;;OAEG;YACW,oBAAoB;IAqBlC;;;OAGG;YACW,sBAAsB;IAyBpC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC;;;;;OAKG;IACU,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9D;;OAEG;YACW,eAAe;IAkB7B;;;;OAIG;YACW,aAAa;IAyC3B;;;OAGG;IACI,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAKtE;;;OAGG;IACI,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAqBrD;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IAc1C;;;OAGG;IACI,wBAAwB,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAIzE;;;OAGG;IACI,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAK/D;;;OAGG;IACI,SAAS,IAAI,SAAS,GAAG,SAAS;IAIzC;;;OAGG;YACW,gBAAgB;IAsB9B;;;OAGG;YACW,kBAAkB;IAwBhC;;;OAGG;IACI,YAAY;IAInB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAS7B"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AAMzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAW3C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,uBAAuB,CAAkB;gBAE9B,OAAO,GAAE,kBAAuB;IA6BnD;;;OAGG;IACI,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAIxC;;OAEG;IACU,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDpE;;OAEG;YACW,oBAAoB;IAqBlC;;;OAGG;YACW,sBAAsB;IAyBpC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC;;;;;OAKG;IACU,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9D;;OAEG;YACW,eAAe;IAkB7B;;;;OAIG;YACW,aAAa;IAyC3B;;;OAGG;IACI,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAKtE;;;OAGG;IACI,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAqBrD;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IAc1C;;;OAGG;IACI,wBAAwB,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAIzE;;;OAGG;IACI,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAK/D;;;OAGG;IACI,SAAS,IAAI,SAAS,GAAG,SAAS;IAIzC;;;OAGG;YACW,gBAAgB;IA0C9B;;;OAGG;YACW,kBAAkB;IAgDhC;;;OAGG;IACI,YAAY;IAInB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAS7B"}
@@ -34,6 +34,11 @@ export interface ServerOptions {
34
34
  * @default false
35
35
  */
36
36
  reusePort?: boolean;
37
+ /**
38
+ * 连接空闲超时时间(毫秒)
39
+ * 框架内部会转换为 Bun.serve 所需的秒
40
+ */
41
+ idleTimeout?: number;
37
42
  }
38
43
  /**
39
44
  * 服务器封装类
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE1D;;OAEG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAE7C;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAa;gBAElB,OAAO,EAAE,aAAa;IAIzC;;OAEG;IACI,KAAK,IAAI,IAAI;IAkHpB;;OAEG;IACI,IAAI,IAAI,IAAI;IAWnB;;;;;OAKG;IACU,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C9D;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;OAEG;IACI,mBAAmB,IAAI,OAAO;IAIrC;;;OAGG;IACI,SAAS,IAAI,MAAM,CAAC,uBAAuB,CAAC,GAAG,SAAS;IAI/D;;;OAGG;IACI,SAAS,IAAI,OAAO;IAI3B;;;OAGG;IACI,OAAO,IAAI,MAAM;IAOxB;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;CAGzC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE1D;;OAEG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAE7C;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAa;gBAElB,OAAO,EAAE,aAAa;IAIzC;;OAEG;IACI,KAAK,IAAI,IAAI;IAsHpB;;OAEG;IACI,IAAI,IAAI,IAAI;IAWnB;;;;;OAKG;IACU,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C9D;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;OAEG;IACI,mBAAmB,IAAI,OAAO;IAIrC;;;OAGG;IACI,SAAS,IAAI,MAAM,CAAC,uBAAuB,CAAC,GAAG,SAAS;IAI/D;;;OAGG;IACI,SAAS,IAAI,OAAO;IAI3B;;;OAGG;IACI,OAAO,IAAI,MAAM;IAOxB;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;CAGzC"}
@@ -0,0 +1,25 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import type { TransactionStatus } from './orm/transaction-types';
3
+ import type { SqliteAdapter } from './sqlite-adapter';
4
+ export type SqlTemplateCall = (strings: TemplateStringsArray, ...values: unknown[]) => Promise<unknown>;
5
+ export interface ReservedSqlSession extends SqlTemplateCall {
6
+ begin<T>(fn: () => Promise<T>): Promise<T>;
7
+ release(): Promise<void> | void;
8
+ }
9
+ export interface TransactionState {
10
+ id: string;
11
+ status: TransactionStatus;
12
+ level: number;
13
+ savepoints: string[];
14
+ }
15
+ export interface DatabaseSession {
16
+ reserved?: ReservedSqlSession;
17
+ sqlite?: SqliteAdapter;
18
+ tenantId: string;
19
+ transaction?: TransactionState;
20
+ lazyReserve?: () => Promise<ReservedSqlSession>;
21
+ }
22
+ export declare const databaseSessionStore: AsyncLocalStorage<DatabaseSession>;
23
+ export declare function getCurrentSession(): DatabaseSession | undefined;
24
+ export declare function runWithSession<T>(session: DatabaseSession, fn: () => Promise<T>): Promise<T>;
25
+ //# sourceMappingURL=database-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-context.d.ts","sourceRoot":"","sources":["../../src/database/database-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,CAC5B,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,OAAO,EAAE,KACjB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjD;AAED,eAAO,MAAM,oBAAoB,oCAA2C,CAAC;AAE7E,wBAAgB,iBAAiB,IAAI,eAAe,GAAG,SAAS,CAE/D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAC9B,OAAO,EAAE,eAAe,EACxB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ"}
@@ -1,20 +1,19 @@
1
1
  import type { Container } from '../di/container';
2
2
  import type { ApplicationExtension } from '../extensions/types';
3
+ import type { BunSQLManager } from './sql-manager';
4
+ import type { SqliteManager } from './sqlite-adapter';
3
5
  /**
4
6
  * 数据库扩展
5
- * 在应用启动时自动初始化数据库连接
7
+ * 注册事务拦截器,并在应用关闭时释放数据库资源
6
8
  */
7
9
  export declare class DatabaseExtension implements ApplicationExtension {
10
+ private readonly sqlManager?;
11
+ private readonly sqliteManager?;
12
+ constructor(sqlManager?: BunSQLManager | undefined, sqliteManager?: SqliteManager | undefined);
8
13
  register(container: Container): void;
9
14
  /**
10
- * 初始化数据库连接
11
- * 应该在应用启动时调用
15
+ * 关闭数据库资源
12
16
  */
13
- initialize(container: Container): Promise<void>;
14
- /**
15
- * 关闭数据库连接
16
- * 应该在应用停止时调用
17
- */
18
- close(container: Container): Promise<void>;
17
+ close(_container: Container): Promise<void>;
19
18
  }
20
19
  //# sourceMappingURL=database-extension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database-extension.d.ts","sourceRoot":"","sources":["../../src/database/database-extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAWhE;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,oBAAoB;IACrD,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAoB3C;;;OAGG;IACU,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5D;;;OAGG;IACU,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBxD"}
1
+ {"version":3,"file":"database-extension.d.ts","sourceRoot":"","sources":["../../src/database/database-extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAQhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,oBAAoB;IAE1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBADd,UAAU,CAAC,EAAE,aAAa,YAAA,EAC1B,aAAa,CAAC,EAAE,aAAa,YAAA;IAGzC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAoB3C;;OAEG;IACU,KAAK,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzD"}
@@ -1,8 +1,14 @@
1
1
  import { type AsyncModuleOptions } from '../di/async-module';
2
2
  import { DatabaseHealthIndicator } from './health-indicator';
3
3
  import { DatabaseService } from './service';
4
- import { type DatabaseModuleOptions } from './types';
4
+ import { type BunSQLConfig, type DatabaseModuleOptions, type SqliteV2Config } from './types';
5
5
  export declare class DatabaseModule {
6
+ private static isBunSqlType;
7
+ static normalizeConfig(options: DatabaseModuleOptions): Array<{
8
+ tenantId: string;
9
+ config: BunSQLConfig | SqliteV2Config;
10
+ }>;
11
+ private static createDatabaseMiddleware;
6
12
  /**
7
13
  * 创建数据库模块
8
14
  * @param options - 模块配置
@@ -1 +1 @@
1
- {"version":3,"file":"database-module.d.ts","sourceRoot":"","sources":["../../src/database/database-module.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,SAAS,CAAC;AAIjB,qBAGa,cAAc;IACzB;;;OAGG;WACW,OAAO,CACnB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,cAAc;IA6ExB;;;;OAIG;WACW,YAAY,CACxB,YAAY,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,GACtD,OAAO,cAAc;IAYxB;;;;;OAKG;WACW,qBAAqB,CACjC,eAAe,EAAE,eAAe,GAC/B,uBAAuB;CAG3B"}
1
+ {"version":3,"file":"database-module.d.ts","sourceRoot":"","sources":["../../src/database/database-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAKrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AASjB,qBAGa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,YAAY;WAMb,eAAe,CAC3B,OAAO,EAAE,qBAAqB,GAC7B,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAAA;KAAE,CAAC;IA0FrE,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAyEvC;;;OAGG;WACW,OAAO,CACnB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,cAAc;IA+IxB;;;;OAIG;WACW,YAAY,CACxB,YAAY,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,GACtD,OAAO,cAAc;IAYxB;;;;;OAKG;WACW,qBAAqB,CACjC,eAAe,EAAE,eAAe,GAC/B,uBAAuB;CAG3B"}
@@ -0,0 +1,12 @@
1
+ import type { BunSQLManager } from './sql-manager';
2
+ import type { TransactionManager } from './orm/transaction-manager';
3
+ type DbResult = Promise<unknown>;
4
+ export interface DbProxy {
5
+ (strings: TemplateStringsArray, ...values: unknown[]): DbResult;
6
+ transaction<T>(fn: () => Promise<T>): Promise<T>;
7
+ tenant(tenantId: string): DbProxy;
8
+ }
9
+ export declare function initDbProxy(sqlManager: BunSQLManager, txManager: TransactionManager): void;
10
+ export declare const db: DbProxy;
11
+ export {};
12
+ //# sourceMappingURL=db-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-proxy.d.ts","sourceRoot":"","sources":["../../src/database/db-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEjC,MAAM,WAAW,OAAO;IACtB,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAChE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAKD,wBAAgB,WAAW,CACzB,UAAU,EAAE,aAAa,EACzB,SAAS,EAAE,kBAAkB,GAC5B,IAAI,CAGN;AAoDD,eAAO,MAAM,EAAE,EAAE,OAAoB,CAAC"}
@@ -4,6 +4,11 @@ export { DatabaseConnectionManager } from './connection-manager';
4
4
  export { ConnectionPool } from './connection-pool';
5
5
  export { DatabaseHealthIndicator } from './health-indicator';
6
6
  export { DatabaseExtension } from './database-extension';
7
- export { DATABASE_OPTIONS_TOKEN, DATABASE_SERVICE_TOKEN, type ConnectionInfo, type ConnectionPoolOptions, type DatabaseConfig, type DatabaseModuleOptions, type DatabaseType, type MysqlConfig, type PostgresConfig, type SqliteConfig, } from './types';
7
+ export { BunSQLManager } from './sql-manager';
8
+ export { SqliteAdapter, SqliteManager, Semaphore } from './sqlite-adapter';
9
+ export { db, initDbProxy, type DbProxy, } from './db-proxy';
10
+ export { DbStrategy, Session as DbSession, DB_STRATEGY_KEY, getDbStrategy, type DbStrategyType, } from './strategy-decorator';
11
+ export { databaseSessionStore, getCurrentSession, runWithSession, type DatabaseSession, type TransactionState, type ReservedSqlSession, } from './database-context';
12
+ export { BUN_SQL_MANAGER_TOKEN, DB_TOKEN, DATABASE_OPTIONS_TOKEN, DATABASE_SERVICE_TOKEN, SQLITE_MANAGER_TOKEN, type BunSQLConfig, type BunSQLPoolOptions, type ConnectionInfo, type ConnectionPoolOptions, type DatabaseConfig, type DatabaseModuleOptions, type DatabaseType, type MysqlConfig, type PostgresConfig, type SqliteV2Config, type SqliteConfig, type TenantConfig, } from './types';
8
13
  export { Entity, Column, PrimaryKey, Repository, BaseRepository, DrizzleBaseRepository, OrmService, ORM_SERVICE_TOKEN, getEntityMetadata, getColumnMetadata, getRepositoryMetadata, type OrmModuleOptions, type BaseRepository as BaseRepositoryInterface, type EntityMetadata, type ColumnMetadata, Transactional, TransactionManager, TransactionInterceptor, Propagation, IsolationLevel, TransactionStatus, TRANSACTION_SERVICE_TOKEN, getTransactionMetadata, type TransactionOptions, type TransactionContext, } from './orm';
9
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,IAAI,uBAAuB,EAC9C,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EACL,EAAE,EACF,WAAW,EACX,KAAK,OAAO,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,EACV,OAAO,IAAI,SAAS,EACpB,eAAe,EACf,aAAa,EACb,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,QAAQ,EACR,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,IAAI,uBAAuB,EAC9C,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,OAAO,CAAC"}
@@ -17,21 +17,5 @@ export declare class TransactionInterceptor implements Interceptor {
17
17
  * @deprecated 使用拦截器机制,此方法保留用于向后兼容
18
18
  */
19
19
  static executeWithTransaction<T>(target: unknown, propertyKey: string | symbol, originalMethod: (...args: unknown[]) => T | Promise<T>, args: unknown[], container: Container): Promise<T>;
20
- /**
21
- * 在新事务中执行方法
22
- */
23
- private static executeInNewTransaction;
24
- /**
25
- * 在现有事务中执行方法
26
- */
27
- private static executeInExistingTransaction;
28
- /**
29
- * 在嵌套事务中执行方法
30
- */
31
- private static executeInNestedTransaction;
32
- /**
33
- * 判断是否应该回滚
34
- */
35
- private static shouldRollback;
36
20
  }
37
21
  //# sourceMappingURL=transaction-interceptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-interceptor.d.ts","sourceRoot":"","sources":["../../../src/database/orm/transaction-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,WAAW;IACxD;;;OAGG;IACU,OAAO,CAAC,CAAC,EACpB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;IA8Gb;;;OAGG;WACiB,sBAAsB,CAAC,CAAC,EAC1C,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,CAAC,CAAC;IAKb;;OAEG;mBACkB,uBAAuB;IA8B5C;;OAEG;mBACkB,4BAA4B;IAWjD;;OAEG;mBACkB,0BAA0B;IA2B/C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAgC9B"}
1
+ {"version":3,"file":"transaction-interceptor.d.ts","sourceRoot":"","sources":["../../../src/database/orm/transaction-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,WAAW;IACxD;;;OAGG;IACU,OAAO,CAAC,CAAC,EACpB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;IAqFb;;;OAGG;WACiB,sBAAsB,CAAC,CAAC,EAC1C,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,CAAC,CAAC;CAKd"}
@@ -1,77 +1,26 @@
1
- import type { DatabaseService } from '../service';
1
+ import type { BunSQLManager } from '../sql-manager';
2
2
  import { type TransactionOptions, type TransactionContext } from './transaction-types';
3
3
  /**
4
4
  * 事务管理器
5
5
  * 管理数据库事务的生命周期
6
6
  */
7
7
  export declare class TransactionManager {
8
- private readonly databaseService;
9
- private readonly transactions;
10
- private readonly connectionTransactions;
11
- constructor(databaseService: DatabaseService);
8
+ private readonly sqlManager;
9
+ constructor(sqlManager: BunSQLManager);
12
10
  /**
13
- * 开始事务
11
+ * 在当前 session 中执行事务
14
12
  */
15
- beginTransaction(options?: TransactionOptions): Promise<TransactionContext>;
13
+ runInTransaction<T>(fn: () => Promise<T>, options?: TransactionOptions): Promise<T>;
16
14
  /**
17
- * 提交事务
18
- */
19
- commitTransaction(transactionId: string): Promise<void>;
20
- /**
21
- * 回滚事务
22
- */
23
- rollbackTransaction(transactionId: string): Promise<void>;
24
- /**
25
- * 创建保存点(用于嵌套事务)
26
- */
27
- createSavepoint(transactionId: string): Promise<string>;
28
- /**
29
- * 回滚到保存点
30
- */
31
- rollbackToSavepoint(transactionId: string, savepointName: string): Promise<void>;
32
- /**
33
- * 获取当前事务上下文
15
+ * REQUIRES_NEW:使用独立连接开启新事务
34
16
  */
17
+ runInNewTransaction<T>(fn: () => Promise<T>, options?: TransactionOptions): Promise<T>;
18
+ runInNestedTransaction<T>(fn: () => Promise<T>, options?: TransactionOptions): Promise<T>;
35
19
  getCurrentTransaction(): TransactionContext | null;
36
- /**
37
- * 检查是否有活动事务
38
- */
39
20
  hasActiveTransaction(): boolean;
40
- /**
41
- * 生成事务 ID
42
- */
21
+ runInSqliteTransaction<T>(fn: () => Promise<T>): Promise<T>;
43
22
  private generateTransactionId;
44
- /**
45
- * 查找连接对应的事务 ID
46
- */
47
- private findConnectionByTransactionId;
48
- /**
49
- * 清理事务
50
- */
51
- private cleanupTransaction;
52
- /**
53
- * 执行 BEGIN 语句
54
- */
55
- private executeBegin;
56
- /**
57
- * 执行 COMMIT 语句
58
- */
59
- private executeCommit;
60
- /**
61
- * 执行 ROLLBACK 语句
62
- */
63
- private executeRollback;
64
- /**
65
- * 执行 SAVEPOINT 语句
66
- */
67
- private executeSavepoint;
68
- /**
69
- * 执行 ROLLBACK TO SAVEPOINT 语句
70
- */
71
- private executeRollbackToSavepoint;
72
- /**
73
- * 获取隔离级别的 SQL
74
- */
75
23
  private getIsolationLevelSQL;
24
+ private shouldRollback;
76
25
  }
77
26
  //# sourceMappingURL=transaction-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../../src/database/orm/transaction-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,qBACa,kBAAkB;IAM3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IALlC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA8B;gBAIlD,eAAe,EAAE,eAAe;IAGnD;;OAEG;IACU,gBAAgB,CAC3B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,kBAAkB,CAAC;IAqB9B;;OAEG;IACU,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBpE;;OAEG;IACU,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBtE;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBpE;;OAEG;IACU,mBAAmB,CAC9B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAmBhB;;OAEG;IACI,qBAAqB,IAAI,kBAAkB,GAAG,IAAI;IAWzD;;OAEG;IACI,oBAAoB,IAAI,OAAO;IAItC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IASrC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;YACW,YAAY;IAoB1B;;OAEG;YACW,aAAa;IAI3B;;OAEG;YACW,eAAe;IAI7B;;OAEG;YACW,gBAAgB;IAI9B;;OAEG;YACW,0BAA0B;IAOxC;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAkB7B"}
1
+ {"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../../src/database/orm/transaction-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,qBACa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,aAAa;IAG5C;;OAEG;IACU,gBAAgB,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAqDb;;OAEG;IACU,mBAAmB,CAAC,CAAC,EAChC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAgBA,sBAAsB,CAAC,CAAC,EACnC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IA4BN,qBAAqB,IAAI,kBAAkB,GAAG,IAAI;IAclD,oBAAoB,IAAI,OAAO;IAKzB,sBAAsB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAoBxE,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,cAAc;CAqBvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/database/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBACa,eAAe;IAC1B,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,OAAO,CAAwB;gBAEpB,OAAO,EAAE,qBAAqB;IAQjD;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACI,YAAY;;;;;;IAInB;;OAEG;IACI,aAAa,IAAI,OAAO;IAI/B;;OAEG;IACH,IAAW,MAAM,IAAI,qBAAqB,CAEzC;IAED;;OAEG;IACI,eAAe,IAAI,cAAc,CAAC,MAAM,CAAC;IAIhD;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ5C;;OAEG;IACI,iBAAiB,IAAI,cAAc;IAI1C;;;OAGG;IACI,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAgB9E;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;OAGG;YACW,WAAW;IA+CzB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAiB7B"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/database/service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBACa,eAAe;IAC1B,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,OAAO,CAAwB;gBAEpB,OAAO,EAAE,qBAAqB;IA2BjD;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACI,YAAY;;;;;;IAInB;;OAEG;IACI,aAAa,IAAI,OAAO;IAI/B;;OAEG;IACH,IAAW,MAAM,IAAI,qBAAqB,CAEzC;IAED;;OAEG;IACI,eAAe,IAAI,cAAc,CAAC,MAAM,CAAC;IAIhD;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ5C;;OAEG;IACI,iBAAiB,IAAI,cAAc;IAI1C;;;OAGG;IACI,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAsB9E;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;OAGG;YACW,WAAW;IA+CzB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAiB7B"}
@@ -0,0 +1,14 @@
1
+ import { SQL } from 'bun';
2
+ import type { BunSQLConfig } from './types';
3
+ export declare class BunSQLManager {
4
+ private readonly instances;
5
+ private defaultTenantId;
6
+ getOrCreate(tenantId: string, config: BunSQLConfig): SQL;
7
+ hasTenant(tenantId: string): boolean;
8
+ get(tenantId: string): SQL | undefined;
9
+ setDefaultTenant(tenantId: string): void;
10
+ getDefault(): SQL;
11
+ destroy(tenantId: string, timeout?: number): Promise<void>;
12
+ destroyAll(timeout?: number): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=sql-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-manager.d.ts","sourceRoot":"","sources":["../../src/database/sql-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,eAAe,CAAa;IAE7B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,GAAG;IAiBxD,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAItC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC,UAAU,IAAI,GAAG;IAUX,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD,UAAU,CAAC,OAAO,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAIrD"}
@@ -0,0 +1,32 @@
1
+ import { type SQLQueryBindings } from 'bun:sqlite';
2
+ import type { SqliteV2Config } from './types';
3
+ export interface DisposableLock {
4
+ [Symbol.dispose](): void;
5
+ }
6
+ export declare class Semaphore {
7
+ private readonly max;
8
+ private active;
9
+ private readonly queue;
10
+ constructor(max: number);
11
+ acquire(): Promise<DisposableLock>;
12
+ private createDisposable;
13
+ }
14
+ export declare class SqliteAdapter {
15
+ private readonly db;
16
+ readonly semaphore: Semaphore;
17
+ constructor(config: SqliteV2Config);
18
+ query<T = unknown>(sql: string, params?: SQLQueryBindings[]): T[];
19
+ execute(sql: string, params?: SQLQueryBindings[]): Promise<void>;
20
+ close(): void;
21
+ }
22
+ export declare class SqliteManager {
23
+ private readonly instances;
24
+ private defaultTenantId;
25
+ getOrCreate(tenantId: string, config: SqliteV2Config): SqliteAdapter;
26
+ setDefaultTenant(tenantId: string): void;
27
+ getDefault(): SqliteAdapter;
28
+ getAdapter(tenantId: string): SqliteAdapter;
29
+ destroy(tenantId: string): void;
30
+ destroyAll(): void;
31
+ }
32
+ //# sourceMappingURL=sqlite-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/database/sqlite-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED,qBAAa,SAAS;IAID,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHvC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;gBAEX,GAAG,EAAE,MAAM;IAElC,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;IAW/C,OAAO,CAAC,gBAAgB;CAczB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,SAAgB,SAAS,EAAE,SAAS,CAAC;gBAElB,MAAM,EAAE,cAAc;IAQlC,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,gBAAgB,EAAO,GAAG,CAAC,EAAE;IAK/D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,gBAAgB,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1E,KAAK,IAAI,IAAI;CAGrB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,eAAe,CAAa;IAE7B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,aAAa;IAUpE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC,UAAU,IAAI,aAAa;IAU3B,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa;IAQ3C,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS/B,UAAU,IAAI,IAAI;CAM1B"}
@@ -0,0 +1,8 @@
1
+ import 'reflect-metadata';
2
+ import type { Constructor } from '@/core/types';
3
+ export declare const DB_STRATEGY_KEY: unique symbol;
4
+ export type DbStrategyType = 'pool' | 'session';
5
+ export declare function DbStrategy(strategy: DbStrategyType): MethodDecorator & ClassDecorator;
6
+ export declare function Session(): MethodDecorator & ClassDecorator;
7
+ export declare function getDbStrategy(controllerClass: Constructor<unknown>, methodName: string): DbStrategyType | undefined;
8
+ //# sourceMappingURL=strategy-decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-decorator.d.ts","sourceRoot":"","sources":["../../src/database/strategy-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,eAAO,MAAM,eAAe,eAAiD,CAAC;AAE9E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhD,wBAAgB,UAAU,CACxB,QAAQ,EAAE,cAAc,GACvB,eAAe,GAAG,cAAc,CAQlC;AAED,wBAAgB,OAAO,IAAI,eAAe,GAAG,cAAc,CAE1D;AAED,wBAAgB,aAAa,CAC3B,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EACrC,UAAU,EAAE,MAAM,GACjB,cAAc,GAAG,SAAS,CAa5B"}
@@ -79,6 +79,55 @@ export type DatabaseConfig = {
79
79
  type: 'mysql';
80
80
  config: MysqlConfig;
81
81
  };
82
+ /**
83
+ * Bun.SQL 连接池配置
84
+ */
85
+ export interface BunSQLPoolOptions {
86
+ /**
87
+ * 最大物理连接数
88
+ * @default 10
89
+ */
90
+ max?: number;
91
+ /**
92
+ * 空闲连接超时(秒)
93
+ * @default 30
94
+ */
95
+ idleTimeout?: number;
96
+ /**
97
+ * 连接最大生存时间(秒)
98
+ * @default 0
99
+ */
100
+ maxLifetime?: number;
101
+ /**
102
+ * 获取连接超时(毫秒)
103
+ * @default 30000
104
+ */
105
+ connectionTimeout?: number;
106
+ }
107
+ /**
108
+ * Bun.SQL 配置(Postgres/MySQL)
109
+ */
110
+ export interface BunSQLConfig {
111
+ type: 'postgres' | 'mysql';
112
+ url: string;
113
+ pool?: BunSQLPoolOptions;
114
+ }
115
+ /**
116
+ * SQLite V2 配置
117
+ */
118
+ export interface SqliteV2Config {
119
+ type: 'sqlite';
120
+ database: string;
121
+ wal?: boolean;
122
+ maxWriteConcurrency?: number;
123
+ }
124
+ /**
125
+ * 多租户配置
126
+ */
127
+ export interface TenantConfig {
128
+ id: string;
129
+ config: BunSQLConfig | SqliteV2Config;
130
+ }
82
131
  /**
83
132
  * 连接池配置
84
133
  */
@@ -108,12 +157,56 @@ export interface ConnectionPoolOptions {
108
157
  * DatabaseModule 配置选项
109
158
  */
110
159
  export interface DatabaseModuleOptions {
160
+ /**
161
+ * 全局默认连接策略
162
+ * - pool: 每次查询走共享池(默认)
163
+ * - session: 首次查询惰性 reserve,整个请求复用同一连接
164
+ * @default "pool"
165
+ */
166
+ defaultStrategy?: 'pool' | 'session';
167
+ /**
168
+ * 多租户配置
169
+ */
170
+ tenants?: TenantConfig[];
171
+ /**
172
+ * 默认租户 ID
173
+ * @default "default"
174
+ */
175
+ defaultTenant?: string;
176
+ /**
177
+ * 单租户:数据库类型(V2)
178
+ */
179
+ type?: DatabaseType;
180
+ /**
181
+ * 单租户:Postgres/MySQL URL(V2)
182
+ */
183
+ url?: string;
184
+ /**
185
+ * 单租户:SQLite 文件路径(V2)
186
+ */
187
+ databasePath?: string;
188
+ /**
189
+ * 单租户:SQLite WAL 模式
190
+ * @default true
191
+ */
192
+ wal?: boolean;
193
+ /**
194
+ * 单租户:SQLite 最大写并发
195
+ * @default 1
196
+ */
197
+ maxWriteConcurrency?: number;
198
+ /**
199
+ * Bun.SQL 连接池参数(V2)
200
+ */
201
+ bunSqlPool?: BunSQLPoolOptions;
111
202
  /**
112
203
  * 数据库配置
204
+ * @deprecated 使用 V2 字段(type/url/databasePath)或 tenants
113
205
  */
114
- database: DatabaseConfig;
206
+ database?: DatabaseConfig;
115
207
  /**
116
208
  * 连接池配置
209
+ * @deprecated 旧连接池配置,仅用于兼容旧 DatabaseService
117
210
  */
118
211
  pool?: ConnectionPoolOptions;
119
212
  /**
@@ -135,6 +228,22 @@ export interface DatabaseModuleOptions {
135
228
  */
136
229
  drizzle?: unknown;
137
230
  };
231
+ /**
232
+ * @deprecated 旧字段兼容(用于构造 URL)
233
+ */
234
+ host?: string;
235
+ /**
236
+ * @deprecated 旧字段兼容(用于构造 URL)
237
+ */
238
+ port?: number;
239
+ /**
240
+ * @deprecated 旧字段兼容(用于构造 URL)
241
+ */
242
+ username?: string;
243
+ /**
244
+ * @deprecated 旧字段兼容(用于构造 URL)
245
+ */
246
+ password?: string;
138
247
  }
139
248
  /**
140
249
  * 数据库连接状态
@@ -165,4 +274,16 @@ export declare const DATABASE_SERVICE_TOKEN: unique symbol;
165
274
  * DatabaseModule Options Token
166
275
  */
167
276
  export declare const DATABASE_OPTIONS_TOKEN: unique symbol;
277
+ /**
278
+ * BunSQLManager Token
279
+ */
280
+ export declare const BUN_SQL_MANAGER_TOKEN: unique symbol;
281
+ /**
282
+ * SQLite manager Token
283
+ */
284
+ export declare const SQLITE_MANAGER_TOKEN: unique symbol;
285
+ /**
286
+ * db proxy Token
287
+ */
288
+ export declare const DB_TOKEN: unique symbol;
168
289
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/database/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,GAAG,CAAC,EAAE;QACJ;;;WAGG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;WAEG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,OAAO,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,MAAM,EAAE,gBAAgB,CAAC;IACzB;;OAEG;IACH,IAAI,EAAE,YAAY,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,eAAgD,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,sBAAsB,eAAgD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/database/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/di/module-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAA2C,MAAM,UAAU,CAAC;AAGxG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQhD,UAAU,SAAS;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC/C,SAAS,EAAE,SAAS,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,aAAa,CAAC,CAAY;IAClC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;WAE1C,WAAW,IAAI,cAAc;IAOpC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,GAAG,SAAS;IAOzE,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS;IAIpE;;OAEG;IACI,sBAAsB,IAAI,SAAS,EAAE;IAQrC,KAAK,IAAI,IAAI;IAOpB;;OAEG;IACI,gBAAgB,IAAI,WAAW,EAAE;IAIxC,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,oBAAoB;IAkC5B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACI,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,oBAAoB,EAAE;IAQ5E;;OAEG;IACI,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,EAAE;IAQnE;;OAEG;IACI,2BAA2B,IAAI,OAAO,EAAE;IAuB/C;;OAEG;IACU,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjD;;OAEG;IACU,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhD;;OAEG;IACU,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpD;;OAEG;IACU,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,OAAO,CAAC,cAAc;CAgBvB"}
1
+ {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/di/module-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAA2C,MAAM,UAAU,CAAC;AAGxG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQhD,UAAU,SAAS;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC/C,SAAS,EAAE,SAAS,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,aAAa,CAAC,CAAY;IAClC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;WAE1C,WAAW,IAAI,cAAc;IAOpC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,GAAG,SAAS;IAOzE,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS;IAIpE;;OAEG;IACI,sBAAsB,IAAI,SAAS,EAAE;IAQrC,KAAK,IAAI,IAAI;IAOpB;;OAEG;IACI,gBAAgB,IAAI,WAAW,EAAE;IAIxC,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,oBAAoB;IAkC5B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACI,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,oBAAoB,EAAE;IAQ5E;;OAEG;IACI,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,EAAE;IAQnE;;OAEG;IACI,2BAA2B,IAAI,OAAO,EAAE;IAuC/C;;OAEG;IACU,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjD;;OAEG;IACU,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhD;;OAEG;IACU,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpD;;OAEG;IACU,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,OAAO,CAAC,cAAc;CAgBvB"}