@solidstarters/solid-core 1.2.110 → 1.2.112

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 (208) hide show
  1. package/dist/controllers/model-metadata.controller.d.ts +1 -1
  2. package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
  3. package/dist/controllers/model-metadata.controller.js +1 -1
  4. package/dist/controllers/model-metadata.controller.js.map +1 -1
  5. package/dist/controllers/queues-test.controller.d.ts +5 -3
  6. package/dist/controllers/queues-test.controller.d.ts.map +1 -1
  7. package/dist/controllers/queues-test.controller.js +20 -8
  8. package/dist/controllers/queues-test.controller.js.map +1 -1
  9. package/dist/entities/field-metadata.entity.js +1 -1
  10. package/dist/entities/mq-message.entity.d.ts +1 -0
  11. package/dist/entities/mq-message.entity.d.ts.map +1 -1
  12. package/dist/entities/mq-message.entity.js +5 -1
  13. package/dist/entities/mq-message.entity.js.map +1 -1
  14. package/dist/helpers/module-metadata-helper.service.d.ts +1 -0
  15. package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
  16. package/dist/helpers/module-metadata-helper.service.js +9 -4
  17. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  18. package/dist/index.d.ts +3 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +3 -3
  21. package/dist/index.js.map +1 -1
  22. package/dist/interfaces.d.ts +2 -1
  23. package/dist/interfaces.d.ts.map +1 -1
  24. package/dist/interfaces.js +1 -0
  25. package/dist/interfaces.js.map +1 -1
  26. package/dist/jobs/api-email-publisher.service.d.ts +1 -1
  27. package/dist/jobs/api-email-publisher.service.d.ts.map +1 -1
  28. package/dist/jobs/api-email-publisher.service.js +1 -1
  29. package/dist/jobs/api-email-publisher.service.js.map +1 -1
  30. package/dist/jobs/api-email-subscriber.service.d.ts +1 -1
  31. package/dist/jobs/api-email-subscriber.service.d.ts.map +1 -1
  32. package/dist/jobs/api-email-subscriber.service.js +1 -1
  33. package/dist/jobs/api-email-subscriber.service.js.map +1 -1
  34. package/dist/jobs/database/generate-code-publisher.service.d.ts +11 -0
  35. package/dist/jobs/database/generate-code-publisher.service.d.ts.map +1 -0
  36. package/dist/jobs/database/generate-code-publisher.service.js +39 -0
  37. package/dist/jobs/database/generate-code-publisher.service.js.map +1 -0
  38. package/dist/jobs/database/generate-code-queue-options.d.ts +8 -0
  39. package/dist/jobs/database/generate-code-queue-options.d.ts.map +1 -0
  40. package/dist/jobs/database/generate-code-queue-options.js +10 -0
  41. package/dist/jobs/database/generate-code-queue-options.js.map +1 -0
  42. package/dist/jobs/database/generate-code-subscriber.service.d.ts +16 -0
  43. package/dist/jobs/database/generate-code-subscriber.service.d.ts.map +1 -0
  44. package/dist/jobs/database/generate-code-subscriber.service.js +67 -0
  45. package/dist/jobs/database/generate-code-subscriber.service.js.map +1 -0
  46. package/dist/jobs/database/queue-test-db-publisher.service.d.ts +11 -0
  47. package/dist/jobs/database/queue-test-db-publisher.service.d.ts.map +1 -0
  48. package/dist/jobs/database/queue-test-db-publisher.service.js +39 -0
  49. package/dist/jobs/database/queue-test-db-publisher.service.js.map +1 -0
  50. package/dist/jobs/database/queue-test-db-subscriber.service.d.ts +14 -0
  51. package/dist/jobs/database/queue-test-db-subscriber.service.d.ts.map +1 -0
  52. package/dist/jobs/database/queue-test-db-subscriber.service.js +50 -0
  53. package/dist/jobs/database/queue-test-db-subscriber.service.js.map +1 -0
  54. package/dist/jobs/database/test-queue-db-options.d.ts +8 -0
  55. package/dist/jobs/database/test-queue-db-options.d.ts.map +1 -0
  56. package/dist/jobs/database/test-queue-db-options.js +10 -0
  57. package/dist/jobs/database/test-queue-db-options.js.map +1 -0
  58. package/dist/jobs/email-publisher.service.d.ts +1 -1
  59. package/dist/jobs/email-publisher.service.d.ts.map +1 -1
  60. package/dist/jobs/email-publisher.service.js +1 -1
  61. package/dist/jobs/email-publisher.service.js.map +1 -1
  62. package/dist/jobs/email-subscriber.service.d.ts +1 -1
  63. package/dist/jobs/email-subscriber.service.d.ts.map +1 -1
  64. package/dist/jobs/email-subscriber.service.js +1 -1
  65. package/dist/jobs/email-subscriber.service.js.map +1 -1
  66. package/dist/jobs/otp-publisher.service.d.ts +1 -1
  67. package/dist/jobs/otp-publisher.service.d.ts.map +1 -1
  68. package/dist/jobs/otp-publisher.service.js +1 -1
  69. package/dist/jobs/otp-publisher.service.js.map +1 -1
  70. package/dist/jobs/otp-subscriber.service.d.ts +1 -1
  71. package/dist/jobs/otp-subscriber.service.d.ts.map +1 -1
  72. package/dist/jobs/otp-subscriber.service.js +1 -1
  73. package/dist/jobs/otp-subscriber.service.js.map +1 -1
  74. package/dist/jobs/queue-test-publisher.service.d.ts +1 -1
  75. package/dist/jobs/queue-test-publisher.service.d.ts.map +1 -1
  76. package/dist/jobs/queue-test-publisher.service.js +3 -3
  77. package/dist/jobs/queue-test-publisher.service.js.map +1 -1
  78. package/dist/jobs/queue-test-subscriber.service.d.ts +2 -2
  79. package/dist/jobs/queue-test-subscriber.service.d.ts.map +1 -1
  80. package/dist/jobs/queue-test-subscriber.service.js +9 -3
  81. package/dist/jobs/queue-test-subscriber.service.js.map +1 -1
  82. package/dist/jobs/sms-publisher.service.d.ts +1 -1
  83. package/dist/jobs/sms-publisher.service.d.ts.map +1 -1
  84. package/dist/jobs/sms-publisher.service.js +1 -1
  85. package/dist/jobs/sms-publisher.service.js.map +1 -1
  86. package/dist/jobs/sms-subscriber.service.d.ts +1 -1
  87. package/dist/jobs/sms-subscriber.service.d.ts.map +1 -1
  88. package/dist/jobs/sms-subscriber.service.js +1 -1
  89. package/dist/jobs/sms-subscriber.service.js.map +1 -1
  90. package/dist/jobs/{test-queue.config.d.ts → test-queue-options.d.ts} +1 -1
  91. package/dist/jobs/test-queue-options.d.ts.map +1 -0
  92. package/dist/jobs/{test-queue.config.js → test-queue-options.js} +1 -1
  93. package/dist/jobs/test-queue-options.js.map +1 -0
  94. package/dist/jobs/whatsapp-publisher.service.d.ts +1 -1
  95. package/dist/jobs/whatsapp-publisher.service.d.ts.map +1 -1
  96. package/dist/jobs/whatsapp-publisher.service.js +1 -1
  97. package/dist/jobs/whatsapp-publisher.service.js.map +1 -1
  98. package/dist/jobs/whatsapp-subscriber.service.d.ts +1 -1
  99. package/dist/jobs/whatsapp-subscriber.service.d.ts.map +1 -1
  100. package/dist/jobs/whatsapp-subscriber.service.js +1 -1
  101. package/dist/jobs/whatsapp-subscriber.service.js.map +1 -1
  102. package/dist/seeders/seed-data/solid-core-metadata.json +342 -282
  103. package/dist/services/field-metadata.service.d.ts.map +1 -1
  104. package/dist/services/field-metadata.service.js +4 -1
  105. package/dist/services/field-metadata.service.js.map +1 -1
  106. package/dist/services/model-metadata.service.d.ts +11 -4
  107. package/dist/services/model-metadata.service.d.ts.map +1 -1
  108. package/dist/services/model-metadata.service.js +141 -6
  109. package/dist/services/model-metadata.service.js.map +1 -1
  110. package/dist/services/mq-message-queue.service.d.ts.map +1 -1
  111. package/dist/services/mq-message-queue.service.js +1 -0
  112. package/dist/services/mq-message-queue.service.js.map +1 -1
  113. package/dist/services/mq-message.service.d.ts +2 -0
  114. package/dist/services/mq-message.service.d.ts.map +1 -1
  115. package/dist/services/mq-message.service.js +29 -2
  116. package/dist/services/mq-message.service.js.map +1 -1
  117. package/dist/services/queues/database-publisher.service.d.ts +16 -0
  118. package/dist/services/queues/database-publisher.service.d.ts.map +1 -0
  119. package/dist/services/queues/database-publisher.service.js +59 -0
  120. package/dist/services/queues/database-publisher.service.js.map +1 -0
  121. package/dist/services/queues/database-subscriber.service.d.ts +21 -0
  122. package/dist/services/queues/database-subscriber.service.d.ts.map +1 -0
  123. package/dist/services/queues/database-subscriber.service.js +128 -0
  124. package/dist/services/queues/database-subscriber.service.js.map +1 -0
  125. package/dist/services/{rabbitmq-publisher.service.d.ts → queues/rabbitmq-publisher.service.d.ts} +6 -4
  126. package/dist/services/queues/rabbitmq-publisher.service.d.ts.map +1 -0
  127. package/dist/services/{rabbitmq-publisher.service.js → queues/rabbitmq-publisher.service.js} +14 -1
  128. package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -0
  129. package/dist/services/{rabbitmq-subscriber.service.d.ts → queues/rabbitmq-subscriber.service.d.ts} +6 -4
  130. package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -0
  131. package/dist/services/{rabbitmq-subscriber.service.js → queues/rabbitmq-subscriber.service.js} +14 -10
  132. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -0
  133. package/dist/services/queues/redis-publisher.service.d.ts +1 -0
  134. package/dist/services/queues/redis-publisher.service.d.ts.map +1 -0
  135. package/dist/services/queues/redis-publisher.service.js +1 -0
  136. package/dist/services/queues/redis-publisher.service.js.map +1 -0
  137. package/dist/services/queues/redis-subscriber.service.d.ts +1 -0
  138. package/dist/services/queues/redis-subscriber.service.d.ts.map +1 -0
  139. package/dist/services/queues/redis-subscriber.service.js +1 -0
  140. package/dist/services/queues/redis-subscriber.service.js.map +1 -0
  141. package/dist/services/sms/Msg91BaseSMSService.d.ts +1 -1
  142. package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
  143. package/dist/solid-core.module.d.ts.map +1 -1
  144. package/dist/solid-core.module.js +10 -2
  145. package/dist/solid-core.module.js.map +1 -1
  146. package/dist/subscribers/field-metadata.subscriber.d.ts +10 -0
  147. package/dist/subscribers/field-metadata.subscriber.d.ts.map +1 -0
  148. package/dist/subscribers/field-metadata.subscriber.js +40 -0
  149. package/dist/subscribers/field-metadata.subscriber.js.map +1 -0
  150. package/dist/subscribers/{model.subscriber.d.ts → model-metadata.subscriber.d.ts} +2 -2
  151. package/dist/subscribers/model-metadata.subscriber.d.ts.map +1 -0
  152. package/dist/subscribers/{model.subscriber.js → model-metadata.subscriber.js} +8 -8
  153. package/dist/subscribers/model-metadata.subscriber.js.map +1 -0
  154. package/dist/tsconfig.tsbuildinfo +1 -1
  155. package/package.json +1 -1
  156. package/src/controllers/model-metadata.controller.ts +1 -2
  157. package/src/controllers/queues-test.controller.ts +15 -6
  158. package/src/entities/field-metadata.entity.ts +1 -1
  159. package/src/entities/mq-message.entity.ts +3 -0
  160. package/src/helpers/module-metadata-helper.service.ts +11 -5
  161. package/src/index.ts +3 -3
  162. package/src/interfaces.ts +1 -0
  163. package/src/jobs/api-email-publisher.service.ts +1 -1
  164. package/src/jobs/api-email-subscriber.service.ts +1 -1
  165. package/src/jobs/database/generate-code-publisher.service.ts +23 -0
  166. package/src/jobs/database/generate-code-queue-options.ts +9 -0
  167. package/src/jobs/database/generate-code-subscriber.service.ts +56 -0
  168. package/src/jobs/database/queue-test-db-publisher.service.ts +24 -0
  169. package/src/jobs/database/queue-test-db-subscriber.service.ts +38 -0
  170. package/src/jobs/database/test-queue-db-options.ts +13 -0
  171. package/src/jobs/email-publisher.service.ts +1 -1
  172. package/src/jobs/email-subscriber.service.ts +1 -1
  173. package/src/jobs/otp-publisher.service.ts +1 -1
  174. package/src/jobs/otp-subscriber.service.ts +1 -1
  175. package/src/jobs/queue-test-publisher.service.ts +2 -2
  176. package/src/jobs/queue-test-subscriber.service.ts +10 -2
  177. package/src/jobs/sms-publisher.service.ts +1 -1
  178. package/src/jobs/sms-subscriber.service.ts +1 -1
  179. package/src/jobs/whatsapp-publisher.service.ts +1 -1
  180. package/src/jobs/whatsapp-subscriber.service.ts +1 -1
  181. package/src/seeders/seed-data/email-templates/forgot-password.handlebars.html +0 -5
  182. package/src/seeders/seed-data/email-templates/on-force-password-change.handlebars.html +0 -8
  183. package/src/seeders/seed-data/email-templates/otp-on-login.handlebars.html +0 -5
  184. package/src/seeders/seed-data/email-templates/otp-on-register.handlebars.html +0 -5
  185. package/src/seeders/seed-data/solid-core-metadata.json +344 -284
  186. package/src/services/field-metadata.service.ts +5 -5
  187. package/src/services/model-metadata.service.ts +256 -13
  188. package/src/services/mq-message-queue.service.ts +2 -1
  189. package/src/services/mq-message.service.ts +47 -8
  190. package/src/services/queues/database-publisher.service.ts +79 -0
  191. package/src/services/queues/database-subscriber.service.ts +173 -0
  192. package/src/services/{rabbitmq-publisher.service.ts → queues/rabbitmq-publisher.service.ts} +24 -8
  193. package/src/services/{rabbitmq-subscriber.service.ts → queues/rabbitmq-subscriber.service.ts} +23 -16
  194. package/src/services/queues/redis-publisher.service.ts +0 -0
  195. package/src/services/queues/redis-subscriber.service.ts +0 -0
  196. package/src/services/sms/Msg91BaseSMSService.ts +1 -1
  197. package/src/solid-core.module.ts +10 -2
  198. package/src/subscribers/field-metadata.subscriber.ts +52 -0
  199. package/src/subscribers/{model.subscriber.ts → model-metadata.subscriber.ts} +2 -2
  200. package/dist/jobs/test-queue.config.d.ts.map +0 -1
  201. package/dist/jobs/test-queue.config.js.map +0 -1
  202. package/dist/services/rabbitmq-publisher.service.d.ts.map +0 -1
  203. package/dist/services/rabbitmq-publisher.service.js.map +0 -1
  204. package/dist/services/rabbitmq-subscriber.service.d.ts.map +0 -1
  205. package/dist/services/rabbitmq-subscriber.service.js.map +0 -1
  206. package/dist/subscribers/model.subscriber.d.ts.map +0 -1
  207. package/dist/subscribers/model.subscriber.js.map +0 -1
  208. /package/src/jobs/{test-queue.config.ts → test-queue-options.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidstarters/solid-core",
3
- "version": "1.2.110",
3
+ "version": "1.2.112",
4
4
  "description": "This module is a NestJS module containing all the required core providers required by a Solid application",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -69,10 +69,9 @@ export class ModelMetadataController {
69
69
  @ApiBearerAuth("jwt")
70
70
  @Post(':id/generate-code')
71
71
  generateCode(@Param('id', ParseIntPipe) id: number) {
72
- return this.modelMetadataService.handleGenerateCode({ modelId: id});
72
+ return this.modelMetadataService.handleGenerateCode({ modelId: id });
73
73
  }
74
74
 
75
-
76
75
  @ApiBearerAuth("jwt")
77
76
  @Put(':id')
78
77
  update(@Param('id') id: number, @Body() updateModelMetaDataDto: UpdateModelMetaDataDto) {
@@ -1,9 +1,10 @@
1
- import { Controller, Get } from '@nestjs/common';
1
+ import { Controller, Get, Param } from '@nestjs/common';
2
2
  import { ApiTags } from '@nestjs/swagger';
3
3
  import { Auth } from 'src/decorators/auth.decorator';
4
4
  import { Public } from 'src/decorators/public.decorator';
5
5
  import { AuthType } from 'src/enums/auth-type.enum';
6
6
  import { TestQueuePublisher } from '../jobs/queue-test-publisher.service';
7
+ import { TestQueueDbPublisher } from 'src/jobs/database/queue-test-db-publisher.service';
7
8
 
8
9
 
9
10
  @Auth(AuthType.None)
@@ -11,11 +12,14 @@ import { TestQueuePublisher } from '../jobs/queue-test-publisher.service';
11
12
  @ApiTags("Queues")
12
13
  export class QueuesTestController {
13
14
 
14
- constructor(private readonly publisher: TestQueuePublisher) { }
15
+ constructor(
16
+ private readonly publisherRmq: TestQueuePublisher,
17
+ private readonly publisherDb: TestQueueDbPublisher
18
+ ) { }
15
19
 
16
20
  @Public()
17
- @Get()
18
- async getHello() {
21
+ @Get(':messageBroker')
22
+ async getHello(@Param('messageBroker') messageBroker: string) {
19
23
  const pubsubMessage = 'A hopping-good time!';
20
24
  const m = {
21
25
  payload: {
@@ -23,10 +27,15 @@ export class QueuesTestController {
23
27
  lastName: 'Patel',
24
28
  age: 40
25
29
  },
26
- parentEntity: 'Address',
30
+ parentEntity: 'feeType',
27
31
  parentEntityId: 23,
28
32
  };
29
- await this.publisher.publish(m);
33
+ if (messageBroker === 'rabbitmq') {
34
+ await this.publisherRmq.publish(m);
35
+ }
36
+ if (messageBroker === 'database') {
37
+ await this.publisherDb.publish(m);
38
+ }
30
39
 
31
40
  return {};
32
41
  }
@@ -105,7 +105,7 @@ export class FieldMetadata extends CommonEntity {
105
105
  // We can store a filter json like this {"fieldName": ${someVarWhichWillComeFromParentModel... or can be hard coded...}}
106
106
  // {"type": "INDUSTRY"} .... Eg. static fixedFilter
107
107
  // {"country_id", "${country}"} ... Eg. dynamic fixedFilter
108
- @Column({ name: 'relation_Field_Fixed_Filter', nullable: true })
108
+ @Column({ name: 'relation_field_fixed_filter', nullable: true })
109
109
  relationFieldFixedFilter: string;
110
110
 
111
111
  @Column({ name: 'selection_dynamic_provider', nullable: true })
@@ -6,6 +6,9 @@ export class MqMessage extends CommonEntity{
6
6
  @Column({ type: "varchar", nullable: true })
7
7
  messageId: string;
8
8
 
9
+ @Column({ type: "varchar", nullable: true })
10
+ messageBroker: string;
11
+
9
12
  @Column({ type: "integer", nullable: true })
10
13
  retryCount: number;
11
14
 
@@ -1,3 +1,4 @@
1
+ import { dasherize } from "@angular-devkit/core/src/utils/strings";
1
2
  import { Injectable, Logger } from "@nestjs/common";
2
3
  import * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await
3
4
  import * as path from 'path'; // To handle file paths
@@ -7,7 +8,7 @@ import { FileService } from "src/services/file.service";
7
8
  @Injectable()
8
9
  export class ModuleMetadataHelperService {
9
10
  private readonly logger = new Logger(ModuleMetadataHelperService.name);
10
- constructor(private readonly fileService: FileService) {}
11
+ constructor(private readonly fileService: FileService) { }
11
12
  // async getModuleMetadataConfig(moduleName: string): Promise<ModuleMetadata> {
12
13
  // const filePath = this.getModuleMetadataFilePath(moduleName);
13
14
  // const metadata = await this.getModuleMetadata(filePath);
@@ -19,16 +20,21 @@ export class ModuleMetadataHelperService {
19
20
  return JSON.parse(fileContent);
20
21
  }
21
22
 
23
+ async getModulePath(moduleName: string): Promise<string> {
24
+ return path.resolve(process.cwd(), 'src', moduleName);
25
+ }
26
+
22
27
  async getModuleMetadataFilePath(moduleName: string): Promise<string> {
23
- const folderPath = path.resolve(process.cwd(), 'module-metadata', moduleName);
24
- const filePath = path.join(folderPath, `${moduleName}-metadata.json`);
28
+ const dashModuleName = dasherize(moduleName);
29
+ const folderPath = path.resolve(process.cwd(), 'module-metadata', dashModuleName);
30
+ const filePath = path.join(folderPath, `${dashModuleName}-metadata.json`);
25
31
  // Check if filePath exists
26
32
  const fileExists = await this.fileService.fileExists(filePath);
27
33
  this.logger.debug(`File exists: ${fileExists} at ${filePath}`);
28
34
  if (!fileExists) {
29
35
  // If the module is solid-core, try the fallback path, in case the current root directory is the solid core project
30
- if (moduleName === SOLID_CORE_MODULE_NAME) {
31
- const fallbackPath = path.resolve(process.cwd(), 'src', 'seeders', 'seed-data', `${moduleName}-metadata.json`);
36
+ if (dashModuleName === SOLID_CORE_MODULE_NAME) {
37
+ const fallbackPath = path.resolve(process.cwd(), 'src', 'seeders', 'seed-data', `${dashModuleName}-metadata.json`);
32
38
  this.logger.debug(`Fallback path: ${fallbackPath}`);
33
39
  return fallbackPath;
34
40
  }
package/src/index.ts CHANGED
@@ -214,8 +214,8 @@ export * from './services/mq-message-queue.service'
214
214
  export * from './services/mq-message.service'
215
215
  export * from './services/pdf.service'
216
216
  export * from './services/permission-metadata.service'
217
- export * from './services/rabbitmq-publisher.service'
218
- export * from './services/rabbitmq-subscriber.service'
217
+ export * from './services/queues/rabbitmq-publisher.service'
218
+ export * from './services/queues/rabbitmq-subscriber.service'
219
219
  export * from './services/refresh-token-ids-storage.service'
220
220
  export * from './services/role-metadata.service'
221
221
  export * from './services/selection-providers/list-of-models-selection-provider.service'
@@ -241,7 +241,7 @@ export * from './repository/field.repository'
241
241
 
242
242
 
243
243
  //softDeleteAwareEventSubscriber.subscriber.ts
244
- export * from './subscribers/model.subscriber'
244
+ export * from './subscribers/model-metadata.subscriber'
245
245
  export * from './subscribers/soft-delete-aware-event.subscriber' //rename
246
246
  export * from './subscribers/view-metadata.subscriber' //rename
247
247
  export * from './subscribers/audit.subscriber'
package/src/interfaces.ts CHANGED
@@ -158,6 +158,7 @@ export interface MailAttachment {
158
158
 
159
159
  export enum BrokerType {
160
160
  RabbitMQ = 'rabbitmq',
161
+ Database = 'database'
161
162
  }
162
163
 
163
164
  export interface QueuesModuleOptions {
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import { RabbitMqPublisher } from 'src/services/rabbitmq-publisher.service';
3
+ import { RabbitMqPublisher } from 'src/services/queues/rabbitmq-publisher.service';
4
4
  import mailQueueOptions from './api-email-queue-options';
5
5
  import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
6
6
  import { MqMessageService } from 'src/services/mq-message.service';
@@ -1,7 +1,7 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
3
  import mailQueueOptions from './api-email-queue-options';
4
- import { RabbitMqSubscriber } from 'src/services/rabbitmq-subscriber.service';
4
+ import { RabbitMqSubscriber } from 'src/services/queues/rabbitmq-subscriber.service';
5
5
  import { QueueMessage } from 'src/interfaces/mq';
6
6
  import { ElasticEmailService } from '../services/mail/ElasticEmailService';
7
7
  import { MqMessageService } from 'src/services/mq-message.service';
@@ -0,0 +1,23 @@
1
+ import { Injectable } from '@nestjs/common';
2
+
3
+ import { MqMessageQueueService } from '../../services/mq-message-queue.service';
4
+ import { MqMessageService } from '../../services/mq-message.service';
5
+ import { CodeGenerationOptions, QueuesModuleOptions } from "../../interfaces";
6
+ import { DatabasePublisher } from 'src/services/queues/database-publisher.service';
7
+ import generateCodeQueueOptions from './generate-code-queue-options';
8
+
9
+ @Injectable()
10
+ export class GenerateCodePublisher extends DatabasePublisher<CodeGenerationOptions> {
11
+ constructor(
12
+ protected readonly mqMessageService: MqMessageService,
13
+ protected readonly mqMessageQueueService: MqMessageQueueService,
14
+ ) {
15
+ super(mqMessageService, mqMessageQueueService);
16
+ }
17
+
18
+ options(): QueuesModuleOptions {
19
+ return {
20
+ ...generateCodeQueueOptions
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,9 @@
1
+ import { BrokerType } from "../../interfaces";
2
+
3
+ const QUEUE_NAME = 'generate_code_queue';
4
+
5
+ export default {
6
+ name: 'generateCodeQueue',
7
+ type: BrokerType.Database,
8
+ queueName: QUEUE_NAME,
9
+ };
@@ -0,0 +1,56 @@
1
+ import { forwardRef, Inject, Injectable, Logger } from '@nestjs/common';
2
+
3
+ import { QueueMessage } from 'src/interfaces/mq';
4
+ import { MqMessageService } from '../../services/mq-message.service';
5
+ import { MqMessageQueueService } from '../../services/mq-message-queue.service';
6
+ import { CodeGenerationOptions, QueuesModuleOptions } from "../../interfaces";
7
+ import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
8
+ import generateCodeQueueOptions from './generate-code-queue-options';
9
+ import { SolidFieldType } from 'src/dtos/create-field-metadata.dto';
10
+ import { ModelMetadataService } from 'src/services/model-metadata.service';
11
+
12
+ @Injectable()
13
+ export class GenerateCodeSubscriber extends DatabaseSubscriber<CodeGenerationOptions> {
14
+ private readonly generateCodeSubscriberLogger = new Logger(GenerateCodeSubscriber.name);
15
+
16
+ constructor(
17
+ readonly mqMessageService: MqMessageService,
18
+ readonly mqMessageQueueService: MqMessageQueueService,
19
+ @Inject(forwardRef(() => ModelMetadataService))
20
+ readonly modelMetadataService: ModelMetadataService,
21
+ ) {
22
+ super(mqMessageService, mqMessageQueueService);
23
+ }
24
+
25
+ options(): QueuesModuleOptions {
26
+ return {
27
+ ...generateCodeQueueOptions
28
+ }
29
+ }
30
+
31
+ async subscribe(message: QueueMessage<CodeGenerationOptions>) {
32
+ this.generateCodeSubscriberLogger.debug(`Received message: ${JSON.stringify(message)}`);
33
+
34
+ const codeGnerationOptions = message.payload;
35
+
36
+ const { model, removeFieldCodeOuput, refreshModelCodeOutput } = await this.modelMetadataService.generateCode(codeGnerationOptions);
37
+
38
+ // Generate the code for models which are linked to fields having an inverse relation
39
+ const coModelSingularNames = model.fields.
40
+ filter(field => field.type === SolidFieldType.relation && field.relationCreateInverse === true)
41
+ .map(field => field.relationCoModelSingularName);
42
+
43
+ for (const singularName of coModelSingularNames) {
44
+ const coModel = await this.modelMetadataService.findOneBySingularName(singularName);
45
+ const inverseOptions: CodeGenerationOptions = {
46
+ modelId: coModel.id,
47
+ dryRun: codeGnerationOptions.dryRun
48
+ };
49
+ await this.modelMetadataService.generateCode(inverseOptions);
50
+ }
51
+
52
+ await this.modelMetadataService.generateVAMConfig(model.id);
53
+
54
+ return `${removeFieldCodeOuput} \n ${refreshModelCodeOutput}`;
55
+ }
56
+ }
@@ -0,0 +1,24 @@
1
+ import { Injectable } from '@nestjs/common';
2
+
3
+ import testQueueConfig from './test-queue-db-options';
4
+ import { MqMessageQueueService } from '../../services/mq-message-queue.service';
5
+ import { MqMessageService } from '../../services/mq-message.service';
6
+ import { QueuesModuleOptions } from "../../interfaces";
7
+ import { DatabasePublisher } from 'src/services/queues/database-publisher.service';
8
+
9
+
10
+ @Injectable()
11
+ export class TestQueueDbPublisher extends DatabasePublisher<any> {
12
+ constructor(
13
+ protected readonly mqMessageService: MqMessageService,
14
+ protected readonly mqMessageQueueService: MqMessageQueueService,
15
+ ) {
16
+ super(mqMessageService, mqMessageQueueService);
17
+ }
18
+
19
+ options(): QueuesModuleOptions {
20
+ return {
21
+ ...testQueueConfig
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,38 @@
1
+ import { Injectable, Logger } from '@nestjs/common';
2
+
3
+ import { QueueMessage } from 'src/interfaces/mq';
4
+ import testQueueConfig from './test-queue-db-options';
5
+ import { MqMessageService } from '../../services/mq-message.service';
6
+ import { MqMessageQueueService } from '../../services/mq-message-queue.service';
7
+ import { QueuesModuleOptions } from "../../interfaces";
8
+ import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
9
+
10
+ @Injectable()
11
+ export class TestQueueDbSubscriber extends DatabaseSubscriber<any> {
12
+ private readonly testQueueLogger = new Logger(TestQueueDbSubscriber.name);
13
+ constructor(
14
+ readonly mqMessageService: MqMessageService,
15
+ readonly mqMessageQueueService: MqMessageQueueService,
16
+ ) {
17
+ super(mqMessageService, mqMessageQueueService);
18
+ }
19
+
20
+ options(): QueuesModuleOptions {
21
+ return {
22
+ ...testQueueConfig
23
+ }
24
+ }
25
+
26
+ subscribe(message: QueueMessage<any>) {
27
+ // console.log(`Received message ${JSON.stringify(message)}`);
28
+ this.testQueueLogger.debug(`Received message: ${JSON.stringify(message)}`);
29
+
30
+ return new Promise((resolve, reject) => {
31
+ // Simulate some processing time
32
+ setTimeout(() => {
33
+ this.testQueueLogger.debug(`Processed message: ${JSON.stringify(message)}`);
34
+ resolve({ status: 'success', messageId: message.messageId, message: `Processed message` });
35
+ }, 10000); // Simulate 1 second processing time
36
+ });
37
+ }
38
+ }
@@ -0,0 +1,13 @@
1
+ import { BrokerType } from "../../interfaces";
2
+
3
+ const QUEUE_NAME = 'test_queue_db';
4
+
5
+ export default {
6
+ name: 'queueTestDb',
7
+ type: BrokerType.Database,
8
+ queueName: QUEUE_NAME,
9
+ // receive: async (message: QueueMessage<any>) => { // Default receive handler
10
+ // console.log(`Received message: ${JSON.stringify(message)} from queue ${MAIL_QUEUE_NAME}`);
11
+ // return 'Received';
12
+ // },
13
+ };
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import { RabbitMqPublisher } from 'src/services/rabbitmq-publisher.service';
3
+ import { RabbitMqPublisher } from 'src/services/queues/rabbitmq-publisher.service';
4
4
  import mailQueueOptions from './email-queue-options';
5
5
  import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
6
6
  import { MqMessageService } from 'src/services/mq-message.service';
@@ -1,7 +1,7 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
3
  import mailQueueOptions from './email-queue-options';
4
- import { RabbitMqSubscriber } from 'src/services/rabbitmq-subscriber.service';
4
+ import { RabbitMqSubscriber } from 'src/services/queues/rabbitmq-subscriber.service';
5
5
  import { QueueMessage } from 'src/interfaces/mq';
6
6
  import { SMTPEMailService } from '../services/mail/SMTPEmailService';
7
7
  import { MqMessageService } from 'src/services/mq-message.service';
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import { RabbitMqPublisher } from 'src/services/rabbitmq-publisher.service';
3
+ import { RabbitMqPublisher } from 'src/services/queues/rabbitmq-publisher.service';
4
4
  import otpQueueOptions from './otp-queue-options';
5
5
  import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
6
6
  import { MqMessageService } from 'src/services/mq-message.service';
@@ -1,7 +1,7 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
3
  import { QueueMessage } from 'src/interfaces/mq';
4
- import { RabbitMqSubscriber } from 'src/services/rabbitmq-subscriber.service';
4
+ import { RabbitMqSubscriber } from 'src/services/queues/rabbitmq-subscriber.service';
5
5
  import { Msg91OTPService } from '../services/sms/Msg91OTPService';
6
6
  import otpQueueOptions from './otp-queue-options';
7
7
  import { MqMessageService } from 'src/services/mq-message.service';
@@ -1,7 +1,7 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import { RabbitMqPublisher } from 'src/services/rabbitmq-publisher.service';
4
- import testQueueConfig from './test-queue.config';
3
+ import { RabbitMqPublisher } from 'src/services/queues/rabbitmq-publisher.service';
4
+ import testQueueConfig from './test-queue-options';
5
5
  import { MqMessageQueueService } from '../services/mq-message-queue.service';
6
6
  import { MqMessageService } from '../services/mq-message.service';
7
7
  import { QueuesModuleOptions } from "../interfaces";
@@ -1,8 +1,8 @@
1
1
  import { Injectable, Logger } from '@nestjs/common';
2
2
 
3
- import { RabbitMqSubscriber } from 'src/services/rabbitmq-subscriber.service';
3
+ import { RabbitMqSubscriber } from 'src/services/queues/rabbitmq-subscriber.service';
4
4
  import { QueueMessage } from 'src/interfaces/mq';
5
- import testQueueConfig from './test-queue.config';
5
+ import testQueueConfig from './test-queue-options';
6
6
  import { MqMessageService } from '../services/mq-message.service';
7
7
  import { MqMessageQueueService } from '../services/mq-message-queue.service';
8
8
  import { QueuesModuleOptions } from "../interfaces";
@@ -26,5 +26,13 @@ export class TestQueueSubscriber extends RabbitMqSubscriber<any> {
26
26
  subscribe(message: QueueMessage<any>) {
27
27
  // console.log(`Received message ${JSON.stringify(message)}`);
28
28
  this.testQueueLogger.debug(`Received message: ${JSON.stringify(message)}`);
29
+
30
+ return new Promise((resolve, reject) => {
31
+ // Simulate some processing time
32
+ setTimeout(() => {
33
+ this.testQueueLogger.debug(`Processed message: ${JSON.stringify(message)}`);
34
+ resolve({ status: 'success', messageId: message.messageId, message: `Processed message` });
35
+ }, 10000); // Simulate 1 second processing time
36
+ });
29
37
  }
30
38
  }
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import { RabbitMqPublisher } from 'src/services/rabbitmq-publisher.service';
3
+ import { RabbitMqPublisher } from 'src/services/queues/rabbitmq-publisher.service';
4
4
  import smsQueueOptions from './sms-queue-options';
5
5
  import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
6
6
  import { MqMessageService } from 'src/services/mq-message.service';
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import { RabbitMqSubscriber } from 'src/services/rabbitmq-subscriber.service';
3
+ import { RabbitMqSubscriber } from 'src/services/queues/rabbitmq-subscriber.service';
4
4
  import { QueueMessage } from 'src/interfaces/mq';
5
5
  import smsQueueOptions from './sms-queue-options';
6
6
  import { Msg91SMSService } from '../services/sms/Msg91SMSService';
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import { RabbitMqPublisher } from 'src/services/rabbitmq-publisher.service';
3
+ import { RabbitMqPublisher } from 'src/services/queues/rabbitmq-publisher.service';
4
4
  import whatsappQueueOptions from './whatsapp-queue-options';
5
5
  import { MqMessageService } from 'src/services/mq-message.service';
6
6
  import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import { RabbitMqSubscriber } from 'src/services/rabbitmq-subscriber.service';
3
+ import { RabbitMqSubscriber } from 'src/services/queues/rabbitmq-subscriber.service';
4
4
  import { QueueMessage } from 'src/interfaces/mq';
5
5
  import whatsappQueueOptions from './whatsapp-queue-options';
6
6
  import { Msg91WhatsappService } from '../services/whatsapp/Msg91WhatsappService';
@@ -116,17 +116,12 @@
116
116
 
117
117
  <body>
118
118
  <div class="email-wrapper">
119
- <!-- Logo outside the box -->
120
119
  {{#if companyLogoUrl}}
121
120
  <div class="logo">
122
121
  <img src="{{companyLogoUrl}}" alt="Company Logo" />
123
- <!-- {{else}}
124
- //fallback svg logo here
125
- {{/if}} -->
126
122
  </div>
127
123
  {{/if}}
128
124
 
129
- <!-- Content Box -->
130
125
  <div class="content-box">
131
126
  <h2 class="title">Hi {{ fullName }},</h2>
132
127
  <p class="intro">
@@ -116,17 +116,12 @@
116
116
 
117
117
  <body>
118
118
  <div class="email-wrapper">
119
- <!-- Logo outside the box -->
120
119
  {{#if companyLogoUrl}}
121
120
  <div class="logo">
122
121
  <img src="{{companyLogoUrl}}" alt="Company Logo" />
123
- <!-- {{else}}
124
- //fallback svg logo here
125
- {{/if}} -->
126
122
  </div>
127
123
  {{/if}}
128
124
 
129
- <!-- Content Box -->
130
125
  <div class="content-box">
131
126
  <h2 class="title">Hi {{ fullName }},</h2>
132
127
  <p class="intro">
@@ -152,9 +147,6 @@
152
147
  <br/ >
153
148
  The {{ solidAppName }} Team.
154
149
  </p>
155
- <!-- <p class="footer-text">
156
- If you have any questions, just reply to this email—we’re happy to help.
157
- </p> -->
158
150
  </div>
159
151
 
160
152
  <div class="footer">
@@ -115,17 +115,12 @@
115
115
 
116
116
  <body>
117
117
  <div class="email-wrapper">
118
- <!-- Logo outside the box -->
119
118
  {{#if companyLogoUrl}}
120
119
  <div class="logo">
121
120
  <img src="{{companyLogoUrl}}" alt="Company Logo" />
122
- <!-- {{else}}
123
- //fallback svg logo here
124
- {{/if}} -->
125
121
  </div>
126
122
  {{/if}}
127
123
 
128
- <!-- Content Box -->
129
124
  <div class="content-box">
130
125
  <h2 class="title">Hi {{ fullName }},</h2>
131
126
  <p class="intro">
@@ -115,17 +115,12 @@
115
115
 
116
116
  <body>
117
117
  <div class="email-wrapper">
118
- <!-- Logo outside the box -->
119
118
  {{#if companyLogoUrl}}
120
119
  <div class="logo">
121
120
  <img src="{{companyLogoUrl}}" alt="Company Logo" />
122
- <!-- {{else}}
123
- //fallback svg logo here
124
- {{/if}} -->
125
121
  </div>
126
122
  {{/if}}
127
123
 
128
- <!-- Content Box -->
129
124
  <div class="content-box">
130
125
  <h2 class="title">Hi {{ fullName }},</h2>
131
126
  <p class="intro">