@solidstarters/solid-core 1.2.50 → 1.2.52

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 (81) hide show
  1. package/dist/controllers/list-of-values.controller.d.ts +41 -0
  2. package/dist/controllers/list-of-values.controller.d.ts.map +1 -0
  3. package/dist/controllers/list-of-values.controller.js +179 -0
  4. package/dist/controllers/list-of-values.controller.js.map +1 -0
  5. package/dist/controllers/saved-filters.controller.d.ts +41 -0
  6. package/dist/controllers/saved-filters.controller.d.ts.map +1 -0
  7. package/dist/controllers/saved-filters.controller.js +179 -0
  8. package/dist/controllers/saved-filters.controller.js.map +1 -0
  9. package/dist/dtos/create-list-of-values.dto.d.ts +6 -6
  10. package/dist/dtos/create-list-of-values.dto.d.ts.map +1 -1
  11. package/dist/dtos/create-list-of-values.dto.js +24 -7
  12. package/dist/dtos/create-list-of-values.dto.js.map +1 -1
  13. package/dist/dtos/create-saved-filters.dto.d.ts +12 -0
  14. package/dist/dtos/create-saved-filters.dto.d.ts.map +1 -0
  15. package/dist/dtos/create-saved-filters.dto.js +80 -0
  16. package/dist/dtos/create-saved-filters.dto.js.map +1 -0
  17. package/dist/dtos/update-list-of-values.dto.d.ts +10 -0
  18. package/dist/dtos/update-list-of-values.dto.d.ts.map +1 -0
  19. package/dist/dtos/update-list-of-values.dto.js +67 -0
  20. package/dist/dtos/update-list-of-values.dto.js.map +1 -0
  21. package/dist/dtos/update-saved-filters.dto.d.ts +13 -0
  22. package/dist/dtos/update-saved-filters.dto.d.ts.map +1 -0
  23. package/dist/dtos/update-saved-filters.dto.js +82 -0
  24. package/dist/dtos/update-saved-filters.dto.js.map +1 -0
  25. package/dist/entities/list-of-values.entity.d.ts +1 -1
  26. package/dist/entities/list-of-values.entity.d.ts.map +1 -1
  27. package/dist/entities/list-of-values.entity.js +11 -7
  28. package/dist/entities/list-of-values.entity.js.map +1 -1
  29. package/dist/entities/saved-filters.entity.d.ts +13 -0
  30. package/dist/entities/saved-filters.entity.d.ts.map +1 -0
  31. package/dist/entities/saved-filters.entity.js +59 -0
  32. package/dist/entities/saved-filters.entity.js.map +1 -0
  33. package/dist/index.d.ts +2 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/interfaces.d.ts +8 -5
  38. package/dist/interfaces.d.ts.map +1 -1
  39. package/dist/interfaces.js.map +1 -1
  40. package/dist/providers/list-of-values-selection-providers.service.js +2 -2
  41. package/dist/providers/list-of-values-selection-providers.service.js.map +1 -1
  42. package/dist/seeders/module-metadata-seeder.service.d.ts +6 -2
  43. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  44. package/dist/seeders/module-metadata-seeder.service.js +24 -8
  45. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  46. package/dist/seeders/seed-data/solid-core-metadata.json +1199 -143
  47. package/dist/services/list-of-values.service.d.ts +21 -10
  48. package/dist/services/list-of-values.service.d.ts.map +1 -1
  49. package/dist/services/list-of-values.service.js +43 -31
  50. package/dist/services/list-of-values.service.js.map +1 -1
  51. package/dist/services/mail/SMTPEmailService.d.ts +3 -3
  52. package/dist/services/mail/SMTPEmailService.d.ts.map +1 -1
  53. package/dist/services/mail/SMTPEmailService.js +23 -6
  54. package/dist/services/mail/SMTPEmailService.js.map +1 -1
  55. package/dist/services/saved-filters.service.d.ts +22 -0
  56. package/dist/services/saved-filters.service.d.ts.map +1 -0
  57. package/dist/services/saved-filters.service.js +56 -0
  58. package/dist/services/saved-filters.service.js.map +1 -0
  59. package/dist/solid-core.module.d.ts.map +1 -1
  60. package/dist/solid-core.module.js +12 -0
  61. package/dist/solid-core.module.js.map +1 -1
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/package.json +1 -1
  64. package/src/controllers/list-of-values.controller.ts +93 -0
  65. package/src/controllers/saved-filters.controller.ts +93 -0
  66. package/src/dtos/create-list-of-values.dto.ts +27 -19
  67. package/src/dtos/create-saved-filters.dto.ts +42 -0
  68. package/src/dtos/update-list-of-values.dto.ts +36 -0
  69. package/src/dtos/update-saved-filters.dto.ts +45 -0
  70. package/src/entities/list-of-values.entity.ts +9 -14
  71. package/src/entities/saved-filters.entity.ts +24 -0
  72. package/src/index.ts +2 -0
  73. package/src/interfaces.ts +14 -4
  74. package/src/providers/list-of-values-selection-providers.service.ts +2 -2
  75. package/src/seeders/module-metadata-seeder.service.ts +22 -3
  76. package/src/seeders/seed-data/solid-core-metadata.json +1447 -391
  77. package/src/services/list-of-values.service.ts +55 -47
  78. package/src/services/mail/SMTPEmailService.ts +26 -8
  79. package/src/services/saved-filters.service.ts +34 -0
  80. package/src/solid-core.module.ts +12 -0
  81. package/src/seeders/seed-data/solid-core-metadata.json.bkp +0 -6638
