@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.
- package/dist/controllers/model-metadata.controller.d.ts +1 -1
- package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/model-metadata.controller.js +1 -1
- package/dist/controllers/model-metadata.controller.js.map +1 -1
- package/dist/controllers/queues-test.controller.d.ts +5 -3
- package/dist/controllers/queues-test.controller.d.ts.map +1 -1
- package/dist/controllers/queues-test.controller.js +20 -8
- package/dist/controllers/queues-test.controller.js.map +1 -1
- package/dist/entities/field-metadata.entity.js +1 -1
- package/dist/entities/mq-message.entity.d.ts +1 -0
- package/dist/entities/mq-message.entity.d.ts.map +1 -1
- package/dist/entities/mq-message.entity.js +5 -1
- package/dist/entities/mq-message.entity.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.d.ts +1 -0
- package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js +9 -4
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +2 -1
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +1 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/jobs/api-email-publisher.service.d.ts +1 -1
- package/dist/jobs/api-email-publisher.service.d.ts.map +1 -1
- package/dist/jobs/api-email-publisher.service.js +1 -1
- package/dist/jobs/api-email-publisher.service.js.map +1 -1
- package/dist/jobs/api-email-subscriber.service.d.ts +1 -1
- package/dist/jobs/api-email-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/api-email-subscriber.service.js +1 -1
- package/dist/jobs/api-email-subscriber.service.js.map +1 -1
- package/dist/jobs/database/generate-code-publisher.service.d.ts +11 -0
- package/dist/jobs/database/generate-code-publisher.service.d.ts.map +1 -0
- package/dist/jobs/database/generate-code-publisher.service.js +39 -0
- package/dist/jobs/database/generate-code-publisher.service.js.map +1 -0
- package/dist/jobs/database/generate-code-queue-options.d.ts +8 -0
- package/dist/jobs/database/generate-code-queue-options.d.ts.map +1 -0
- package/dist/jobs/database/generate-code-queue-options.js +10 -0
- package/dist/jobs/database/generate-code-queue-options.js.map +1 -0
- package/dist/jobs/database/generate-code-subscriber.service.d.ts +16 -0
- package/dist/jobs/database/generate-code-subscriber.service.d.ts.map +1 -0
- package/dist/jobs/database/generate-code-subscriber.service.js +67 -0
- package/dist/jobs/database/generate-code-subscriber.service.js.map +1 -0
- package/dist/jobs/database/queue-test-db-publisher.service.d.ts +11 -0
- package/dist/jobs/database/queue-test-db-publisher.service.d.ts.map +1 -0
- package/dist/jobs/database/queue-test-db-publisher.service.js +39 -0
- package/dist/jobs/database/queue-test-db-publisher.service.js.map +1 -0
- package/dist/jobs/database/queue-test-db-subscriber.service.d.ts +14 -0
- package/dist/jobs/database/queue-test-db-subscriber.service.d.ts.map +1 -0
- package/dist/jobs/database/queue-test-db-subscriber.service.js +50 -0
- package/dist/jobs/database/queue-test-db-subscriber.service.js.map +1 -0
- package/dist/jobs/database/test-queue-db-options.d.ts +8 -0
- package/dist/jobs/database/test-queue-db-options.d.ts.map +1 -0
- package/dist/jobs/database/test-queue-db-options.js +10 -0
- package/dist/jobs/database/test-queue-db-options.js.map +1 -0
- package/dist/jobs/email-publisher.service.d.ts +1 -1
- package/dist/jobs/email-publisher.service.d.ts.map +1 -1
- package/dist/jobs/email-publisher.service.js +1 -1
- package/dist/jobs/email-publisher.service.js.map +1 -1
- package/dist/jobs/email-subscriber.service.d.ts +1 -1
- package/dist/jobs/email-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/email-subscriber.service.js +1 -1
- package/dist/jobs/email-subscriber.service.js.map +1 -1
- package/dist/jobs/otp-publisher.service.d.ts +1 -1
- package/dist/jobs/otp-publisher.service.d.ts.map +1 -1
- package/dist/jobs/otp-publisher.service.js +1 -1
- package/dist/jobs/otp-publisher.service.js.map +1 -1
- package/dist/jobs/otp-subscriber.service.d.ts +1 -1
- package/dist/jobs/otp-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/otp-subscriber.service.js +1 -1
- package/dist/jobs/otp-subscriber.service.js.map +1 -1
- package/dist/jobs/queue-test-publisher.service.d.ts +1 -1
- package/dist/jobs/queue-test-publisher.service.d.ts.map +1 -1
- package/dist/jobs/queue-test-publisher.service.js +3 -3
- package/dist/jobs/queue-test-publisher.service.js.map +1 -1
- package/dist/jobs/queue-test-subscriber.service.d.ts +2 -2
- package/dist/jobs/queue-test-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/queue-test-subscriber.service.js +9 -3
- package/dist/jobs/queue-test-subscriber.service.js.map +1 -1
- package/dist/jobs/sms-publisher.service.d.ts +1 -1
- package/dist/jobs/sms-publisher.service.d.ts.map +1 -1
- package/dist/jobs/sms-publisher.service.js +1 -1
- package/dist/jobs/sms-publisher.service.js.map +1 -1
- package/dist/jobs/sms-subscriber.service.d.ts +1 -1
- package/dist/jobs/sms-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/sms-subscriber.service.js +1 -1
- package/dist/jobs/sms-subscriber.service.js.map +1 -1
- package/dist/jobs/{test-queue.config.d.ts → test-queue-options.d.ts} +1 -1
- package/dist/jobs/test-queue-options.d.ts.map +1 -0
- package/dist/jobs/{test-queue.config.js → test-queue-options.js} +1 -1
- package/dist/jobs/test-queue-options.js.map +1 -0
- package/dist/jobs/whatsapp-publisher.service.d.ts +1 -1
- package/dist/jobs/whatsapp-publisher.service.d.ts.map +1 -1
- package/dist/jobs/whatsapp-publisher.service.js +1 -1
- package/dist/jobs/whatsapp-publisher.service.js.map +1 -1
- package/dist/jobs/whatsapp-subscriber.service.d.ts +1 -1
- package/dist/jobs/whatsapp-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/whatsapp-subscriber.service.js +1 -1
- package/dist/jobs/whatsapp-subscriber.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +342 -282
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +4 -1
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +11 -4
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +141 -6
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/mq-message-queue.service.d.ts.map +1 -1
- package/dist/services/mq-message-queue.service.js +1 -0
- package/dist/services/mq-message-queue.service.js.map +1 -1
- package/dist/services/mq-message.service.d.ts +2 -0
- package/dist/services/mq-message.service.d.ts.map +1 -1
- package/dist/services/mq-message.service.js +29 -2
- package/dist/services/mq-message.service.js.map +1 -1
- package/dist/services/queues/database-publisher.service.d.ts +16 -0
- package/dist/services/queues/database-publisher.service.d.ts.map +1 -0
- package/dist/services/queues/database-publisher.service.js +59 -0
- package/dist/services/queues/database-publisher.service.js.map +1 -0
- package/dist/services/queues/database-subscriber.service.d.ts +21 -0
- package/dist/services/queues/database-subscriber.service.d.ts.map +1 -0
- package/dist/services/queues/database-subscriber.service.js +128 -0
- package/dist/services/queues/database-subscriber.service.js.map +1 -0
- package/dist/services/{rabbitmq-publisher.service.d.ts → queues/rabbitmq-publisher.service.d.ts} +6 -4
- package/dist/services/queues/rabbitmq-publisher.service.d.ts.map +1 -0
- package/dist/services/{rabbitmq-publisher.service.js → queues/rabbitmq-publisher.service.js} +14 -1
- package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -0
- package/dist/services/{rabbitmq-subscriber.service.d.ts → queues/rabbitmq-subscriber.service.d.ts} +6 -4
- package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -0
- package/dist/services/{rabbitmq-subscriber.service.js → queues/rabbitmq-subscriber.service.js} +14 -10
- package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -0
- package/dist/services/queues/redis-publisher.service.d.ts +1 -0
- package/dist/services/queues/redis-publisher.service.d.ts.map +1 -0
- package/dist/services/queues/redis-publisher.service.js +1 -0
- package/dist/services/queues/redis-publisher.service.js.map +1 -0
- package/dist/services/queues/redis-subscriber.service.d.ts +1 -0
- package/dist/services/queues/redis-subscriber.service.d.ts.map +1 -0
- package/dist/services/queues/redis-subscriber.service.js +1 -0
- package/dist/services/queues/redis-subscriber.service.js.map +1 -0
- package/dist/services/sms/Msg91BaseSMSService.d.ts +1 -1
- package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +10 -2
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/field-metadata.subscriber.d.ts +10 -0
- package/dist/subscribers/field-metadata.subscriber.d.ts.map +1 -0
- package/dist/subscribers/field-metadata.subscriber.js +40 -0
- package/dist/subscribers/field-metadata.subscriber.js.map +1 -0
- package/dist/subscribers/{model.subscriber.d.ts → model-metadata.subscriber.d.ts} +2 -2
- package/dist/subscribers/model-metadata.subscriber.d.ts.map +1 -0
- package/dist/subscribers/{model.subscriber.js → model-metadata.subscriber.js} +8 -8
- package/dist/subscribers/model-metadata.subscriber.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/controllers/model-metadata.controller.ts +1 -2
- package/src/controllers/queues-test.controller.ts +15 -6
- package/src/entities/field-metadata.entity.ts +1 -1
- package/src/entities/mq-message.entity.ts +3 -0
- package/src/helpers/module-metadata-helper.service.ts +11 -5
- package/src/index.ts +3 -3
- package/src/interfaces.ts +1 -0
- package/src/jobs/api-email-publisher.service.ts +1 -1
- package/src/jobs/api-email-subscriber.service.ts +1 -1
- package/src/jobs/database/generate-code-publisher.service.ts +23 -0
- package/src/jobs/database/generate-code-queue-options.ts +9 -0
- package/src/jobs/database/generate-code-subscriber.service.ts +56 -0
- package/src/jobs/database/queue-test-db-publisher.service.ts +24 -0
- package/src/jobs/database/queue-test-db-subscriber.service.ts +38 -0
- package/src/jobs/database/test-queue-db-options.ts +13 -0
- package/src/jobs/email-publisher.service.ts +1 -1
- package/src/jobs/email-subscriber.service.ts +1 -1
- package/src/jobs/otp-publisher.service.ts +1 -1
- package/src/jobs/otp-subscriber.service.ts +1 -1
- package/src/jobs/queue-test-publisher.service.ts +2 -2
- package/src/jobs/queue-test-subscriber.service.ts +10 -2
- package/src/jobs/sms-publisher.service.ts +1 -1
- package/src/jobs/sms-subscriber.service.ts +1 -1
- package/src/jobs/whatsapp-publisher.service.ts +1 -1
- package/src/jobs/whatsapp-subscriber.service.ts +1 -1
- package/src/seeders/seed-data/email-templates/forgot-password.handlebars.html +0 -5
- package/src/seeders/seed-data/email-templates/on-force-password-change.handlebars.html +0 -8
- package/src/seeders/seed-data/email-templates/otp-on-login.handlebars.html +0 -5
- package/src/seeders/seed-data/email-templates/otp-on-register.handlebars.html +0 -5
- package/src/seeders/seed-data/solid-core-metadata.json +344 -284
- package/src/services/field-metadata.service.ts +5 -5
- package/src/services/model-metadata.service.ts +256 -13
- package/src/services/mq-message-queue.service.ts +2 -1
- package/src/services/mq-message.service.ts +47 -8
- package/src/services/queues/database-publisher.service.ts +79 -0
- package/src/services/queues/database-subscriber.service.ts +173 -0
- package/src/services/{rabbitmq-publisher.service.ts → queues/rabbitmq-publisher.service.ts} +24 -8
- package/src/services/{rabbitmq-subscriber.service.ts → queues/rabbitmq-subscriber.service.ts} +23 -16
- package/src/services/queues/redis-publisher.service.ts +0 -0
- package/src/services/queues/redis-subscriber.service.ts +0 -0
- package/src/services/sms/Msg91BaseSMSService.ts +1 -1
- package/src/solid-core.module.ts +10 -2
- package/src/subscribers/field-metadata.subscriber.ts +52 -0
- package/src/subscribers/{model.subscriber.ts → model-metadata.subscriber.ts} +2 -2
- package/dist/jobs/test-queue.config.d.ts.map +0 -1
- package/dist/jobs/test-queue.config.js.map +0 -1
- package/dist/services/rabbitmq-publisher.service.d.ts.map +0 -1
- package/dist/services/rabbitmq-publisher.service.js.map +0 -1
- package/dist/services/rabbitmq-subscriber.service.d.ts.map +0 -1
- package/dist/services/rabbitmq-subscriber.service.js.map +0 -1
- package/dist/subscribers/model.subscriber.d.ts.map +0 -1
- package/dist/subscribers/model.subscriber.js.map +0 -1
- /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.
|
|
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(
|
|
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: '
|
|
30
|
+
parentEntity: 'feeType',
|
|
27
31
|
parentEntityId: 23,
|
|
28
32
|
};
|
|
29
|
-
|
|
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: '
|
|
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
|
|
24
|
-
const
|
|
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 (
|
|
31
|
-
const fallbackPath = path.resolve(process.cwd(), 'src', 'seeders', 'seed-data', `${
|
|
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
|
@@ -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,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
|
|
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
|
|
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">
|