@solidstarters/solid-core 1.2.47 → 1.2.49

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 (190) hide show
  1. package/dist/controllers/email-template.controller.d.ts +25 -7
  2. package/dist/controllers/email-template.controller.d.ts.map +1 -1
  3. package/dist/controllers/email-template.controller.js +70 -36
  4. package/dist/controllers/email-template.controller.js.map +1 -1
  5. package/dist/controllers/google-authentication.controller.d.ts +0 -1
  6. package/dist/controllers/google-authentication.controller.d.ts.map +1 -1
  7. package/dist/controllers/security-rule.controller.d.ts +41 -0
  8. package/dist/controllers/security-rule.controller.d.ts.map +1 -0
  9. package/dist/controllers/security-rule.controller.js +179 -0
  10. package/dist/controllers/security-rule.controller.js.map +1 -0
  11. package/dist/controllers/sms-template.controller.d.ts +25 -7
  12. package/dist/controllers/sms-template.controller.d.ts.map +1 -1
  13. package/dist/controllers/sms-template.controller.js +71 -36
  14. package/dist/controllers/sms-template.controller.js.map +1 -1
  15. package/dist/controllers/user-view-metadata.controller.d.ts +2 -1
  16. package/dist/controllers/user-view-metadata.controller.d.ts.map +1 -1
  17. package/dist/controllers/user-view-metadata.controller.js +5 -3
  18. package/dist/controllers/user-view-metadata.controller.js.map +1 -1
  19. package/dist/controllers/view-metadata.controller.d.ts +2 -1
  20. package/dist/controllers/view-metadata.controller.d.ts.map +1 -1
  21. package/dist/controllers/view-metadata.controller.js +5 -3
  22. package/dist/controllers/view-metadata.controller.js.map +1 -1
  23. package/dist/dtos/create-email-attachment.dto.d.ts.map +1 -1
  24. package/dist/dtos/create-email-attachment.dto.js +8 -1
  25. package/dist/dtos/create-email-attachment.dto.js.map +1 -1
  26. package/dist/dtos/create-email-template.dto.d.ts +1 -0
  27. package/dist/dtos/create-email-template.dto.d.ts.map +1 -1
  28. package/dist/dtos/create-email-template.dto.js +26 -3
  29. package/dist/dtos/create-email-template.dto.js.map +1 -1
  30. package/dist/dtos/create-model-metadata.dto.d.ts +3 -0
  31. package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
  32. package/dist/dtos/create-model-metadata.dto.js +18 -1
  33. package/dist/dtos/create-model-metadata.dto.js.map +1 -1
  34. package/dist/dtos/create-security-rule.dto.d.ts +10 -0
  35. package/dist/dtos/create-security-rule.dto.d.ts.map +1 -0
  36. package/dist/dtos/create-security-rule.dto.js +65 -0
  37. package/dist/dtos/create-security-rule.dto.js.map +1 -0
  38. package/dist/dtos/create-sms-template.dto.d.ts +1 -0
  39. package/dist/dtos/create-sms-template.dto.d.ts.map +1 -1
  40. package/dist/dtos/create-sms-template.dto.js +29 -2
  41. package/dist/dtos/create-sms-template.dto.js.map +1 -1
  42. package/dist/dtos/security-rule-config.dto.d.ts +4 -0
  43. package/dist/dtos/security-rule-config.dto.d.ts.map +1 -0
  44. package/dist/dtos/security-rule-config.dto.js +4 -0
  45. package/dist/dtos/security-rule-config.dto.js.map +1 -0
  46. package/dist/dtos/update-email-attachment.dto.d.ts +8 -0
  47. package/dist/dtos/update-email-attachment.dto.d.ts.map +1 -0
  48. package/dist/dtos/update-email-attachment.dto.js +58 -0
  49. package/dist/dtos/update-email-attachment.dto.js.map +1 -0
  50. package/dist/dtos/update-email-template.dto.d.ts +7 -0
  51. package/dist/dtos/update-email-template.dto.d.ts.map +1 -1
  52. package/dist/dtos/update-email-template.dto.js +61 -1
  53. package/dist/dtos/update-email-template.dto.js.map +1 -1
  54. package/dist/dtos/update-security-rule.dto.d.ts +11 -0
  55. package/dist/dtos/update-security-rule.dto.d.ts.map +1 -0
  56. package/dist/dtos/update-security-rule.dto.js +72 -0
  57. package/dist/dtos/update-security-rule.dto.js.map +1 -0
  58. package/dist/dtos/update-sms-template.dto.d.ts +7 -0
  59. package/dist/dtos/update-sms-template.dto.d.ts.map +1 -1
  60. package/dist/dtos/update-sms-template.dto.js +57 -1
  61. package/dist/dtos/update-sms-template.dto.js.map +1 -1
  62. package/dist/entities/email-attachment.entity.d.ts.map +1 -1
  63. package/dist/entities/email-attachment.entity.js +6 -5
  64. package/dist/entities/email-attachment.entity.js.map +1 -1
  65. package/dist/entities/email-template.entity.d.ts +1 -0
  66. package/dist/entities/email-template.entity.d.ts.map +1 -1
  67. package/dist/entities/email-template.entity.js +17 -7
  68. package/dist/entities/email-template.entity.js.map +1 -1
  69. package/dist/entities/model-metadata.entity.d.ts +2 -0
  70. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  71. package/dist/entities/model-metadata.entity.js +9 -1
  72. package/dist/entities/model-metadata.entity.js.map +1 -1
  73. package/dist/entities/security-rule.entity.d.ts +11 -0
  74. package/dist/entities/security-rule.entity.d.ts.map +1 -0
  75. package/dist/entities/security-rule.entity.js +53 -0
  76. package/dist/entities/security-rule.entity.js.map +1 -0
  77. package/dist/entities/sms-template.entity.d.ts +1 -0
  78. package/dist/entities/sms-template.entity.d.ts.map +1 -1
  79. package/dist/entities/sms-template.entity.js +16 -7
  80. package/dist/entities/sms-template.entity.js.map +1 -1
  81. package/dist/entities/user.entity.d.ts.map +1 -1
  82. package/dist/entities/user.entity.js +2 -1
  83. package/dist/entities/user.entity.js.map +1 -1
  84. package/dist/helpers/solid-registry.d.ts +22 -1
  85. package/dist/helpers/solid-registry.d.ts.map +1 -1
  86. package/dist/helpers/solid-registry.js +29 -0
  87. package/dist/helpers/solid-registry.js.map +1 -1
  88. package/dist/index.d.ts +7 -0
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +7 -0
  91. package/dist/index.js.map +1 -1
  92. package/dist/interfaces.d.ts +2 -0
  93. package/dist/interfaces.d.ts.map +1 -1
  94. package/dist/interfaces.js.map +1 -1
  95. package/dist/repository/security-rule.repository.d.ts +20 -0
  96. package/dist/repository/security-rule.repository.d.ts.map +1 -0
  97. package/dist/repository/security-rule.repository.js +128 -0
  98. package/dist/repository/security-rule.repository.js.map +1 -0
  99. package/dist/repository/solid-base.repository.d.ts +14 -0
  100. package/dist/repository/solid-base.repository.d.ts.map +1 -0
  101. package/dist/repository/solid-base.repository.js +26 -0
  102. package/dist/repository/solid-base.repository.js.map +1 -0
  103. package/dist/seeders/module-metadata-seeder.service.d.ts +5 -1
  104. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  105. package/dist/seeders/module-metadata-seeder.service.js +22 -2
  106. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  107. package/dist/seeders/seed-data/solid-core-metadata.json +1184 -290
  108. package/dist/services/authentication.service.d.ts +0 -1
  109. package/dist/services/authentication.service.d.ts.map +1 -1
  110. package/dist/services/authentication.service.js +0 -1
  111. package/dist/services/authentication.service.js.map +1 -1
  112. package/dist/services/email-template.service.d.ts +22 -12
  113. package/dist/services/email-template.service.d.ts.map +1 -1
  114. package/dist/services/email-template.service.js +37 -46
  115. package/dist/services/email-template.service.js.map +1 -1
  116. package/dist/services/field-metadata.service.d.ts.map +1 -1
  117. package/dist/services/field-metadata.service.js +1 -0
  118. package/dist/services/field-metadata.service.js.map +1 -1
  119. package/dist/services/module-metadata.service.d.ts.map +1 -1
  120. package/dist/services/module-metadata.service.js +1 -0
  121. package/dist/services/module-metadata.service.js.map +1 -1
  122. package/dist/services/request-context.service.d.ts +7 -0
  123. package/dist/services/request-context.service.d.ts.map +1 -0
  124. package/dist/services/request-context.service.js +33 -0
  125. package/dist/services/request-context.service.js.map +1 -0
  126. package/dist/services/security-rule.service.d.ts +27 -0
  127. package/dist/services/security-rule.service.d.ts.map +1 -0
  128. package/dist/services/security-rule.service.js +71 -0
  129. package/dist/services/security-rule.service.js.map +1 -0
  130. package/dist/services/sms-template.service.d.ts +23 -13
  131. package/dist/services/sms-template.service.d.ts.map +1 -1
  132. package/dist/services/sms-template.service.js +41 -49
  133. package/dist/services/sms-template.service.js.map +1 -1
  134. package/dist/services/user-view-metadata.service.d.ts +2 -1
  135. package/dist/services/user-view-metadata.service.d.ts.map +1 -1
  136. package/dist/services/user-view-metadata.service.js +3 -3
  137. package/dist/services/user-view-metadata.service.js.map +1 -1
  138. package/dist/services/view-metadata.service.d.ts +2 -1
  139. package/dist/services/view-metadata.service.d.ts.map +1 -1
  140. package/dist/services/view-metadata.service.js +26 -11
  141. package/dist/services/view-metadata.service.js.map +1 -1
  142. package/dist/solid-core.module.d.ts.map +1 -1
  143. package/dist/solid-core.module.js +15 -1
  144. package/dist/solid-core.module.js.map +1 -1
  145. package/dist/subscribers/security-rule.subscriber.d.ts +16 -0
  146. package/dist/subscribers/security-rule.subscriber.d.ts.map +1 -0
  147. package/dist/subscribers/security-rule.subscriber.js +123 -0
  148. package/dist/subscribers/security-rule.subscriber.js.map +1 -0
  149. package/dist/tsconfig.tsbuildinfo +1 -1
  150. package/package.json +1 -1
  151. package/src/controllers/email-template.controller.ts +57 -38
  152. package/src/controllers/security-rule.controller.ts +93 -0
  153. package/src/controllers/sms-template.controller.ts +58 -37
  154. package/src/controllers/user-view-metadata.controller.ts +4 -2
  155. package/src/controllers/view-metadata.controller.ts +18 -16
  156. package/src/dtos/create-email-attachment.dto.ts +8 -6
  157. package/src/dtos/create-email-template.dto.ts +22 -11
  158. package/src/dtos/create-model-metadata.dto.ts +14 -0
  159. package/src/dtos/create-security-rule.dto.ts +34 -0
  160. package/src/dtos/create-sms-template.dto.ts +22 -8
  161. package/src/dtos/security-rule-config.dto.ts +5 -0
  162. package/src/dtos/update-email-attachment.dto.ts +36 -0
  163. package/src/dtos/update-email-template.dto.ts +40 -2
  164. package/src/dtos/update-security-rule.dto.ts +39 -0
  165. package/src/dtos/update-sms-template.dto.ts +42 -2
  166. package/src/entities/email-attachment.entity.ts +6 -10
  167. package/src/entities/email-template.entity.ts +12 -16
  168. package/src/entities/model-metadata.entity.ts +6 -0
  169. package/src/entities/security-rule.entity.ts +25 -0
  170. package/src/entities/sms-template.entity.ts +11 -14
  171. package/src/entities/user.entity.ts +2 -1
  172. package/src/helpers/solid-registry.ts +34 -0
  173. package/src/index.ts +9 -0
  174. package/src/interfaces.ts +2 -0
  175. package/src/repository/security-rule.repository.ts +135 -0
  176. package/src/repository/solid-base.repository.ts +45 -0
  177. package/src/seeders/module-metadata-seeder.service.ts +28 -1
  178. package/src/seeders/seed-data/solid-core-metadata.json +1189 -294
  179. package/src/seeders/seed-data/solid-core-metadata.json.bkp +6638 -0
  180. package/src/services/authentication.service.ts +1 -1
  181. package/src/services/email-template.service.ts +27 -54
  182. package/src/services/field-metadata.service.ts +1 -0
  183. package/src/services/module-metadata.service.ts +1 -0
  184. package/src/services/request-context.service.ts +16 -0
  185. package/src/services/security-rule.service.ts +54 -0
  186. package/src/services/sms-template.service.ts +32 -55
  187. package/src/services/user-view-metadata.service.ts +4 -3
  188. package/src/services/view-metadata.service.ts +30 -11
  189. package/src/solid-core.module.ts +15 -1
  190. package/src/subscribers/security-rule.subscriber.ts +78 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidstarters/solid-core",