@@ -1,54 +1,62 @@
1
- import { InjectRepository } from "@nestjs/typeorm";
2
- import { Repository } from "typeorm";
3
- import { ListOfValues } from "../entities/list-of-values.entity";
4
- import { PaginationQueryDto } from "src/dtos/pagination-query.dto";
5
- import { Injectable, NotFoundException } from "@nestjs/common";
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
+ import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
+ import { EntityManager, Repository } from 'typeorm';
6
5
 
7
- @Injectable()
8
- export class ListOfValuesService {
9
- constructor(
10
- @InjectRepository(ListOfValues)
11
- private readonly listOfValuesRepo: Repository<ListOfValues>,
12
- ) { }
6
+ import { CRUDService } from 'src/services/crud.service';
7
+ import { ModelMetadataService } from 'src/services/model-metadata.service';
8
+ import { ModuleMetadataService } from 'src/services/module-metadata.service';
9
+ import { ConfigService } from '@nestjs/config';
10
+ import { FileService } from 'src/services/file.service';
11
+ import { CrudHelperService } from 'src/services/crud-helper.service';
13
12
 
14
- findAll(paginationQuery: PaginationQueryDto) {
15
- const { limit, offset } = paginationQuery;
16
- return this.listOfValuesRepo.find({
17
- relations: {},
18
- skip: offset,
19
- take: limit,
20
- });
21
- }
22
13
 
23
- async findOneByValueAndType(lovValue: string, lovType: string) {
24
- return await this.listOfValuesRepo.findOne({
25
- where: {
26
- value: lovValue,
27
- type: lovType,
28
- },
29
- });
30
- }
14
+ import { ListOfValues } from '../entities/list-of-values.entity';
31
15
 
32
- async findOne(id: number, relations = {}) {
33
- const lov = await this.listOfValuesRepo.findOne({
34
- where: {
35
- id: id,
36
- },
37
- relations: relations,
38
- });
39
- if (!lov) {
40
- throw new NotFoundException(`list of values #${id} not found`);
41
- }
42
- return lov;
43
- }
16
+ @Injectable()
17
+ export class ListOfValuesService extends CRUDService<ListOfValues> {
18
+ constructor(
19
+ readonly modelMetadataService: ModelMetadataService,
20
+ readonly moduleMetadataService: ModuleMetadataService,
21
+ readonly configService: ConfigService,
22
+ readonly fileService: FileService,
23
+ readonly discoveryService: DiscoveryService,
24
+ readonly crudHelperService: CrudHelperService,
25
+ @InjectEntityManager()
26
+ readonly entityManager: EntityManager,
27
+ @InjectRepository(ListOfValues, 'default')
28
+ readonly repo: Repository<ListOfValues>,
29
+ readonly moduleRef: ModuleRef
44
30
 
45
- async create(createDto: any) {
46
- const lov = this.listOfValuesRepo.create(createDto);
47
- return this.listOfValuesRepo.save(lov);
48
- }
31
+ ) {
32
+ super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'listOfValues', 'solid-core', moduleRef);
33
+ }
34
+ async findOneByValueAndType(lovValue: string, lovType: string) {
35
+ return await this.repo.findOne({
36
+ where: {
37
+ value: lovValue,
38
+ type: lovType,
39
+ },
40
+ });
41
+ }
42
+ async upsert(updateListOfValuesDto: any) {
43
+ // First check if module already exists using name
44
+ const existingListOfValue = await this.repo.findOne({
45
+ where: {
46
+ value: updateListOfValuesDto.value
47
+ }
48
+ })
49
49
 
50
- async remove(id: number) {
51
- const lov = await this.findOne(id);
52
- return this.listOfValuesRepo.remove(lov);
50
+ // if found
51
+ if (existingListOfValue) {
52
+ const updatedListOfValuesDto = { ...existingListOfValue, ...updateListOfValuesDto };
53
+ return this.repo.save(updatedListOfValuesDto);
53
54
  }
54
- }
55
+ // if not found - create new
56
+ else {
57
+ const listOfValue = this.repo.create(updateListOfValuesDto);
58
+ return this.repo.save(listOfValue);
59
+ }
60
+ }
61
+
62
+ }
@@ -5,11 +5,10 @@ import { EmailQueuePublisher } from 'src/jobs/email-publisher.service';
5
5
  import commonConfig from 'src/config/common.config';
