@flusys/nestjs-event-manager 7.0.2 → 8.0.0-beta.1

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 (103) hide show
  1. package/adapters/event-manager.adapter.d.ts +2 -2
  2. package/adapters/index.d.ts +1 -1
  3. package/config/index.d.ts +3 -3
  4. package/controllers/event.controller.d.ts +3 -3
  5. package/controllers/index.d.ts +1 -1
  6. package/docs/event-manager-swagger.config.d.ts +2 -2
  7. package/docs/index.d.ts +1 -1
  8. package/dtos/calendar-query.dto.d.ts +1 -1
  9. package/dtos/event.dto.d.ts +1 -1
  10. package/dtos/index.d.ts +3 -3
  11. package/entities/event-with-company.entity.d.ts +1 -1
  12. package/entities/index.d.ts +8 -8
  13. package/fesm/477.js +1798 -0
  14. package/fesm/833.js +840 -0
  15. package/fesm/adapters/index.js +884 -1
  16. package/fesm/config/index.js +87 -3
  17. package/fesm/controllers/index.js +365 -1
  18. package/fesm/docs/index.js +155 -2
  19. package/fesm/dtos/index.js +720 -3
  20. package/fesm/entities/index.js +350 -11
  21. package/fesm/index.js +121 -9
  22. package/fesm/interfaces/index.js +16 -2
  23. package/fesm/modules/index.js +13 -1
  24. package/fesm/runtime.js +85 -0
  25. package/fesm/services/index.js +272 -4
  26. package/index.d.ts +9 -9
  27. package/interfaces/event-manager-module.interface.d.ts +3 -3
  28. package/interfaces/event.interface.d.ts +1 -1
  29. package/interfaces/index.d.ts +2 -2
  30. package/modules/event-manager.module.d.ts +2 -2
  31. package/modules/index.d.ts +1 -1
  32. package/package.json +29 -39
  33. package/services/event-manager-config.service.d.ts +3 -3
  34. package/services/event-manager-datasource.provider.d.ts +3 -3
  35. package/services/event-manager-helper.service.d.ts +3 -3
  36. package/services/event.service.d.ts +7 -7
  37. package/services/index.d.ts +4 -4
  38. package/cjs/adapters/event-manager.adapter.js +0 -65
  39. package/cjs/adapters/event-manager.adapter.spec.js +0 -104
  40. package/cjs/adapters/index.js +0 -18
  41. package/cjs/config/event-actions.js +0 -31
  42. package/cjs/config/event-manager.constants.js +0 -13
  43. package/cjs/config/index.js +0 -20
  44. package/cjs/config/message-keys.js +0 -27
  45. package/cjs/controllers/event.controller.js +0 -190
  46. package/cjs/controllers/event.controller.spec.js +0 -156
  47. package/cjs/controllers/index.js +0 -18
  48. package/cjs/docs/event-manager-swagger.config.js +0 -125
  49. package/cjs/docs/event-manager-swagger.config.spec.js +0 -65
  50. package/cjs/docs/index.js +0 -21
  51. package/cjs/dtos/calendar-query.dto.js +0 -212
  52. package/cjs/dtos/event-participant.dto.js +0 -181
  53. package/cjs/dtos/event.dto.js +0 -343
  54. package/cjs/dtos/index.js +0 -20
  55. package/cjs/entities/event-participant.entity.js +0 -89
  56. package/cjs/entities/event-with-company.entity.js +0 -56
  57. package/cjs/entities/event.entity.js +0 -156
  58. package/cjs/entities/index.js +0 -55
  59. package/cjs/entities/index.spec.js +0 -18
  60. package/cjs/index.js +0 -27
  61. package/cjs/interfaces/event-manager-module.interface.js +0 -4
  62. package/cjs/interfaces/event.interface.js +0 -4
  63. package/cjs/interfaces/index.js +0 -19
  64. package/cjs/modules/event-manager.module.js +0 -132
  65. package/cjs/modules/event-manager.module.spec.js +0 -146
  66. package/cjs/modules/index.js +0 -18
  67. package/cjs/services/event-manager-config.service.js +0 -76
  68. package/cjs/services/event-manager-config.service.spec.js +0 -111
  69. package/cjs/services/event-manager-datasource.provider.js +0 -84
  70. package/cjs/services/event-manager-datasource.provider.spec.js +0 -198
  71. package/cjs/services/event-manager-helper.service.js +0 -235
  72. package/cjs/services/event-manager-helper.service.spec.js +0 -327
  73. package/cjs/services/event.service.js +0 -481
  74. package/cjs/services/event.service.spec.js +0 -929
  75. package/cjs/services/index.js +0 -21
  76. package/fesm/adapters/event-manager.adapter.js +0 -55
  77. package/fesm/adapters/event-manager.adapter.spec.js +0 -100
  78. package/fesm/config/event-actions.js +0 -10
  79. package/fesm/config/event-manager.constants.js +0 -3
  80. package/fesm/config/message-keys.js +0 -9
  81. package/fesm/controllers/event.controller.js +0 -180
  82. package/fesm/controllers/event.controller.spec.js +0 -152
  83. package/fesm/docs/event-manager-swagger.config.js +0 -118
  84. package/fesm/docs/event-manager-swagger.config.spec.js +0 -61
  85. package/fesm/dtos/calendar-query.dto.js +0 -194
  86. package/fesm/dtos/event-participant.dto.js +0 -157
  87. package/fesm/dtos/event.dto.js +0 -322
  88. package/fesm/entities/event-participant.entity.js +0 -79
  89. package/fesm/entities/event-with-company.entity.js +0 -46
  90. package/fesm/entities/event.entity.js +0 -146
  91. package/fesm/entities/index.spec.js +0 -14
  92. package/fesm/interfaces/event-manager-module.interface.js +0 -3
  93. package/fesm/interfaces/event.interface.js +0 -1
  94. package/fesm/modules/event-manager.module.js +0 -122
  95. package/fesm/modules/event-manager.module.spec.js +0 -142
  96. package/fesm/services/event-manager-config.service.js +0 -66
  97. package/fesm/services/event-manager-config.service.spec.js +0 -107
  98. package/fesm/services/event-manager-datasource.provider.js +0 -74
  99. package/fesm/services/event-manager-datasource.provider.spec.js +0 -194
  100. package/fesm/services/event-manager-helper.service.js +0 -225
  101. package/fesm/services/event-manager-helper.service.spec.js +0 -323
  102. package/fesm/services/event.service.js +0 -471
  103. package/fesm/services/event.service.spec.js +0 -925