3
- "version": "1.2.47",
3
+ "version": "1.2.49",
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",
@@ -1,4 +1,4 @@
1
- import { Body, Controller, Delete, Get, Header, Param, Patch, Post, Query } from '@nestjs/common';
1
+ import { Body, Controller, Delete, Get, Header, Param, Patch, Post, Put, Query, UploadedFiles, UseInterceptors } from '@nestjs/common';
2
2
  import { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';
3
3
  import { PaginationQueryDto } from 'src/dtos/pagination-query.dto';
4
4
  import { Roles } from 'src/decorators/roles.decorator';
@@ -12,48 +12,67 @@ import { Public } from 'src/decorators/public.decorator';
12
12
  // TODO: esInterop not working somehow, defaulted to using the require syntax to import Mailgen. Figure a better way to do this.
13
13
  // import { Mailgen } from 'mailgen';
14
14
  import Mailgen = require('mailgen');
15
+ import { AnyFilesInterceptor } from '@nestjs/platform-express';
15
16
 
16
17
 
17
- @Controller('email-templates')
18
+ @Controller('email-template')
18
19
  @ApiTags("Common")
19
20
  export class EmailTemplateController {
20
- constructor(private readonly emailTemplateService: EmailTemplateService) { }
21
-
22
- @ApiBearerAuth("jwt")
23
- @Roles('Admin')
24
- @Post()
25
- create(@Body() dto: CreateEmailTemplateDto) {
26
- return this.emailTemplateService.create(dto);
27
- }
28
-
29
- @ApiBearerAuth("jwt")
30
- @Roles('Admin')
31
- @ApiQuery({ name: 'limit', required: false, type: Number })
32
- @ApiQuery({ name: 'offset', required: false, type: Number })
33
- @Get()
34
- findAll(@Query() paginationQuery: PaginationQueryDto) {
35
- return this.emailTemplateService.findAll(paginationQuery);
36
- }
37
-
38
- @ApiBearerAuth("jwt")
39
- @Roles('Admin')
40
- @Get(':id')
41
- findOne(@Param('id') id: string) {
42
- return this.emailTemplateService.findOne(+id);
43
- }
44
-
45
- @ApiBearerAuth("jwt")
46
- @Patch(':id')
47
- update(@Param('id') id: string, @Body() dto: UpdateEmailTemplateDto) {
48
- return this.emailTemplateService.update(+id, dto);
49
- }
50
-
51
- @ApiBearerAuth("jwt")
52
- @Delete(':id')
53
- async delete(@Param('id') id: number) {
54
- return this.emailTemplateService.remove(+id);
55
- }
21
+ constructor(private readonly service: EmailTemplateService) { }
56
22
 
23
+ @Public()
24
+ @Post()
25
+ @UseInterceptors(AnyFilesInterceptor())
26
+ create(@Body() createDto: CreateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {
27
+ return this.service.create(createDto, files);
28
+ }
29
+
30
+ @Public()
31
+ @Post('/bulk')
32
+ @UseInterceptors(AnyFilesInterceptor())
33
+ insertMany(@Body() createDtos: CreateEmailTemplateDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {
34
+ return this.service.insertMany(createDtos, filesArray);
35
+ }
36
+
37
+ @Public()
38
+ @Put(':id')
39
+ @UseInterceptors(AnyFilesInterceptor())
40
+ update(@Param('id') id: number, @Body() updateDto: UpdateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {
41
+ return this.service.update(id, updateDto, files);
42
+ }
43
+
44
+ @Public()
45
+ @ApiQuery({ name: 'showSoftDeleted', required: false, type: Boolean })
46
+ @ApiQuery({ name: 'showOnlySoftDeleted', required: false, type: Boolean })
47
+ @ApiQuery({ name: 'limit', required: false, type: Number })
48
+ @ApiQuery({ name: 'offset', required: false, type: Number })
49
+ @ApiQuery({ name: 'fields', required: false, type: Array })
50
+ @ApiQuery({ name: 'sort', required: false, type: Array })
51
+ @ApiQuery({ name: 'groupBy', required: false, type: Array })
52
+ @ApiQuery({ name: 'populate', required: false, type: Array })
53
+ @ApiQuery({ name: 'populateMedia', required: false, type: Array })
54
+ @ApiQuery({ name: 'filters', required: false, type: Array })
55
+ @Get()
56
+ async findMany(@Query() query: any) {
57
+ return this.service.find(query);
58
+ }
59
+
60
+ @Public()
61
+ @Get(':id')
62
+ async findOne(@Param('id') id: string, @Query() query: any) {
63
+ return this.service.findOne(+id, query);
64
+ }
65
+
66
+ @Delete('/bulk')
67
+ async deleteMany(@Body() ids: number[]) {
68
+ return this.service.deleteMany(ids);
69
+ }
70
+
71
+ @Public()
72
+ @Delete(':id')
73
+ async delete(@Param('id') id: number) {
74
+ return this.service.delete(id);
75
+ }
57
76
  // /api/email-templates/mailgen-template/otp-template
58
77
  // @ApiBearerAuth("jwt")
59
78
  // @Roles('Admin')
@@ -0,0 +1,93 @@
1
+ import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch } from '@nestjs/common';
2
+ import { AnyFilesInterceptor } from "@nestjs/platform-express";
3
+ import { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';
4
+ import { SecurityRuleService } from '../services/security-rule.service';
5
+ import { CreateSecurityRuleDto } from '../dtos/create-security-rule.dto';
6
+ import { UpdateSecurityRuleDto } from '../dtos/update-security-rule.dto';
7
+
8
+ enum ShowSoftDeleted {
9
+ INCLUSIVE = "inclusive",
10
+ EXCLUSIVE = "exclusive",
11
+ }
12
+
13
+ @ApiTags('Solid Core')
14
+ @Controller('security-rule')
15
+ export class SecurityRuleController {
16
+ constructor(private readonly service: SecurityRuleService) {}
17
+
18
+ @ApiBearerAuth("jwt")
19
+ @Post()
20
+ @UseInterceptors(AnyFilesInterceptor())
21
+ create(@Body() createDto: CreateSecurityRuleDto, @UploadedFiles() files: Array<Express.Multer.File>) {
22
+ return this.service.create(createDto, files);
23
+ }
24
+
25
+ @ApiBearerAuth("jwt")
26
+ @Post('/bulk')
27
+ @UseInterceptors(AnyFilesInterceptor())
28
+ insertMany(@Body() createDtos: CreateSecurityRuleDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {
29
+ return this.service.insertMany(createDtos, filesArray);
30
+ }
31
+
32
+
33
+ @ApiBearerAuth("jwt")
34
+ @Put(':id')
35
+ @UseInterceptors(AnyFilesInterceptor())
36
+ update(@Param('id') id: number, @Body() updateDto: UpdateSecurityRuleDto, @UploadedFiles() files: Array<Express.Multer.File>) {
37
+ return this.service.update(id, updateDto, files);
38
+ }
39
+
40
+ @ApiBearerAuth("jwt")
41
+ @Patch(':id')
42
+ @UseInterceptors(AnyFilesInterceptor())
43
+ partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateSecurityRuleDto, @UploadedFiles() files: Array<Express.Multer.File>) {
44
+ return this.service.update(id, updateDto, files, true);
45
+ }
46
+
47
+ @ApiBearerAuth("jwt")
48
+ @Post('/bulk-recover')
49
+ async recoverMany(@Body() ids: number[]) {
50
+ return this.service.recoverMany(ids);
51
+ }
52
+
53
+ @ApiBearerAuth("jwt")
54
+ @Get('/recover/:id')
55
+ async recover(@Param('id') id: number) {
56
+ return this.service.recover(id);
57
+ }
58
+
59
+ @ApiBearerAuth("jwt")
60
+ @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })
61
+ @ApiQuery({ name: 'limit', required: false, type: Number })
62
+ @ApiQuery({ name: 'offset', required: false, type: Number })
63
+ @ApiQuery({ name: 'fields', required: false, type: Array })
64
+ @ApiQuery({ name: 'sort', required: false, type: Array })
65
+ @ApiQuery({ name: 'groupBy', required: false, type: Array })
66
+ @ApiQuery({ name: 'populate', required: false, type: Array })
67
+ @ApiQuery({ name: 'populateMedia', required: false, type: Array })
68
+ @ApiQuery({ name: 'filters', required: false, type: Array })
69
+ @Get()
70
+ async findMany(@Query() query: any) {
71
+ return this.service.find(query);
72
+ }
73
+
74
+ @ApiBearerAuth("jwt")
75
+ @Get(':id')
76
+ async findOne(@Param('id') id: string, @Query() query: any) {
77
+ return this.service.findOne(+id, query);
78
+ }
79
+
80
+ @ApiBearerAuth("jwt")
81
+ @Delete('/bulk')
82
+ async deleteMany(@Body() ids: number[]) {
83
+ return this.service.deleteMany(ids);
84
+ }
85
+
86
+ @ApiBearerAuth("jwt")
87
+ @Delete(':id')
88
+ async delete(@Param('id') id: number) {
89
+ return this.service.delete(id);
90
+ }
91
+
92
+
93
+ }
@@ -1,49 +1,70 @@
1
- import { Body, Controller, Delete, Get, Param, Patch, Post, Query } from '@nestjs/common';
1
+ import { Body, Controller, Delete, Get, Param, Patch, Post, Put, Query, UploadedFiles, UseInterceptors } from '@nestjs/common';
2
2
  import { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';
3
3
  import { PaginationQueryDto } from 'src/dtos/pagination-query.dto';
4
4
  import { Roles } from 'src/decorators/roles.decorator';
5
5
  import { SmsTemplateService } from '../services/sms-template.service';
6
6
  import { CreateSmsTemplateDto } from '../dtos/create-sms-template.dto';
7
7
  import { UpdateSmsTemplateDto } from '../dtos/update-sms-template.dto';
8
+ import { Public } from 'src/decorators/public.decorator';
9
+ import { AnyFilesInterceptor } from '@nestjs/platform-express';
8
10
 
9
11
 
10
- @Controller('sms-templates')
12
+ @Controller('sms-template')
11
13
  @ApiTags("Common")
12
14
  export class SmsTemplateController {
13
- constructor(private readonly smsTemplateService: SmsTemplateService) { }
15
+ constructor(private readonly service: SmsTemplateService) { }
14
16
 
15
- @ApiBearerAuth("jwt")
16
- @Roles('Admin')
17
- @Post()
18
- create(@Body() dto: CreateSmsTemplateDto) {
19
- return this.smsTemplateService.create(dto);
20
- }
21
-
22
- @ApiBearerAuth("jwt")
23
- @Roles('Admin')
24
- @ApiQuery({ name: 'limit', required: false, type: Number })
25
- @ApiQuery({ name: 'offset', required: false, type: Number })
26
- @Get()
27
- findAll(@Query() paginationQuery: PaginationQueryDto) {
28
- return this.smsTemplateService.findAll(paginationQuery);
29
- }
30
-
31
- @ApiBearerAuth("jwt")
32
- @Roles('Admin')
33
- @Get(':id')
34
- findOne(@Param('id') id: string) {
35
- return this.smsTemplateService.findOne(+id);
36
- }
37
-
38
- @ApiBearerAuth("jwt")
39
- @Patch(':id')
40
- update(@Param('id') id: string, @Body() dto: UpdateSmsTemplateDto) {
41
- return this.smsTemplateService.update(+id, dto);
42
- }
43
-
44
- @ApiBearerAuth("jwt")
45
- @Delete(':id')
46
- async delete(@Param('id') id: number) {
47
- return this.smsTemplateService.remove(+id);
48
- }
17
+ @Public()
18
+ @Post()
19
+ @UseInterceptors(AnyFilesInterceptor())
20
+ create(@Body() createDto: CreateSmsTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {
21
+ return this.service.create(createDto, files);
22
+ }
23
+
24
+ @Public()
25
+ @Post('/bulk')
26
+ @UseInterceptors(AnyFilesInterceptor())
27
+ insertMany(@Body() createDtos: CreateSmsTemplateDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {
28
+ return this.service.insertMany(createDtos, filesArray);
29
+ }
30
+
31
+ @Public()
32
+ @Put(':id')
33
+ @UseInterceptors(AnyFilesInterceptor())
34
+ update(@Param('id') id: number, @Body() updateDto: UpdateSmsTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {
35
+ return this.service.update(id, updateDto, files);
36
+ }
37
+
38
+ @Public()
39
+ @ApiQuery({ name: 'showSoftDeleted', required: false, type: Boolean })
40
+ @ApiQuery({ name: 'showOnlySoftDeleted', required: false, type: Boolean })
41
+ @ApiQuery({ name: 'limit', required: false, type: Number })
42
+ @ApiQuery({ name: 'offset', required: false, type: Number })
43
+ @ApiQuery({ name: 'fields', required: false, type: Array })
44
+ @ApiQuery({ name: 'sort', required: false, type: Array })
45
+ @ApiQuery({ name: 'groupBy', required: false, type: Array })
46
+ @ApiQuery({ name: 'populate', required: false, type: Array })
47
+ @ApiQuery({ name: 'populateMedia', required: false, type: Array })
48
+ @ApiQuery({ name: 'filters', required: false, type: Array })
49
+ @Get()
50
+ async findMany(@Query() query: any) {
51
+ return this.service.find(query);
52
+ }
53
+
54
+ @Public()
55
+ @Get(':id')
56
+ async findOne(@Param('id') id: string, @Query() query: any) {
57
+ return this.service.findOne(+id, query);
58
+ }
59
+
60
+ @Delete('/bulk')
61
+ async deleteMany(@Body() ids: number[]) {
62
+ return this.service.deleteMany(ids);
63
+ }
64
+
65
+ @Public()
66
+ @Delete(':id')
67
+ async delete(@Param('id') id: number) {
68
+ return this.service.delete(id);
69
+ }
49
70
  }
@@ -5,6 +5,8 @@ import { UserViewMetadataService } from '../services/user-view-metadata.service'
5
5
  import { CreateUserViewMetadataDto } from '../dtos/create-user-view-metadata.dto';
6
6
  import { UpdateUserViewMetadataDto } from '../dtos/update-user-view-metadata.dto';
7
7
  import { UpsertUserViewMetadataDto } from 'src/dtos/upsert-user-view-metadata.dto';
8
+ import { ActiveUser } from 'src/decorators/active-user.decorator';
9
+ import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
8
10
 
9
11
  enum ShowSoftDeleted {
10
12
  INCLUSIVE = "inclusive",
@@ -92,8 +94,8 @@ export class UserViewMetadataController {
92
94
 
93
95
  @ApiBearerAuth("jwt")
94
96
  @Post('/upsert')
95
- async upsert(@Body() query: UpsertUserViewMetadataDto) {
96
- return this.service.upsert(query);
97
+ async upsert(@Body() query: UpsertUserViewMetadataDto, @ActiveUser() activeUser: ActiveUserData) {
98
+ return this.service.upsert(query, activeUser);
97
99
  }
98
100
 
99
101
  }
@@ -6,6 +6,8 @@ import { CreateViewMetadataDto } from '../dtos/create-view-metadata.dto';
6
6
  import { UpdateViewMetadataDto } from '../dtos/update-view-metadata.dto';
7
7
  import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
8
8
  import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
9
+ import { ActiveUser } from 'src/decorators/active-user.decorator';
10
+ import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
9
11
 
10
12
  @ApiTags('App')
11
13
  @Controller('view-metadata') //FIXME: Change this to the model plural name
@@ -15,23 +17,23 @@ export class ViewMetadataController {
15
17
  @ApiBearerAuth("jwt")
16
18
  @Post()
17
19
  @UseInterceptors(AnyFilesInterceptor())
18
- create(@Body() createDto: CreateViewMetadataDto, @UploadedFiles() files: Array<Express.Multer.File>,@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
19
- return this.service.create(createDto, files,solidRequestContext);
20
+ create(@Body() createDto: CreateViewMetadataDto, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
21
+ return this.service.create(createDto, files, solidRequestContext);
20
22
  }
21
23
 
22
24
  @ApiBearerAuth("jwt")
23
25
  @Post('/bulk')
24
26
  @UseInterceptors(AnyFilesInterceptor())
25
- insertMany(@Body() createDtos: CreateViewMetadataDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = [],@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
26
- return this.service.insertMany(createDtos, filesArray,solidRequestContext);
27
+ insertMany(@Body() createDtos: CreateViewMetadataDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = [], @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
28
+ return this.service.insertMany(createDtos, filesArray, solidRequestContext);
27
29
  }
28
30
 
29
31
 
30
32
  @ApiBearerAuth("jwt")
31
33
  @Put(':id')
32
34
  @UseInterceptors(AnyFilesInterceptor())
33
- update(@Param('id') id: number, @Body() updateDto: UpdateViewMetadataDto, @UploadedFiles() files: Array<Express.Multer.File>,@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
34
- return this.service.update(id, updateDto, files,false,solidRequestContext);
35
+ update(@Param('id') id: number, @Body() updateDto: UpdateViewMetadataDto, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
36
+ return this.service.update(id, updateDto, files, false, solidRequestContext);
35
37
  }
36
38
 
37
39
  @ApiBearerAuth("jwt")
@@ -46,31 +48,31 @@ export class ViewMetadataController {
46
48
  @ApiQuery({ name: 'populateMedia', required: false, type: Array })
47
49
  @ApiQuery({ name: 'filters', required: false, type: Array })
48
50
  @Get()
49
- async findMany(@Query() query: any,@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
50
- return this.service.find(query,solidRequestContext);
51
+ async findMany(@Query() query: any, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
52
+ return this.service.find(query, solidRequestContext);
51
53
  }
52
54
 
53
55
  @ApiBearerAuth("jwt")
54
56
  @Get(':id')
55
- async findOne(@Param('id') id: string, @Query() query: any,@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
56
- return this.service.findOne(+id, query,solidRequestContext);
57
+ async findOne(@Param('id') id: string, @Query() query: any, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
58
+ return this.service.findOne(+id, query, solidRequestContext);
57
59
  }
58
60
 
59
61
  @Delete('/bulk')
60
- async deleteMany(@Body() ids: number[],@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
61
- return this.service.deleteMany(ids,solidRequestContext);
62
+ async deleteMany(@Body() ids: number[], @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
63
+ return this.service.deleteMany(ids, solidRequestContext);
62
64
  }
63
65
 
64
66
  @ApiBearerAuth("jwt")
65
67
  @Delete(':id')
66
- async delete(@Param('id') id: number,@SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
67
- return this.service.delete(id,solidRequestContext);
68
+ async delete(@Param('id') id: number, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
69
+ return this.service.delete(id, solidRequestContext);
68
70
  }
69
71
 
70
72
  @ApiBearerAuth("jwt")
71
73
  @Get('/custom/layout')
72
- getLayout(@Query() query: any) {
73
- return this.service.getLayout(query);
74
+ getLayout(@Query() query: any, @ActiveUser() activeUser: ActiveUserData) {
75
+ return this.service.getLayout(query, activeUser);
74
76
  }
75
77
 
76
78
  }
@@ -1,26 +1,28 @@
1
- import { IsInt, IsNotEmpty, IsOptional, IsString } from "class-validator";
1
+ import { IsInt, IsNotEmpty, IsOptional, IsString, Matches } from "class-validator";
2
+ import { ApiProperty } from '@nestjs/swagger';
2
3
 
3
4
  export class CreateEmailAttachmentDto {
4
5
  @IsNotEmpty()
6
+ @Matches(/[a-z]+(-[a-z]+)*/)
5
7
  @IsString()
8
+ @ApiProperty()
6
9
  name: string;
7
-
8
10
  @IsNotEmpty()
9
11
  @IsString()
12
+ @ApiProperty()
10
13
  displayName: string;
11
-
12
14
  @IsOptional()
13
15
  @IsString()
16
+ @ApiProperty()
14
17
  relativePath: string;
15
-
16
18
  @IsOptional()
17
19
  @IsString()
20
+ @ApiProperty()
18
21
  url: string;
19
-
20
22
  @IsOptional()
21
23
  @IsString()
24
+ @ApiProperty()
22
25
  template: string;
23
-
24
26
  @IsOptional()
25
27
  @IsInt()
26
28
  emailTemplateId: number;
@@ -1,30 +1,41 @@
1
- import { IsArray, IsBoolean, IsEmail, IsNotEmpty, IsOptional, MaxLength, MinLength, ValidateNested } from 'class-validator';
1
+ import { IsArray, IsBoolean, IsEmail, IsNotEmpty, IsOptional, MaxLength, MinLength, ValidateNested, Matches, IsString } from 'class-validator';
2
2
  import { CreateEmailAttachmentDto } from './create-email-attachment.dto';
3
3
  import { Type } from 'class-transformer';
4
+ import { ApiProperty } from '@nestjs/swagger';
4
5
 
5
6
  export class CreateEmailTemplateDto {
6
7
  @IsNotEmpty()
8
+ @Matches(/[a-z]+(-[a-z]+)*/)
9
+ @IsString()
10
+ @ApiProperty()
7
11
  name: string;
8
-
9
12
  @IsNotEmpty()
13
+ @IsString()
14
+ @ApiProperty()
10
15
  displayName: string;
11
-
12
16
  @IsNotEmpty()
17
+ @IsString()
18
+ @ApiProperty()
13
19
  body: string;
14
-
15
- @IsNotEmpty()
16
- @MaxLength(128)
17
- subject: string;
18
-
19
20
  @IsNotEmpty()
21
+ @IsString()
22
+ @ApiProperty()
23
+ subject: string = "{}";
24
+ @IsOptional()
25
+ @IsString()
26
+ @ApiProperty()
20
27
  description: string;
21
-
28
+ @IsOptional()
22
29
  @IsBoolean()
23
- active: boolean;
24
-
30
+ @ApiProperty()
31
+ active: boolean = true;
25
32
  @IsOptional()
26
33
  @IsArray()
27
34
  @ValidateNested({ each: true })
28
35
  @Type(() => CreateEmailAttachmentDto)
29
36
  attachments: CreateEmailAttachmentDto[];
37
+ @IsOptional()
38
+ @IsString()
39
+ @ApiProperty()
40
+ type: string;
30
41
  }
@@ -94,4 +94,18 @@ export class CreateModelMetadataDto {
94
94
  @ApiProperty({ description: 'System models are not included in the code generation, the assumption being that system models have manually written code.', })
95
95
  @IsBoolean()
96
96
  isSystem: boolean;
97
+
98
+ @ApiProperty({ description: 'Child models are not included in the code generation, the assumption being that child models have manually written code.', })
99
+ @IsBoolean()
100
+ isChild: boolean;
101
+
102
+ @ApiProperty({ description: 'Parent model id' })
103
+ @IsInt()
104
+ @IsOptional()
105
+ parentModelId: number;
106
+
107
+ @ApiProperty({ description: 'Parent model user key' })
108
+ @IsString()
109
+ @IsOptional()
110
+ parentModelUserKey: string;
97
111
  }
@@ -0,0 +1,34 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsString } from 'class-validator';
3
+ import { IsNotEmpty, IsInt, IsOptional, IsJSON } from 'class-validator';
4
+
5
+ export class CreateSecurityRuleDto {
6
+ @IsNotEmpty()
7
+ @IsString()
8
+ @ApiProperty()
9
+ name: string;
10
+ @IsNotEmpty()
11
+ @IsString()
12
+ @ApiProperty()
13
+ description: string;
14
+ @IsOptional()
15
+ @IsInt()
16
+ @ApiProperty()
17
+ roleId: number;
18
+ @IsString()
19
+ @IsOptional()
20
+ @ApiProperty()
21
+ roleUserKey: string;
22
+ @IsOptional()
23
+ @IsInt()
24
+ @ApiProperty()
25
+ modelMetadataId: number;
26
+ @IsString()
27
+ @IsOptional()
28
+ @ApiProperty()
29
+ modelMetadataUserKey: string;
30
+ @IsNotEmpty()
31
+ @IsJSON()
32
+ @ApiProperty()
33
+ securityRuleConfig: any;
34
+ }
@@ -1,20 +1,34 @@
1
- import { IsEmail, IsNotEmpty, IsOptional, MaxLength, MinLength } from 'class-validator';
1
+ import { IsEmail, IsNotEmpty, IsOptional, MaxLength, MinLength, IsString, Matches, IsBoolean } from 'class-validator';
2
+ import { ApiProperty } from '@nestjs/swagger';
2
3
 
3
4
  export class CreateSmsTemplateDto {
4
5
  @IsNotEmpty()
6
+ @Matches(/[a-z]+(-[a-z]+)*/)
7
+ @IsString()
8
+ @ApiProperty()
5
9
  name: string;
6
-
7
10
  @IsNotEmpty()
11
+ @IsString()
12
+ @ApiProperty()
8
13
  displayName: string;
9
-
10
14
  @IsOptional()
15
+ @IsString()
16
+ @ApiProperty()
11
17
  body: string;
12
-
13
18
  @IsOptional()
19
+ @IsString()
20
+ @ApiProperty()
14
21
  smsProviderTemplateId: string;
15
-
16
- @IsNotEmpty()
22
+ @IsOptional()
23
+ @IsString()
24
+ @ApiProperty()
17
25
  description: string;
18
-
19
- active: boolean;
26
+ @IsOptional()
27
+ @IsBoolean()
28
+ @ApiProperty()
29
+ active: boolean = true;
30
+ @IsOptional()
31
+ @IsString()
32
+ @ApiProperty()
33
+ type: string;
20
34
  }
@@ -0,0 +1,5 @@
1
+ import { BasicFilterDto } from "./basic-filters.dto";
2
+
3
+ export interface SecurityRuleConfig {
4
+ filters: Record<string, any>;
5
+ }
@@ -0,0 +1,36 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsString } from 'class-validator';
3
+ import { Matches } from 'class-validator';
4
+ import { IsOptional } from 'class-validator';
5
+ import { IsNotEmpty } from 'class-validator';
6
+ export class UpdateEmailAttachmentDto {
7
+
8
+
9
+ @IsNotEmpty()
10
+ @IsOptional()
11
+ @Matches(/[a-z]+(-[a-z]+)*/)
12
+ @IsString()
13
+ @ApiProperty()
14
+ name: string;
15
+
16
+ @IsNotEmpty()
17
+ @IsOptional()
18
+ @IsString()
19
+ @ApiProperty()
20
+ displayName: string;
21
+
22
+ @IsOptional()
23
+ @IsString()
24
+ @ApiProperty()
25
+ relativePath: string;
26
+
27
+ @IsOptional()
28
+ @IsString()
29
+ @ApiProperty()
30
+ url: string;
31
+
32
+ @IsOptional()
33
+ @IsString()
34
+ @ApiProperty()
35
+ template: string;
36
+ }