6
6
  import { EmailTemplateService } from '../email-template.service';
7
7
  import Handlebars from "handlebars";
8
- import { IMail } from "../../interfaces";
8
+ import { IMail, MailAttachment } from "../../interfaces";
9
9
 
10
10
  const nodemailer = require("nodemailer");
11
11
 
12
-
13
12
  @Injectable()
14
13
  export class SMTPEMailService implements IMail {
15
14
  private readonly logger = new Logger(SMTPEMailService.name);
@@ -32,7 +31,7 @@ export class SMTPEMailService implements IMail {
32
31
  });
33
32
  }
34
33
 
35
- async sendEmailUsingTemplate(to: string, templateName: string, templateParams: any, shouldQueueEmails = false, parentEntity = null, parentEntityId = null): Promise<void> {
34
+ async sendEmailUsingTemplate(to: string, templateName: string, templateParams: any, shouldQueueEmails = false, parentEntity = null, parentEntityId = null, attachments: MailAttachment[] = [], cc: string[] = []): Promise<void> {
36
35
  // Load template and evaluate it.
37
36
  const emailTemplate = await this.emailTemplateService.findOneByName(templateName);
38
37
  if (!emailTemplate) {
@@ -48,16 +47,18 @@ export class SMTPEMailService implements IMail {
48
47
  const subject = subjectTemplate(templateParams);
49
48
 
50
49
  // Finally send the email.
51
- await this.sendEmail(to, subject, body, shouldQueueEmails, parentEntity, parentEntityId);
50
+ await this.sendEmail(to, subject, body, shouldQueueEmails, parentEntity, parentEntityId, attachments);
52
51
  }
53
52
 
54
- async sendEmail(to: string, subject: string, body: string, shouldQueueEmails = false, parentEntity = null, parentEntityId = null): Promise<void> {
53
+ async sendEmail(to: string, subject: string, body: string, shouldQueueEmails = false, parentEntity = null, parentEntityId = null, attachments: MailAttachment[] = [], cc: string[]=[]): Promise<void> {
55
54
  const message = {
56
55
  payload: {
57
56
  from: this.commonConfiguration.smtpMail.from,
58
57
  to: to,
59
58
  subject: subject,
60
- body: body
59
+ body: body,
60
+ attachments: attachments,
61
+ cc: cc,
61
62
  },
62
63
  parentEntity: parentEntity,
63
64
  parentEntityId: parentEntityId,
@@ -85,13 +86,30 @@ export class SMTPEMailService implements IMail {
85
86
  }
86
87
 
87
88
  async sendEmailSynchronously(message: QueueMessage<any>): Promise<void> {
88
- const { from, to, subject, body } = message.payload;
89
+ const { from, to, subject, body, attachments, cc } = message.payload;
90
+
91
+ const attachmentsList = attachments.map((attachment: MailAttachment) => {
92
+ const attachmentEntry = {
93
+ filename: attachment.filename,
94
+ contentType: attachment.contentType,
95
+ }
96
+ if (attachment.path) {
97
+ attachmentEntry['path'] = attachment.path;
98
+ }
99
+ if (attachment.content) {
100
+ attachmentEntry['content'] = attachment.content;
101
+ }
102
+ return attachmentEntry;
103
+ });
104
+
89
105
  // throw new Error('Random error....');
90
106
  const r = await this.transporter.sendMail({
91
107
  from: from,
92
108
  to: to,
109
+ cc: cc,
93
110
  subject: subject,
94
- html: body
111
+ html: body,
112
+ attachments: attachmentsList,
95
113
  });
96
114
  // this.logger.debug(`Sending email to ${to} with subject ${subject} and body ${body}`);
97
115
  this.logger.debug(`Sending email to ${to} with subject ${subject}`);
@@ -0,0 +1,34 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
+ import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
+ import { EntityManager, Repository } from 'typeorm';
5
+
6
+ import { CRUDService } from 'src/services/crud.service';
7
+ import { ModelMetadataService } from 'src/services/model-metadata.service';
8
+ import { ModuleMetadataService } from 'src/services/module-metadata.service';
9
+ import { ConfigService } from '@nestjs/config';
10
+ import { FileService } from 'src/services/file.service';
11
+ import { CrudHelperService } from 'src/services/crud-helper.service';
12
+
13
+
14
+ import { SavedFilters } from '../entities/saved-filters.entity';
15
+
16
+ @Injectable()
17
+ export class SavedFiltersService extends CRUDService<SavedFilters>{
18
+ constructor(
19
+ readonly modelMetadataService: ModelMetadataService,
20
+ readonly moduleMetadataService: ModuleMetadataService,
21
+ readonly configService: ConfigService,
22
+ readonly fileService: FileService,
23
+ readonly discoveryService: DiscoveryService,
24
+ readonly crudHelperService: CrudHelperService,
25
+ @InjectEntityManager()
26
+ readonly entityManager: EntityManager,
27
+ @InjectRepository(SavedFilters, 'default')
28
+ readonly repo: Repository<SavedFilters>,
29
+ readonly moduleRef: ModuleRef
30
+
31
+ ) {
32
+ super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService,entityManager, repo, 'savedFilters', 'solid-core', moduleRef);
33
+ }
34
+ }
@@ -141,6 +141,9 @@ import { FileS3StorageProvider } from './services/mediaStorageProviders/file-s3-
141
141
  import { FileStorageProvider } from './services/mediaStorageProviders/file-storage-provider';
142
142
  import { MediaRepository } from './repository/media.repository';
143
143
  import { ViewMetadataSubsciber } from './subscribers/view-metadata.subscriber';
144
+ import { SavedFilters } from './entities/saved-filters.entity';
145
+ import { SavedFiltersService } from './services/saved-filters.service';
146
+ import { SavedFiltersController } from './controllers/saved-filters.controller';
144
147
  import { UserViewMetadata } from './entities/user-view-metadata.entity';
145
148
  import { UserViewMetadataService } from './services/user-view-metadata.service';
146
149
  import { UserViewMetadataController } from './controllers/user-view-metadata.controller';
@@ -150,6 +153,7 @@ import { SecurityRuleController } from './controllers/security-rule.controller';
150
153
  import { RequestContextService } from './services/request-context.service';
151
154
  import { SecurityRuleRepository } from './repository/security-rule.repository';
152
155
  import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
156
+ import { ListOfValuesController } from './controllers/list-of-values.controller';
153
157
 
154
158
 
155
159
  @Global()
@@ -194,8 +198,11 @@ import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
194
198
  HttpModule,
195
199
  ConfigModule,
196
200
  TypeOrmModule.forFeature([Setting]),
201
+ TypeOrmModule.forFeature([SavedFilters]),
197
202
  TypeOrmModule.forFeature([UserViewMetadata]),
198
203
  TypeOrmModule.forFeature([SecurityRule]),
204
+ TypeOrmModule.forFeature([SavedFilters]),
205
+ TypeOrmModule.forFeature([ListOfValues]),
199
206
  // TypeOrmModule.forFeature([User]),
200
207
  ],
201
208
  controllers: [
@@ -221,8 +228,11 @@ import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
221
228
  RoleMetadataController,
222
229
  UserController,
223
230
  SettingController,
231
+ SavedFiltersController,
224
232
  UserViewMetadataController,
225
233
  SecurityRuleController,
234
+ SavedFiltersController,
235
+ ListOfValuesController
226
236
  ],
227
237
  providers: [
228
238
  {
@@ -317,11 +327,13 @@ import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
317
327
  FileS3StorageProvider,
318
328
  MediaRepository,
319
329
  ViewMetadataSubsciber,
330
+ SavedFiltersService,
320
331
  UserViewMetadataService,
321
332
  SecurityRuleService,
322
333
  SecurityRuleRepository,
323
334
  SecurityRuleSubscriber,
324
335
  RequestContextService,
336
+ SavedFiltersService
325
337
  ],
326
338
  exports: [
327
339
  ModuleMetadataService,