@@ -1,122 +0,0 @@
1
- function _ts_decorate(decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- }
7
- import { CacheModule, UtilsModule, createModuleEventsProvider } from '@flusys/nestjs-shared/modules';
8
- import { EVENT_MANAGER_ADAPTER } from '@flusys/nestjs-shared/interfaces';
9
- import { Module } from '@nestjs/common';
10
- import { EVENT_MANAGER_MODULE_OPTIONS } from '../config/event-manager.constants';
11
- import { EventController } from '../controllers';
12
- import { EventManagerAdapter } from '../adapters';
13
- import { EventManagerConfigService, EventManagerDataSourceProvider, EventManagerHelperService, EventService } from '../services';
14
- const CONTROLLERS = [
15
- EventController
16
- ];
17
- const EXPORTED_SERVICES = [
18
- EventManagerConfigService,
19
- EventManagerDataSourceProvider,
20
- EventManagerHelperService,
21
- EventService
22
- ];
23
- const ADAPTER_PROVIDER = {
24
- provide: EVENT_MANAGER_ADAPTER,
25
- useClass: EventManagerAdapter
26
- };
27
- export class EventManagerModule {
28
- static forRoot(options) {
29
- return {
30
- module: EventManagerModule,
31
- global: options.global ?? false,
32
- imports: [
33
- CacheModule,
34
- UtilsModule
35
- ],
36
- controllers: options.includeController !== false ? CONTROLLERS : [],
37
- providers: [
38
- ...this.buildProviders(options),
39
- EventManagerAdapter,
40
- ADAPTER_PROVIDER
41
- ],
42
- exports: [
43
- ...EXPORTED_SERVICES,
44
- EVENT_MANAGER_ADAPTER
45
- ]
46
- };
47
- }
48
- static forRootAsync(options) {
49
- return {
50
- module: EventManagerModule,
51
- global: options.global ?? false,
52
- imports: [
53
- ...options.imports || [],
54
- CacheModule,
55
- UtilsModule
56
- ],
57
- controllers: options.includeController !== false ? CONTROLLERS : [],
58
- providers: [
59
- ...this.createAsyncProviders(options),
60
- ...this.buildProviders(),
61
- EventManagerAdapter,
62
- ADAPTER_PROVIDER
63
- ],
64
- exports: [
65
- ...EXPORTED_SERVICES,
66
- EVENT_MANAGER_ADAPTER
67
- ]
68
- };
69
- }
70
- // Private Helpers
71
- static buildProviders(options) {
72
- const providers = [
73
- ...EXPORTED_SERVICES
74
- ];
75
- if (options) {
76
- providers.unshift({
77
- provide: EVENT_MANAGER_MODULE_OPTIONS,
78
- useValue: options
79
- });
80
- }
81
- providers.push(createModuleEventsProvider('event-manager', EVENT_MANAGER_MODULE_OPTIONS));
82
- return providers;
83
- }
84
- static createAsyncProviders(options) {
85
- if (options.useFactory) {
86
- return [
87
- {
88
- provide: EVENT_MANAGER_MODULE_OPTIONS,
89
- useFactory: async (...args)=>({
90
- ...options,
91
- config: await options.useFactory(...args)
92
- }),
93
- inject: options.inject || []
94
- }
95
- ];
96
- }
97
- const factoryClass = options.useClass || options.useExisting;
98
- if (!factoryClass) return [];
99
- const providers = [
100
- {
101
- provide: EVENT_MANAGER_MODULE_OPTIONS,
102
- useFactory: async (factory)=>({
103
- ...options,
104
- config: await factory.createEventManagerOptions()
105
- }),
106
- inject: [
107
- factoryClass
108
- ]
109
- }
110
- ];
111
- if (options.useClass) {
112
- providers.push({
113
- provide: options.useClass,
114
- useClass: options.useClass
115
- });
116
- }
117
- return providers;
118
- }
119
- }
120
- EventManagerModule = _ts_decorate([
121
- Module({})
122
- ], EventManagerModule);
@@ -1,142 +0,0 @@
1
- function _define_property(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
- import { EVENT_MANAGER_ADAPTER } from '@flusys/nestjs-shared/interfaces';
15
- import { EventManagerModule } from './event-manager.module';
16
- import { EVENT_MANAGER_MODULE_OPTIONS } from '../config/event-manager.constants';
17
- import { EventController } from '../controllers';
18
- import { EventManagerAdapter } from '../adapters';
19
- function providerTokens(providers) {
20
- return providers.map((p)=>typeof p === 'function' ? p : p.provide);
21
- }
22
- describe('EventManagerModule', ()=>{
23
- describe('forRoot', ()=>{
24
- it('should default to a non-global module with the event controller registered', ()=>{
25
- const dynamicModule = EventManagerModule.forRoot({});
26
- expect(dynamicModule.module).toBe(EventManagerModule);
27
- expect(dynamicModule.global).toBe(false);
28
- expect(dynamicModule.controllers).toEqual([
29
- EventController
30
- ]);
31
- });
32
- it('should respect global: true', ()=>{
33
- expect(EventManagerModule.forRoot({
34
- global: true
35
- }).global).toBe(true);
36
- });
37
- it('should register no controllers when includeController is false', ()=>{
38
- expect(EventManagerModule.forRoot({
39
- includeController: false
40
- }).controllers).toEqual([]);
41
- });
42
- it('should register the EVENT_MANAGER_ADAPTER provider backed by EventManagerAdapter', ()=>{
43
- const dynamicModule = EventManagerModule.forRoot({});
44
- const adapterProvider = dynamicModule.providers.find((p)=>p.provide === EVENT_MANAGER_ADAPTER);
45
- expect(adapterProvider.useClass).toBe(EventManagerAdapter);
46
- });
47
- it('should export EVENT_MANAGER_ADAPTER alongside the base services', ()=>{
48
- expect(EventManagerModule.forRoot({}).exports).toContain(EVENT_MANAGER_ADAPTER);
49
- });
50
- it('should register an EVENT_MANAGER_MODULE_OPTIONS provider carrying the given options', ()=>{
51
- const options = {
52
- bootstrapAppConfig: {
53
- enableCompanyFeature: true
54
- }
55
- };
56
- const dynamicModule = EventManagerModule.forRoot(options);
57
- const provider = dynamicModule.providers.find((p)=>p.provide === EVENT_MANAGER_MODULE_OPTIONS);
58
- expect(provider.useValue).toBe(options);
59
- });
60
- });
61
- describe('forRootAsync', ()=>{
62
- it('should forward external imports alongside CacheModule/UtilsModule', ()=>{
63
- let FakeImportedModule = class FakeImportedModule {
64
- };
65
- const dynamicModule = EventManagerModule.forRootAsync({
66
- imports: [
67
- FakeImportedModule
68
- ]
69
- });
70
- expect(dynamicModule.imports).toEqual(expect.arrayContaining([
71
- FakeImportedModule
72
- ]));
73
- });
74
- it('should still wire the adapter provider when using async registration', ()=>{
75
- const dynamicModule = EventManagerModule.forRootAsync({
76
- useFactory: jest.fn()
77
- });
78
- const adapterProvider = dynamicModule.providers.find((p)=>p.provide === EVENT_MANAGER_ADAPTER);
79
- expect(adapterProvider.useClass).toBe(EventManagerAdapter);
80
- });
81
- it('useFactory: builds an EVENT_MANAGER_MODULE_OPTIONS provider merging resolved config', async ()=>{
82
- const useFactory = jest.fn().mockResolvedValue({
83
- foo: 'bar'
84
- });
85
- const dynamicModule = EventManagerModule.forRootAsync({
86
- useFactory,
87
- inject: [
88
- 'SOME_TOKEN'
89
- ]
90
- });
91
- const provider = dynamicModule.providers.find((p)=>p.provide === EVENT_MANAGER_MODULE_OPTIONS);
92
- expect(provider.inject).toEqual([
93
- 'SOME_TOKEN'
94
- ]);
95
- const resolved = await provider.useFactory('injected');
96
- expect(useFactory).toHaveBeenCalledWith('injected');
97
- expect(resolved.config).toEqual({
98
- foo: 'bar'
99
- });
100
- });
101
- it('useClass: registers both the class provider and an options provider calling createEventManagerOptions()', async ()=>{
102
- let MyOptionsFactory = class MyOptionsFactory {
103
- constructor(){
104
- _define_property(this, "createEventManagerOptions", jest.fn().mockResolvedValue({
105
- foo: 'from-class'
106
- }));
107
- }
108
- };
109
- const dynamicModule = EventManagerModule.forRootAsync({
110
- useClass: MyOptionsFactory
111
- });
112
- const classProvider = dynamicModule.providers.find((p)=>p.provide === MyOptionsFactory);
113
- expect(classProvider.useClass).toBe(MyOptionsFactory);
114
- const optionsProvider = dynamicModule.providers.find((p)=>p.provide === EVENT_MANAGER_MODULE_OPTIONS);
115
- const instance = new MyOptionsFactory();
116
- const resolved = await optionsProvider.useFactory(instance);
117
- expect(instance.createEventManagerOptions).toHaveBeenCalled();
118
- expect(resolved.config).toEqual({
119
- foo: 'from-class'
120
- });
121
- });
122
- it('useExisting: registers a single options provider without a duplicate class registration', ()=>{
123
- let MyOptionsFactory = class MyOptionsFactory {
124
- constructor(){
125
- _define_property(this, "createEventManagerOptions", jest.fn());
126
- }
127
- };
128
- const dynamicModule = EventManagerModule.forRootAsync({
129
- useExisting: MyOptionsFactory
130
- });
131
- expect(dynamicModule.providers.filter((p)=>p.provide === MyOptionsFactory)).toHaveLength(0);
132
- const optionsProvider = dynamicModule.providers.find((p)=>p.provide === EVENT_MANAGER_MODULE_OPTIONS);
133
- expect(optionsProvider.inject).toEqual([
134
- MyOptionsFactory
135
- ]);
136
- });
137
- it('should register no EVENT_MANAGER_MODULE_OPTIONS provider when neither useFactory, useClass, nor useExisting is given', ()=>{
138
- const dynamicModule = EventManagerModule.forRootAsync({});
139
- expect(providerTokens(dynamicModule.providers)).not.toContain(EVENT_MANAGER_MODULE_OPTIONS);
140
- });
141
- });
142
- });
@@ -1,66 +0,0 @@
1
- function _define_property(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
- function _ts_decorate(decorators, target, key, desc) {
15
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
- return c > 3 && r && Object.defineProperty(target, key, r), r;
19
- }
20
- function _ts_metadata(k, v) {
21
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
22
- }
23
- function _ts_param(paramIndex, decorator) {
24
- return function(target, key) {
25
- decorator(target, key, paramIndex);
26
- };
27
- }
28
- import { Inject, Injectable } from '@nestjs/common';
29
- import { EventManagerModuleOptions } from '../interfaces';
30
- import { EVENT_MANAGER_MODULE_OPTIONS } from '../config/event-manager.constants';
31
- const DEFAULT_COLOR = '#3B82F6';
32
- const DEFAULT_MAX_RECURRENCE_OCCURRENCES = 365;
33
- export class EventManagerConfigService {
34
- // IModuleConfigService Implementation
35
- isCompanyFeatureEnabled() {
36
- return this.options.bootstrapAppConfig?.enableCompanyFeature ?? false;
37
- }
38
- getDatabaseMode() {
39
- return this.options.bootstrapAppConfig?.databaseMode ?? 'single';
40
- }
41
- isMultiTenant() {
42
- return this.getDatabaseMode() === 'multi-tenant';
43
- }
44
- // Config Getters
45
- getDefaultColor() {
46
- return this.options.config?.defaultColor ?? DEFAULT_COLOR;
47
- }
48
- getMaxRecurrenceOccurrences() {
49
- return this.options.config?.maxRecurrenceOccurrences ?? DEFAULT_MAX_RECURRENCE_OCCURRENCES;
50
- }
51
- getOptions() {
52
- return this.options;
53
- }
54
- constructor(options){
55
- _define_property(this, "options", void 0);
56
- this.options = options;
57
- }
58
- }
59
- EventManagerConfigService = _ts_decorate([
60
- Injectable(),
61
- _ts_param(0, Inject(EVENT_MANAGER_MODULE_OPTIONS)),
62
- _ts_metadata("design:type", Function),
63
- _ts_metadata("design:paramtypes", [
64
- typeof EventManagerModuleOptions === "undefined" ? Object : EventManagerModuleOptions
65
- ])
66
- ], EventManagerConfigService);
@@ -1,107 +0,0 @@
1
- import { EventManagerConfigService } from './event-manager-config.service';
2
- function buildOptions(overrides = {}) {
3
- return {
4
- bootstrapAppConfig: undefined,
5
- config: undefined,
6
- ...overrides
7
- };
8
- }
9
- describe('EventManagerConfigService', ()=>{
10
- describe('isCompanyFeatureEnabled', ()=>{
11
- it('returns true when bootstrap config enables the company feature', ()=>{
12
- const service = new EventManagerConfigService(buildOptions({
13
- bootstrapAppConfig: {
14
- enableCompanyFeature: true
15
- }
16
- }));
17
- expect(service.isCompanyFeatureEnabled()).toBe(true);
18
- });
19
- it('returns false when bootstrap config disables the company feature', ()=>{
20
- const service = new EventManagerConfigService(buildOptions({
21
- bootstrapAppConfig: {
22
- enableCompanyFeature: false
23
- }
24
- }));
25
- expect(service.isCompanyFeatureEnabled()).toBe(false);
26
- });
27
- it('defaults to false when bootstrapAppConfig is missing', ()=>{
28
- const service = new EventManagerConfigService(buildOptions());
29
- expect(service.isCompanyFeatureEnabled()).toBe(false);
30
- });
31
- });
32
- describe('getDatabaseMode', ()=>{
33
- it('returns the configured database mode', ()=>{
34
- const service = new EventManagerConfigService(buildOptions({
35
- bootstrapAppConfig: {
36
- databaseMode: 'multi-tenant'
37
- }
38
- }));
39
- expect(service.getDatabaseMode()).toBe('multi-tenant');
40
- });
41
- it('defaults to "single" when not configured', ()=>{
42
- const service = new EventManagerConfigService(buildOptions());
43
- expect(service.getDatabaseMode()).toBe('single');
44
- });
45
- });
46
- describe('isMultiTenant', ()=>{
47
- it('returns true when database mode is multi-tenant', ()=>{
48
- const service = new EventManagerConfigService(buildOptions({
49
- bootstrapAppConfig: {
50
- databaseMode: 'multi-tenant'
51
- }
52
- }));
53
- expect(service.isMultiTenant()).toBe(true);
54
- });
55
- it('returns false when database mode is single', ()=>{
56
- const service = new EventManagerConfigService(buildOptions({
57
- bootstrapAppConfig: {
58
- databaseMode: 'single'
59
- }
60
- }));
61
- expect(service.isMultiTenant()).toBe(false);
62
- });
63
- it('returns false when database mode is not configured', ()=>{
64
- const service = new EventManagerConfigService(buildOptions());
65
- expect(service.isMultiTenant()).toBe(false);
66
- });
67
- });
68
- describe('getDefaultColor', ()=>{
69
- it('returns the configured default color', ()=>{
70
- const service = new EventManagerConfigService(buildOptions({
71
- config: {
72
- defaultColor: '#FF0000'
73
- }
74
- }));
75
- expect(service.getDefaultColor()).toBe('#FF0000');
76
- });
77
- it('falls back to the built-in default color', ()=>{
78
- const service = new EventManagerConfigService(buildOptions());
79
- expect(service.getDefaultColor()).toBe('#3B82F6');
80
- });
81
- });
82
- describe('getMaxRecurrenceOccurrences', ()=>{
83
- it('returns the configured max occurrences', ()=>{
84
- const service = new EventManagerConfigService(buildOptions({
85
- config: {
86
- maxRecurrenceOccurrences: 50
87
- }
88
- }));
89
- expect(service.getMaxRecurrenceOccurrences()).toBe(50);
90
- });
91
- it('falls back to the built-in default of 365', ()=>{
92
- const service = new EventManagerConfigService(buildOptions());
93
- expect(service.getMaxRecurrenceOccurrences()).toBe(365);
94
- });
95
- });
96
- describe('getOptions', ()=>{
97
- it('returns the raw options object as-is', ()=>{
98
- const options = buildOptions({
99
- config: {
100
- defaultColor: '#ABCDEF'
101
- }
102
- });
103
- const service = new EventManagerConfigService(options);
104
- expect(service.getOptions()).toBe(options);
105
- });
106
- });
107
- });
@@ -1,74 +0,0 @@
1
- function _define_property(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
- function _ts_decorate(decorators, target, key, desc) {
15
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
- return c > 3 && r && Object.defineProperty(target, key, r), r;
19
- }
20
- function _ts_metadata(k, v) {
21
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
22
- }
23
- function _ts_param(paramIndex, decorator) {
24
- return function(target, key) {
25
- decorator(target, key, paramIndex);
26
- };
27
- }
28
- import { MultiTenantDataSourceService } from '@flusys/nestjs-shared/modules';
29
- import { Inject, Injectable, Optional, Scope } from '@nestjs/common';
30
- import { REQUEST } from '@nestjs/core';
31
- import { Request } from 'express';
32
- import { getEventManagerEntitiesByConfig } from '../entities';
33
- import { EventManagerConfigService } from './event-manager-config.service';
34
- export class EventManagerDataSourceProvider extends MultiTenantDataSourceService {
35
- static buildParentOptions(options) {
36
- return {
37
- bootstrapAppConfig: options.bootstrapAppConfig,
38
- defaultDatabaseConfig: options.config?.defaultDatabaseConfig,
39
- tenantDefaultDatabaseConfig: options.config?.tenantDefaultDatabaseConfig,
40
- tenants: options.config?.tenants
41
- };
42
- }
43
- getEnableCompanyFeatureForTenant(tenant) {
44
- return tenant?.enableCompanyFeature ?? this.configService.isCompanyFeatureEnabled();
45
- }
46
- async createDataSourceFromConfig(config) {
47
- const currentTenant = this.getCurrentTenant();
48
- const enableCompanyFeature = this.getEnableCompanyFeatureForTenant(currentTenant ?? undefined);
49
- const entities = getEventManagerEntitiesByConfig(enableCompanyFeature);
50
- return super.createDataSourceFromConfig(config, entities);
51
- }
52
- constructor(configService, request){
53
- super(EventManagerDataSourceProvider.buildParentOptions(configService.getOptions()), request), _define_property(this, "configService", void 0), this.configService = configService;
54
- }
55
- }
56
- _define_property(EventManagerDataSourceProvider, "tenantConnections", new Map());
57
- _define_property(EventManagerDataSourceProvider, "singleDataSource", null);
58
- _define_property(EventManagerDataSourceProvider, "tenantsRegistry", new Map());
59
- _define_property(EventManagerDataSourceProvider, "initialized", false);
60
- _define_property(EventManagerDataSourceProvider, "connectionLocks", new Map());
61
- _define_property(EventManagerDataSourceProvider, "singleConnectionLock", null);
62
- EventManagerDataSourceProvider = _ts_decorate([
63
- Injectable({
64
- scope: Scope.REQUEST
65
- }),
66
- _ts_param(0, Inject(EventManagerConfigService)),
67
- _ts_param(1, Optional()),
68
- _ts_param(1, Inject(REQUEST)),
69
- _ts_metadata("design:type", Function),
70
- _ts_metadata("design:paramtypes", [
71
- typeof EventManagerConfigService === "undefined" ? Object : EventManagerConfigService,
72
- typeof Request === "undefined" ? Object : Request
73
- ])
74
- ], EventManagerDataSourceProvider);