@solidstarters/solid-core 1.2.46 → 1.2.48

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 (163) hide show
  1. package/dist/controllers/authentication.controller.d.ts +1 -0
  2. package/dist/controllers/authentication.controller.d.ts.map +1 -1
  3. package/dist/controllers/email-template.controller.d.ts +25 -7
  4. package/dist/controllers/email-template.controller.d.ts.map +1 -1
  5. package/dist/controllers/email-template.controller.js +70 -36
  6. package/dist/controllers/email-template.controller.js.map +1 -1
  7. package/dist/controllers/google-authentication.controller.d.ts +0 -1
  8. package/dist/controllers/google-authentication.controller.d.ts.map +1 -1
  9. package/dist/controllers/sms-template.controller.d.ts +25 -7
  10. package/dist/controllers/sms-template.controller.d.ts.map +1 -1
  11. package/dist/controllers/sms-template.controller.js +71 -36
  12. package/dist/controllers/sms-template.controller.js.map +1 -1
  13. package/dist/controllers/user-view-metadata.controller.d.ts +44 -0
  14. package/dist/controllers/user-view-metadata.controller.d.ts.map +1 -0
  15. package/dist/controllers/user-view-metadata.controller.js +194 -0
  16. package/dist/controllers/user-view-metadata.controller.js.map +1 -0
  17. package/dist/controllers/view-metadata.controller.d.ts +2 -1
  18. package/dist/controllers/view-metadata.controller.d.ts.map +1 -1
  19. package/dist/controllers/view-metadata.controller.js +5 -3
  20. package/dist/controllers/view-metadata.controller.js.map +1 -1
  21. package/dist/dtos/create-email-attachment.dto.d.ts.map +1 -1
  22. package/dist/dtos/create-email-attachment.dto.js +8 -1
  23. package/dist/dtos/create-email-attachment.dto.js.map +1 -1
  24. package/dist/dtos/create-email-template.dto.d.ts +1 -0
  25. package/dist/dtos/create-email-template.dto.d.ts.map +1 -1
  26. package/dist/dtos/create-email-template.dto.js +26 -3
  27. package/dist/dtos/create-email-template.dto.js.map +1 -1
  28. package/dist/dtos/create-sms-template.dto.d.ts +1 -0
  29. package/dist/dtos/create-sms-template.dto.d.ts.map +1 -1
  30. package/dist/dtos/create-sms-template.dto.js +29 -2
  31. package/dist/dtos/create-sms-template.dto.js.map +1 -1
  32. package/dist/dtos/create-user-view-metadata.dto.d.ts +8 -0
  33. package/dist/dtos/create-user-view-metadata.dto.d.ts.map +1 -0
  34. package/dist/dtos/create-user-view-metadata.dto.js +57 -0
  35. package/dist/dtos/create-user-view-metadata.dto.js.map +1 -0
  36. package/dist/dtos/create-user.dto.d.ts +8 -0
  37. package/dist/dtos/create-user.dto.d.ts.map +1 -1
  38. package/dist/dtos/create-user.dto.js +78 -5
  39. package/dist/dtos/create-user.dto.js.map +1 -1
  40. package/dist/dtos/create-view-metadata.dto.d.ts +4 -0
  41. package/dist/dtos/create-view-metadata.dto.d.ts.map +1 -1
  42. package/dist/dtos/create-view-metadata.dto.js +40 -3
  43. package/dist/dtos/create-view-metadata.dto.js.map +1 -1
  44. package/dist/dtos/selection-dynamic-query.dto.d.ts +1 -1
  45. package/dist/dtos/selection-dynamic-query.dto.d.ts.map +1 -1
  46. package/dist/dtos/selection-dynamic-query.dto.js +2 -3
  47. package/dist/dtos/selection-dynamic-query.dto.js.map +1 -1
  48. package/dist/dtos/update-email-attachment.dto.d.ts +8 -0
  49. package/dist/dtos/update-email-attachment.dto.d.ts.map +1 -0
  50. package/dist/dtos/update-email-attachment.dto.js +58 -0
  51. package/dist/dtos/update-email-attachment.dto.js.map +1 -0
  52. package/dist/dtos/update-email-template.dto.d.ts +7 -0
  53. package/dist/dtos/update-email-template.dto.d.ts.map +1 -1
  54. package/dist/dtos/update-email-template.dto.js +61 -1
  55. package/dist/dtos/update-email-template.dto.js.map +1 -1
  56. package/dist/dtos/update-sms-template.dto.d.ts +7 -0
  57. package/dist/dtos/update-sms-template.dto.d.ts.map +1 -1
  58. package/dist/dtos/update-sms-template.dto.js +57 -1
  59. package/dist/dtos/update-sms-template.dto.js.map +1 -1
  60. package/dist/dtos/update-user-view-metadata.dto.d.ts +9 -0
  61. package/dist/dtos/update-user-view-metadata.dto.d.ts.map +1 -0
  62. package/dist/dtos/update-user-view-metadata.dto.js +57 -0
  63. package/dist/dtos/update-user-view-metadata.dto.js.map +1 -0
  64. package/dist/dtos/update-user.dto.d.ts +8 -0
  65. package/dist/dtos/update-user.dto.d.ts.map +1 -1
  66. package/dist/dtos/update-user.dto.js +78 -7
  67. package/dist/dtos/update-user.dto.js.map +1 -1
  68. package/dist/dtos/update-view-metadata.dto.d.ts +4 -0
  69. package/dist/dtos/update-view-metadata.dto.d.ts.map +1 -1
  70. package/dist/dtos/update-view-metadata.dto.js +40 -10
  71. package/dist/dtos/update-view-metadata.dto.js.map +1 -1
  72. package/dist/dtos/upsert-user-view-metadata.dto.d.ts +6 -0
  73. package/dist/dtos/upsert-user-view-metadata.dto.d.ts.map +1 -0
  74. package/dist/dtos/upsert-user-view-metadata.dto.js +40 -0
  75. package/dist/dtos/upsert-user-view-metadata.dto.js.map +1 -0
  76. package/dist/entities/email-attachment.entity.d.ts.map +1 -1
  77. package/dist/entities/email-attachment.entity.js +6 -5
  78. package/dist/entities/email-attachment.entity.js.map +1 -1
  79. package/dist/entities/email-template.entity.d.ts +1 -0
  80. package/dist/entities/email-template.entity.d.ts.map +1 -1
  81. package/dist/entities/email-template.entity.js +17 -7
  82. package/dist/entities/email-template.entity.js.map +1 -1
  83. package/dist/entities/sms-template.entity.d.ts +1 -0
  84. package/dist/entities/sms-template.entity.d.ts.map +1 -1
  85. package/dist/entities/sms-template.entity.js +16 -7
  86. package/dist/entities/sms-template.entity.js.map +1 -1
  87. package/dist/entities/user-view-metadata.entity.d.ts +9 -0
  88. package/dist/entities/user-view-metadata.entity.d.ts.map +1 -0
  89. package/dist/entities/user-view-metadata.entity.js +47 -0
  90. package/dist/entities/user-view-metadata.entity.js.map +1 -0
  91. package/dist/entities/user.entity.d.ts +2 -0
  92. package/dist/entities/user.entity.d.ts.map +1 -1
  93. package/dist/entities/user.entity.js +11 -9
  94. package/dist/entities/user.entity.js.map +1 -1
  95. package/dist/entities/view-metadata.entity.d.ts +2 -0
  96. package/dist/entities/view-metadata.entity.d.ts.map +1 -1
  97. package/dist/entities/view-metadata.entity.js +15 -5
  98. package/dist/entities/view-metadata.entity.js.map +1 -1
  99. package/dist/index.d.ts +1 -0
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +1 -0
  102. package/dist/index.js.map +1 -1
  103. package/dist/interfaces.d.ts +1 -1
  104. package/dist/interfaces.d.ts.map +1 -1
  105. package/dist/seeders/seed-data/solid-core-metadata.json +1133 -224
  106. package/dist/services/authentication.service.d.ts +1 -1
  107. package/dist/services/authentication.service.d.ts.map +1 -1
  108. package/dist/services/authentication.service.js +0 -1
  109. package/dist/services/authentication.service.js.map +1 -1
  110. package/dist/services/email-template.service.d.ts +22 -12
  111. package/dist/services/email-template.service.d.ts.map +1 -1
  112. package/dist/services/email-template.service.js +37 -46
  113. package/dist/services/email-template.service.js.map +1 -1
  114. package/dist/services/sms-template.service.d.ts +23 -13
  115. package/dist/services/sms-template.service.d.ts.map +1 -1
  116. package/dist/services/sms-template.service.js +41 -49
  117. package/dist/services/sms-template.service.js.map +1 -1
  118. package/dist/services/user-view-metadata.service.d.ts +25 -0
  119. package/dist/services/user-view-metadata.service.d.ts.map +1 -0
  120. package/dist/services/user-view-metadata.service.js +73 -0
  121. package/dist/services/user-view-metadata.service.js.map +1 -0
  122. package/dist/services/view-metadata.service.d.ts +4 -2
  123. package/dist/services/view-metadata.service.d.ts.map +1 -1
  124. package/dist/services/view-metadata.service.js +24 -7
  125. package/dist/services/view-metadata.service.js.map +1 -1
  126. package/dist/solid-core.module.d.ts.map +1 -1
  127. package/dist/solid-core.module.js +7 -1
  128. package/dist/solid-core.module.js.map +1 -1
  129. package/dist/tsconfig.tsbuildinfo +1 -1
  130. package/package.json +8 -6
  131. package/src/controllers/email-template.controller.ts +57 -38
  132. package/src/controllers/sms-template.controller.ts +58 -37
  133. package/src/controllers/user-view-metadata.controller.ts +101 -0
  134. package/src/controllers/view-metadata.controller.ts +18 -16
  135. package/src/dtos/create-email-attachment.dto.ts +8 -6
  136. package/src/dtos/create-email-template.dto.ts +22 -11
  137. package/src/dtos/create-sms-template.dto.ts +22 -8
  138. package/src/dtos/create-user-view-metadata.dto.ts +27 -0
  139. package/src/dtos/create-user.dto.ts +67 -33
  140. package/src/dtos/create-view-metadata.dto.ts +33 -12
  141. package/src/dtos/selection-dynamic-query.dto.ts +1 -1
  142. package/src/dtos/update-email-attachment.dto.ts +36 -0
  143. package/src/dtos/update-email-template.dto.ts +40 -2
  144. package/src/dtos/update-sms-template.dto.ts +42 -2
  145. package/src/dtos/update-user-view-metadata.dto.ts +28 -0
  146. package/src/dtos/update-user.dto.ts +67 -36
  147. package/src/dtos/update-view-metadata.dto.ts +35 -19
  148. package/src/dtos/upsert-user-view-metadata.dto.ts +17 -0
  149. package/src/entities/email-attachment.entity.ts +6 -10
  150. package/src/entities/email-template.entity.ts +12 -16
  151. package/src/entities/sms-template.entity.ts +11 -14
  152. package/src/entities/user-view-metadata.entity.ts +18 -0
  153. package/src/entities/user.entity.ts +12 -40
  154. package/src/entities/view-metadata.entity.ts +12 -13
  155. package/src/index.ts +1 -0
  156. package/src/interfaces.ts +1 -1
  157. package/src/seeders/seed-data/solid-core-metadata.json +1265 -366
  158. package/src/services/authentication.service.ts +1 -1
  159. package/src/services/email-template.service.ts +27 -54
  160. package/src/services/sms-template.service.ts +32 -55
  161. package/src/services/user-view-metadata.service.ts +55 -0
  162. package/src/services/view-metadata.service.ts +23 -2
  163. package/src/solid-core.module.ts +7 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidstarters/solid-core",
3
- "version": "1.2.46",
3
+ "version": "1.2.48",
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",
@@ -50,13 +50,13 @@
50
50
  "luxon": "^3.4.4",
51
51
  "mailgen": "^2.0.28",
52
52
  "mongoose": "^8.7.0",
53
+ "mysql2": "^3.13.0",
53
54
  "nodemailer": "^6.9.13",
54
55
  "passport": "^0.7.0",
55
56
  "passport-google-oauth2": "^0.2.0",
56
57
  "passport-jwt": "^4.0.1",
57
58
  "passport-local": "^1.0.0",
58
59
  "pg": "^8.11.3",
59
- "mysql2": "^3.13.0",
60
60
  "pluralize": "^8.0.0",
61
61
  "puppeteer": "^23.2.0",
62
62
  "reflect-metadata": "^0.1.13",
@@ -87,6 +87,8 @@
87
87
  "winston": "^3.17.0"
88
88
  },
89
89
  "devDependencies": {
90
+ "@angular-devkit/schematics": "^19.2.6",
91
+ "@angular-devkit/schematics-cli": "^19.2.6",
90
92
  "@nestjs/axios": "^3.0.2",
91
93
  "@nestjs/cache-manager": "^2.2.2",
92
94
  "@nestjs/cli": "^10.0.0",
@@ -103,8 +105,7 @@
103
105
  "@nestjs/swagger": "^7.2.0",
104
106
  "@nestjs/testing": "^10.0.0",
105
107
  "@nestjs/typeorm": "^10.0.1",
106
- "nest-commander": "^3.12.5",
107
- "nest-winston": "^1.9.7",
108
+ "@solidstarters/solid-code-builder": "^1.0.2",
108
109
  "@types/express": "^4.17.17",
109
110
  "@types/hapi__joi": "^17.1.12",
110
111
  "@types/jest": "^29.5.2",
@@ -126,6 +127,8 @@
126
127
  "eslint-plugin-prettier": "^5.0.0",
127
128
  "jest": "^29.5.0",
128
129
  "nest-cli": "^0.0.5",
130
+ "nest-commander": "^3.12.5",
131
+ "nest-winston": "^1.9.7",
129
132
  "prettier": "^3.0.0",
130
133
  "source-map-support": "^0.5.21",
131
134
  "supertest": "^6.3.3",
@@ -136,8 +139,7 @@
136
139
  "typeorm": "^0.3.20",
137
140
  "typeorm-naming-strategies": "^4.1.0",
138
141
  "typescript": "^5.1.3",
139
- "winston": "^3.17.0",
140
- "@solidstarters/solid-code-builder": "^1.0.2"
142
+ "winston": "^3.17.0"
141
143
  },
142
144
  "jest": {
143
145
  "moduleFileExtensions": [
@@ -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')
@@ -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
  }
@@ -0,0 +1,101 @@
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 { UserViewMetadataService } from '../services/user-view-metadata.service';
5
+ import { CreateUserViewMetadataDto } from '../dtos/create-user-view-metadata.dto';
6
+ import { UpdateUserViewMetadataDto } from '../dtos/update-user-view-metadata.dto';
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';
10
+
11
+ enum ShowSoftDeleted {
12
+ INCLUSIVE = "inclusive",
13
+ EXCLUSIVE = "exclusive",
14
+ }
15
+
16
+ @ApiTags('Solid Core')
17
+ @Controller('user-view-metadata')
18
+ export class UserViewMetadataController {
19
+ constructor(private readonly service: UserViewMetadataService) { }
20
+
21
+ @ApiBearerAuth("jwt")
22
+ @Post()
23
+ @UseInterceptors(AnyFilesInterceptor())
24
+ create(@Body() createDto: CreateUserViewMetadataDto, @UploadedFiles() files: Array<Express.Multer.File>) {
25
+ return this.service.create(createDto, files);
26
+ }
27
+
28
+ @ApiBearerAuth("jwt")
29
+ @Post('/bulk')
30
+ @UseInterceptors(AnyFilesInterceptor())
31
+ insertMany(@Body() createDtos: CreateUserViewMetadataDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {
32
+ return this.service.insertMany(createDtos, filesArray);
33
+ }
34
+
35
+
36
+ @ApiBearerAuth("jwt")
37
+ @Put(':id')
38
+ @UseInterceptors(AnyFilesInterceptor())
39
+ update(@Param('id') id: number, @Body() updateDto: UpdateUserViewMetadataDto, @UploadedFiles() files: Array<Express.Multer.File>) {
40
+ return this.service.update(id, updateDto, files);
41
+ }
42
+
43
+ @ApiBearerAuth("jwt")
44
+ @Patch(':id')
45
+ @UseInterceptors(AnyFilesInterceptor())
46
+ partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateUserViewMetadataDto, @UploadedFiles() files: Array<Express.Multer.File>) {
47
+ return this.service.update(id, updateDto, files, true);
48
+ }
49
+
50
+ @ApiBearerAuth("jwt")
51
+ @Post('/bulk-recover')
52
+ async recoverMany(@Body() ids: number[]) {
53
+ return this.service.recoverMany(ids);
54
+ }
55
+
56
+ @ApiBearerAuth("jwt")
57
+ @Get('/recover/:id')
58
+ async recover(@Param('id') id: number) {
59
+ return this.service.recover(id);
60
+ }
61
+
62
+ @ApiBearerAuth("jwt")
63
+ @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })
64
+ @ApiQuery({ name: 'limit', required: false, type: Number })
65
+ @ApiQuery({ name: 'offset', required: false, type: Number })
66
+ @ApiQuery({ name: 'fields', required: false, type: Array })
67
+ @ApiQuery({ name: 'sort', required: false, type: Array })
68
+ @ApiQuery({ name: 'groupBy', required: false, type: Array })
69
+ @ApiQuery({ name: 'populate', required: false, type: Array })
70
+ @ApiQuery({ name: 'populateMedia', required: false, type: Array })
71
+ @ApiQuery({ name: 'filters', required: false, type: Array })
72
+ @Get()
73
+ async findMany(@Query() query: any) {
74
+ return this.service.find(query);
75
+ }
76
+
77
+ @ApiBearerAuth("jwt")
78
+ @Get(':id')
79
+ async findOne(@Param('id') id: string, @Query() query: any) {
80
+ return this.service.findOne(+id, query);
81
+ }
82
+
83
+ @ApiBearerAuth("jwt")
84
+ @Delete('/bulk')
85
+ async deleteMany(@Body() ids: number[]) {
86
+ return this.service.deleteMany(ids);
87
+ }
88
+
89
+ @ApiBearerAuth("jwt")
90
+ @Delete(':id')
91
+ async delete(@Param('id') id: number) {
92
+ return this.service.delete(id);
93
+ }
94
+
95
+ @ApiBearerAuth("jwt")
96
+ @Post('/upsert')
97
+ async upsert(@Body() query: UpsertUserViewMetadataDto, @ActiveUser() activeUser: ActiveUserData) {
98
+ return this.service.upsert(query, activeUser);
99
+ }
100
+
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
  }
@@ -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,27 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsInt } from 'class-validator';
3
+ import { IsOptional } from 'class-validator';
4
+ import { IsString, IsJSON } from 'class-validator';
5
+
6
+ export class CreateUserViewMetadataDto {
7
+ @IsOptional()
8
+ @IsInt()
9
+ @ApiProperty()
10
+ userId: number;
11
+ @IsString()
12
+ @IsOptional()
13
+ @ApiProperty()
14
+ userUserKey: string;
15
+ @IsOptional()
16
+ @IsJSON()
17
+ @ApiProperty()
18
+ layout: any = "{}";
19
+ @IsOptional()
20
+ @IsInt()
21
+ @ApiProperty()
22
+ viewMetadataId: number;
23
+ @IsString()
24
+ @IsOptional()
25
+ @ApiProperty()
26
+ viewMetadataUserKey: string;
27
+ }