@solidstarters/solid-core 1.2.92 → 1.2.95

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 (155) hide show
  1. package/# Password field.md +8 -0
  2. package/dist/controllers/import-transaction.controller.d.ts +2 -1
  3. package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
  4. package/dist/controllers/import-transaction.controller.js +16 -4
  5. package/dist/controllers/import-transaction.controller.js.map +1 -1
  6. package/dist/controllers/locale.controller.d.ts +41 -0
  7. package/dist/controllers/locale.controller.d.ts.map +1 -0
  8. package/dist/controllers/locale.controller.js +179 -0
  9. package/dist/controllers/locale.controller.js.map +1 -0
  10. package/dist/controllers/view-metadata.controller.d.ts +1 -0
  11. package/dist/controllers/view-metadata.controller.d.ts.map +1 -1
  12. package/dist/dtos/basic-filters.dto.d.ts +2 -0
  13. package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
  14. package/dist/dtos/basic-filters.dto.js +11 -1
  15. package/dist/dtos/basic-filters.dto.js.map +1 -1
  16. package/dist/dtos/create-locale.dto.d.ts +6 -0
  17. package/dist/dtos/create-locale.dto.d.ts.map +1 -0
  18. package/dist/dtos/create-locale.dto.js +43 -0
  19. package/dist/dtos/create-locale.dto.js.map +1 -0
  20. package/dist/dtos/create-menu-item-metadata.dto.d.ts +2 -1
  21. package/dist/dtos/create-menu-item-metadata.dto.d.ts.map +1 -1
  22. package/dist/dtos/create-menu-item-metadata.dto.js +22 -3
  23. package/dist/dtos/create-menu-item-metadata.dto.js.map +1 -1
  24. package/dist/dtos/create-model-metadata.dto.d.ts +1 -0
  25. package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
  26. package/dist/dtos/create-model-metadata.dto.js +7 -2
  27. package/dist/dtos/create-model-metadata.dto.js.map +1 -1
  28. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  29. package/dist/dtos/create-role-metadata.dto.js +11 -0
  30. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  31. package/dist/dtos/update-locale.dto.d.ts +7 -0
  32. package/dist/dtos/update-locale.dto.d.ts.map +1 -0
  33. package/dist/dtos/update-locale.dto.js +48 -0
  34. package/dist/dtos/update-locale.dto.js.map +1 -0
  35. package/dist/dtos/update-menu-item-metadata.dto.d.ts +2 -1
  36. package/dist/dtos/update-menu-item-metadata.dto.d.ts.map +1 -1
  37. package/dist/dtos/update-menu-item-metadata.dto.js +24 -5
  38. package/dist/dtos/update-menu-item-metadata.dto.js.map +1 -1
  39. package/dist/dtos/update-role-metadata.dto.d.ts.map +1 -1
  40. package/dist/dtos/update-role-metadata.dto.js +12 -1
  41. package/dist/dtos/update-role-metadata.dto.js.map +1 -1
  42. package/dist/entities/common.entity.d.ts +3 -0
  43. package/dist/entities/common.entity.d.ts.map +1 -1
  44. package/dist/entities/common.entity.js +13 -1
  45. package/dist/entities/common.entity.js.map +1 -1
  46. package/dist/entities/locale.entity.d.ts +7 -0
  47. package/dist/entities/locale.entity.d.ts.map +1 -0
  48. package/dist/entities/locale.entity.js +43 -0
  49. package/dist/entities/locale.entity.js.map +1 -0
  50. package/dist/entities/menu-item-metadata.entity.d.ts +2 -1
  51. package/dist/entities/menu-item-metadata.entity.d.ts.map +1 -1
  52. package/dist/entities/menu-item-metadata.entity.js +13 -8
  53. package/dist/entities/menu-item-metadata.entity.js.map +1 -1
  54. package/dist/entities/model-metadata.entity.d.ts +1 -0
  55. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  56. package/dist/entities/model-metadata.entity.js +5 -1
  57. package/dist/entities/model-metadata.entity.js.map +1 -1
  58. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts.map +1 -1
  59. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
  60. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts.map +1 -1
  61. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
  62. package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
  63. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  64. package/dist/helpers/solid-registry.d.ts +2 -0
  65. package/dist/helpers/solid-registry.d.ts.map +1 -1
  66. package/dist/helpers/solid-registry.js +5 -0
  67. package/dist/helpers/solid-registry.js.map +1 -1
  68. package/dist/index.d.ts +5 -0
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +5 -0
  71. package/dist/index.js.map +1 -1
  72. package/dist/seeders/seed-data/solid-core-metadata.json +234 -0
  73. package/dist/services/authentication.service.d.ts.map +1 -1
  74. package/dist/services/authentication.service.js +8 -3
  75. package/dist/services/authentication.service.js.map +1 -1
  76. package/dist/services/crud-helper.service.d.ts +1 -1
  77. package/dist/services/crud-helper.service.d.ts.map +1 -1
  78. package/dist/services/crud-helper.service.js +17 -2
  79. package/dist/services/crud-helper.service.js.map +1 -1
  80. package/dist/services/crud.service.d.ts.map +1 -1
  81. package/dist/services/crud.service.js +19 -6
  82. package/dist/services/crud.service.js.map +1 -1
  83. package/dist/services/import-transaction.service.d.ts +19 -6
  84. package/dist/services/import-transaction.service.d.ts.map +1 -1
  85. package/dist/services/import-transaction.service.js +214 -87
  86. package/dist/services/import-transaction.service.js.map +1 -1
  87. package/dist/services/locale.service.d.ts +26 -0
  88. package/dist/services/locale.service.d.ts.map +1 -0
  89. package/dist/services/locale.service.js +64 -0
  90. package/dist/services/locale.service.js.map +1 -0
  91. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  92. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  93. package/dist/services/menu-item-metadata.service.js +1 -0
  94. package/dist/services/menu-item-metadata.service.js.map +1 -1
  95. package/dist/services/selection-providers/locale-list-selection-provider.service.d.ts +9 -0
  96. package/dist/services/selection-providers/locale-list-selection-provider.service.d.ts.map +1 -0
  97. package/dist/services/selection-providers/locale-list-selection-provider.service.js +87 -0
  98. package/dist/services/selection-providers/locale-list-selection-provider.service.js.map +1 -0
  99. package/dist/services/setting.service.d.ts.map +1 -1
  100. package/dist/services/setting.service.js +4 -2
  101. package/dist/services/setting.service.js.map +1 -1
  102. package/dist/services/view-metadata.service.d.ts +3 -0
  103. package/dist/services/view-metadata.service.d.ts.map +1 -1
  104. package/dist/services/view-metadata.service.js +73 -7
  105. package/dist/services/view-metadata.service.js.map +1 -1
  106. package/dist/solid-core.module.d.ts.map +1 -1
  107. package/dist/solid-core.module.js +8 -0
  108. package/dist/solid-core.module.js.map +1 -1
  109. package/dist/subscribers/model.subscriber.d.ts.map +1 -1
  110. package/dist/subscribers/model.subscriber.js +24 -0
  111. package/dist/subscribers/model.subscriber.js.map +1 -1
  112. package/dist/transformers/datetime-transformer.d.ts +4 -0
  113. package/dist/transformers/datetime-transformer.d.ts.map +1 -0
  114. package/dist/transformers/datetime-transformer.js +11 -0
  115. package/dist/transformers/datetime-transformer.js.map +1 -0
  116. package/dist/tsconfig.tsbuildinfo +1 -1
  117. package/package.json +2 -1
  118. package/src/controllers/import-transaction.controller.ts +9 -3
  119. package/src/controllers/locale.controller.ts +94 -0
  120. package/src/dtos/basic-filters.dto.ts +13 -1
  121. package/src/dtos/create-locale.dto.ts +17 -0
  122. package/src/dtos/create-menu-item-metadata.dto.ts +21 -13
  123. package/src/dtos/create-model-metadata.dto.ts +5 -1
  124. package/src/dtos/create-role-metadata.dto.ts +48 -45
  125. package/src/dtos/update-locale.dto.ts +23 -0
  126. package/src/dtos/update-menu-item-metadata.dto.ts +23 -16
  127. package/src/dtos/update-role-metadata.dto.ts +49 -47
  128. package/src/entities/common.entity.ts +11 -1
  129. package/src/entities/locale.entity.ts +14 -0
  130. package/src/entities/menu-item-metadata.entity.ts +14 -14
  131. package/src/entities/model-metadata.entity.ts +3 -0
  132. package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +2 -1
  133. package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +1 -0
  134. package/src/helpers/module-metadata-helper.service.ts +0 -1
  135. package/src/helpers/solid-registry.ts +11 -2
  136. package/src/index.ts +6 -3
  137. package/src/seeders/seed-data/email-templates/forgot-password.handlebars.html +134 -154
  138. package/src/seeders/seed-data/email-templates/on-force-password-change.handlebars.html +141 -195
  139. package/src/seeders/seed-data/email-templates/otp-on-login.handlebars.html +130 -144
  140. package/src/seeders/seed-data/email-templates/otp-on-register.handlebars.html +131 -145
  141. package/src/seeders/seed-data/solid-core-metadata.json +234 -0
  142. package/src/services/authentication.service.ts +8 -3
  143. package/src/services/crud-helper.service.ts +30 -12
  144. package/src/services/crud.service.ts +51 -35
  145. package/src/services/import-transaction.service.ts +313 -121
  146. package/src/services/locale.service.ts +37 -0
  147. package/src/services/mediaStorageProviders/file-storage-provider.ts +1 -1
  148. package/src/services/menu-item-metadata.service.ts +2 -0
  149. package/src/services/pending_import_issues +3 -0
  150. package/src/services/selection-providers/locale-list-selection-provider.service.ts +58 -0
  151. package/src/services/setting.service.ts +4 -2
  152. package/src/services/view-metadata.service.ts +179 -14
  153. package/src/solid-core.module.ts +8 -0
  154. package/src/subscribers/model.subscriber.ts +24 -0
  155. package/src/transformers/datetime-transformer.ts +12 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidstarters/solid-core",
3
- "version": "1.2.92",
3
+ "version": "1.2.95",
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",
@@ -48,6 +48,7 @@
48
48
  "fast-csv": "^5.0.2",
49
49
  "handlebars": "^4.7.8",
50
50
  "ioredis": "^5.4.1",
51
+ "locale-codes": "^1.3.1",
51
52
  "lodash": "^4.17.21",
52
53
  "luxon": "^3.4.4",
53
54
  "mailgen": "^2.0.28",
@@ -108,9 +108,15 @@ export class ImportTransactionController {
108
108
  }
109
109
 
110
110
  @ApiBearerAuth("jwt")
111
- @Post(':id/import-mapping')
112
- async saveImportMapping(@Param('id') id: string) {
113
- return this.service.saveImportMapping(+id);
111
+ @Post(':id/start-import/sync')
112
+ async startImportSync(@Param('id') id: string) {
113
+ return this.service.startImportSync(+id);
114
+ }
115
+
116
+ @ApiBearerAuth("jwt")
117
+ @Post(':id/start-import/async')
118
+ async startImportAsync(@Param('id') id: string) {
119
+ return this.service.startImportAsync(+id);
114
120
  }
115
121
 
116
122
  @ApiBearerAuth("jwt")
@@ -0,0 +1,94 @@
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 { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
5
+ import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
6
+ import { LocaleService } from 'src/services/locale.service';
7
+ import { CreateLocaleDto } from 'src/dtos/create-locale.dto';
8
+ import { UpdateLocaleDto } from 'src/dtos/update-locale.dto';
9
+
10
+ enum ShowSoftDeleted {
11
+ INCLUSIVE = "inclusive",
12
+ EXCLUSIVE = "exclusive",
13
+ }
14
+
15
+ @ApiTags('Solid Core')
16
+ @Controller('locale')
17
+ export class LocaleController {
18
+ constructor(private readonly service: LocaleService) { }
19
+
20
+ @ApiBearerAuth("jwt")
21
+ @Post()
22
+ @UseInterceptors(AnyFilesInterceptor())
23
+ create(@Body() createDto: CreateLocaleDto, @UploadedFiles() files: Array<Express.Multer.File>) {
24
+ return this.service.create(createDto, files);
25
+ }
26
+
27
+ @ApiBearerAuth("jwt")
28
+ @Post('/bulk')
29
+ @UseInterceptors(AnyFilesInterceptor())
30
+ insertMany(@Body() createDtos: CreateLocaleDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {
31
+ return this.service.insertMany(createDtos, filesArray);
32
+ }
33
+
34
+
35
+ @ApiBearerAuth("jwt")
36
+ @Put(':id')
37
+ @UseInterceptors(AnyFilesInterceptor())
38
+ update(@Param('id') id: number, @Body() updateDto: UpdateLocaleDto, @UploadedFiles() files: Array<Express.Multer.File>) {
39
+ return this.service.update(id, updateDto, files);
40
+ }
41
+
42
+ @ApiBearerAuth("jwt")
43
+ @Patch(':id')
44
+ @UseInterceptors(AnyFilesInterceptor())
45
+ partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateLocaleDto, @UploadedFiles() files: Array<Express.Multer.File>) {
46
+ return this.service.update(id, updateDto, files, true);
47
+ }
48
+
49
+ @ApiBearerAuth("jwt")
50
+ @Post('/bulk-recover')
51
+ async recoverMany(@Body() ids: number[]) {
52
+ return this.service.recoverMany(ids);
53
+ }
54
+
55
+ @ApiBearerAuth("jwt")
56
+ @Get('/recover/:id')
57
+ async recover(@Param('id') id: number) {
58
+ return this.service.recover(id);
59
+ }
60
+
61
+ @ApiBearerAuth("jwt")
62
+ @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })
63
+ @ApiQuery({ name: 'limit', required: false, type: Number })
64
+ @ApiQuery({ name: 'offset', required: false, type: Number })
65
+ @ApiQuery({ name: 'fields', required: false, type: Array })
66
+ @ApiQuery({ name: 'sort', required: false, type: Array })
67
+ @ApiQuery({ name: 'groupBy', required: false, type: Array })
68
+ @ApiQuery({ name: 'populate', required: false, type: Array })
69
+ @ApiQuery({ name: 'populateMedia', required: false, type: Array })
70
+ @ApiQuery({ name: 'filters', required: false, type: Array })
71
+ @Get()
72
+ async findMany(@Query() query: any) {
73
+ return this.service.find(query);
74
+ }
75
+
76
+ @ApiBearerAuth("jwt")
77
+ @Get(':id')
78
+ async findOne(@Param('id') id: string, @Query() query: any) {
79
+ return this.service.findOne(+id, query);
80
+ }
81
+
82
+ @ApiBearerAuth("jwt")
83
+ @Delete('/bulk')
84
+ async deleteMany(@Body() ids: number[]) {
85
+ return this.service.deleteMany(ids);
86
+ }
87
+
88
+ @ApiBearerAuth("jwt")
89
+ @Delete(':id')
90
+ async delete(@Param('id') id: number) {
91
+ return this.service.delete(id);
92
+ }
93
+
94
+ }
@@ -2,6 +2,7 @@
2
2
  import { ApiProperty } from "@nestjs/swagger";
3
3
  import { IsEnum, IsOptional } from "class-validator";
4
4
  import { PaginationQueryDto } from "./pagination-query.dto";
5
+ import { Timestamp } from "typeorm";
5
6
 
6
7
  export enum SoftDeleteFilter {
7
8
  INCLUSIVE = "inclusive",
@@ -32,7 +33,6 @@ export class BasicFilterDto extends PaginationQueryDto {
32
33
  @ApiProperty({ description: "populateMedia" })
33
34
  readonly populateMedia?: string[];
34
35
 
35
-
36
36
  // @IsOptional()
37
37
  // @ApiProperty({ description: "filters" })
38
38
  // readonly filters: any[];
@@ -52,4 +52,16 @@ export class BasicFilterDto extends PaginationQueryDto {
52
52
  @IsOptional()
53
53
  @ApiProperty({ description: "groupFilter" })
54
54
  groupFilter?: BasicFilterDto
55
+
56
+ @IsOptional()
57
+ @ApiProperty({ description: "locale" })
58
+ readonly locale?: string;
59
+
60
+ @IsOptional()
61
+ @ApiProperty({ description: "status publish draft" })
62
+ readonly status?: string;
63
+
64
+ // @IsOptional()
65
+ // @ApiProperty({ description: "default locale id" })
66
+ // readonly defaultEntityLocaleId?: number;
55
67
  }
@@ -0,0 +1,17 @@
1
+ import { IsString, IsBoolean, IsOptional, IsNotEmpty } from 'class-validator';
2
+ import { ApiProperty } from '@nestjs/swagger';
3
+
4
+ export class CreateLocaleDto {
5
+ @IsNotEmpty()
6
+ @IsString()
7
+ @ApiProperty()
8
+ locale: string;
9
+ @IsNotEmpty()
10
+ @IsString()
11
+ @ApiProperty()
12
+ displayName: string;
13
+ @IsNotEmpty()
14
+ @IsBoolean()
15
+ @ApiProperty()
16
+ isDefault: boolean = true;
17
+ }
@@ -2,59 +2,67 @@ import { IsNumber, IsString } from 'class-validator';
2
2
  import { Matches } from 'class-validator';
3
3
  import { IsNotEmpty, IsInt, IsOptional, ValidateNested, IsArray } from 'class-validator';
4
4
  import { Transform, Type } from 'class-transformer';
5
- import { UpdateRoleMetadataDto } from './update-role-metadata.dto';
6
5
  import arrayTransformer from '../transformers/array-transformer';
6
+ import { ApiProperty } from '@nestjs/swagger';
7
+ import { UpdateRoleMetadataDto } from 'src/dtos/update-role-metadata.dto';
8
+
7
9
  export class CreateMenuItemMetadataDto {
8
10
  @IsNotEmpty()
9
11
  @Matches(/[a-z]+(-[a-z]+)*/)
10
12
  @IsString()
13
+ @ApiProperty()
11
14
  name: string;
12
-
13
15
  @IsNotEmpty()
14
16
  @IsString()
17
+ @ApiProperty()
15
18
  displayName: string;
16
-
17
19
  @IsOptional()
18
20
  @IsInt()
21
+ @ApiProperty()
19
22
  moduleId: number;
20
-
21
23
  @IsString()
22
24
  @IsOptional()
25
+ @ApiProperty()
23
26
  moduleUserKey: string;
24
-
25
27
  @IsOptional()
26
28
  @IsInt()
29
+ @ApiProperty()
27
30
  parentMenuItemId: number;
28
-
29
31
  @IsString()
30
32
  @IsOptional()
33
+ @ApiProperty()
31
34
  parentMenuItemUserKey: string;
32
-
33
35
  @IsOptional()
34
36
  @IsInt()
37
+ @ApiProperty()
35
38
  actionId: number;
36
-
37
39
  @IsString()
38
40
  @IsOptional()
41
+ @ApiProperty()
39
42
  actionUserKey: string;
40
-
43
+ @Transform(arrayTransformer)
41
44
  @IsOptional()
45
+ @ApiProperty()
42
46
  @IsArray()
43
- @Transform(arrayTransformer)
44
47
  @ValidateNested({ each: true })
45
48
  @Type(() => UpdateRoleMetadataDto)
46
49
  roles: UpdateRoleMetadataDto[];
47
-
48
50
  @IsOptional()
49
51
  @IsArray()
52
+ @ApiProperty()
50
53
  rolesIds: number[];
51
-
52
54
  @IsString()
53
55
  @IsOptional()
56
+ @ApiProperty()
54
57
  rolesCommand: string;
55
-
56
58
  @IsOptional()
57
59
  @IsNumber()
60
+ @ApiProperty()
58
61
  sequenceNumber: number;
59
62
 
63
+ @IsOptional()
64
+ @IsString()
65
+ @ApiProperty()
66
+ iconName: string;
67
+
60
68
  }
@@ -63,10 +63,14 @@ export class CreateModelMetadataDto {
63
63
  @IsBoolean()
64
64
  readonly enableAuditTracking: boolean
65
65
 
66
- @ApiProperty({ description: "Enable Soft Delete" })
66
+ @ApiProperty({ description: "Internationalisation" })
67
67
  @IsBoolean()
68
68
  readonly internationalisation: boolean
69
69
 
70
+ @ApiProperty({ description: "Draft publish workflow" })
71
+ @IsBoolean()
72
+ readonly draftPublishWorkflow: boolean
73
+
70
74
  @ApiProperty({ description: "Related module id" })
71
75
  @IsInt()
72
76
  @IsOptional()
@@ -4,50 +4,53 @@ import { Type } from 'class-transformer';
4
4
  import { UpdatePermissionMetadataDto } from 'src/dtos/update-permission-metadata.dto';
5
5
  import { UpdateUserDto } from 'src/dtos/update-user.dto';
6
6
  import { UpdateMenuItemMetadataDto } from 'src/dtos/update-menu-item-metadata.dto';
7
- export class CreateRoleMetadataDto {
8
- @IsNotEmpty()
9
- @IsString()
10
- name: string;
11
-
12
- @IsOptional()
13
- @IsArray()
14
- @ValidateNested({ each : true })
15
- @Type(() => UpdatePermissionMetadataDto)
16
- permissions: UpdatePermissionMetadataDto[];
17
-
18
- @IsOptional()
19
- @IsArray()
20
- permissionsIds: number[];
21
-
22
- @IsString()
23
- @IsOptional()
24
- permissionsCommand: string;
25
-
26
- @IsOptional()
27
- @IsArray()
28
- @ValidateNested({ each : true })
29
- @Type(() => UpdateUserDto)
30
- users: UpdateUserDto[];
7
+ import { ApiProperty } from '@nestjs/swagger';
31
8
 
32
- @IsOptional()
33
- @IsArray()
34
- usersIds: number[];
35
-
36
- @IsString()
37
- @IsOptional()
38
- usersCommand: string;
39
-
40
- @IsOptional()
41
- @IsArray()
42
- @ValidateNested({ each : true })
43
- @Type(() => UpdateMenuItemMetadataDto)
44
- menuItems: UpdateMenuItemMetadataDto[];
45
-
46
- @IsOptional()
47
- @IsArray()
48
- menuItemsIds: number[];
49
-
50
- @IsString()
51
- @IsOptional()
52
- menuItemsCommand: string;
9
+ export class CreateRoleMetadataDto {
10
+ @IsNotEmpty()
11
+ @IsString()
12
+ @ApiProperty()
13
+ name: string;
14
+ @IsOptional()
15
+ @ApiProperty()
16
+ @IsArray()
17
+ @ValidateNested({ each: true })
18
+ @Type(() => UpdatePermissionMetadataDto)
19
+ permissions: UpdatePermissionMetadataDto[];
20
+ @IsOptional()
21
+ @IsArray()
22
+ @ApiProperty()
23
+ permissionsIds: number[];
24
+ @IsString()
25
+ @IsOptional()
26
+ @ApiProperty()
27
+ permissionsCommand: string;
28
+ @IsOptional()
29
+ @ApiProperty()
30
+ @IsArray()
31
+ @ValidateNested({ each: true })
32
+ @Type(() => UpdateUserDto)
33
+ users: UpdateUserDto[];
34
+ @IsOptional()
35
+ @IsArray()
36
+ @ApiProperty()
37
+ usersIds: number[];
38
+ @IsString()
39
+ @IsOptional()
40
+ @ApiProperty()
41
+ usersCommand: string;
42
+ @IsOptional()
43
+ @ApiProperty()
44
+ @IsArray()
45
+ @ValidateNested({ each: true })
46
+ @Type(() => UpdateMenuItemMetadataDto)
47
+ menuItems: UpdateMenuItemMetadataDto[];
48
+ @IsOptional()
49
+ @IsArray()
50
+ @ApiProperty()
51
+ menuItemsIds: number[];
52
+ @IsString()
53
+ @IsOptional()
54
+ @ApiProperty()
55
+ menuItemsCommand: string;
53
56
  }
@@ -0,0 +1,23 @@
1
+ import { IsString, IsBoolean, IsOptional, IsInt, IsNotEmpty } from 'class-validator';
2
+ import { ApiProperty } from '@nestjs/swagger';
3
+
4
+ export class UpdateLocaleDto {
5
+ @IsOptional()
6
+ @IsInt()
7
+ id: number;
8
+ @IsNotEmpty()
9
+ @IsOptional()
10
+ @IsString()
11
+ @ApiProperty()
12
+ locale: string;
13
+ @IsNotEmpty()
14
+ @IsOptional()
15
+ @IsString()
16
+ @ApiProperty()
17
+ displayName: string;
18
+ @IsNotEmpty()
19
+ @IsOptional()
20
+ @IsBoolean()
21
+ @ApiProperty()
22
+ isDefault: boolean;
23
+ }
@@ -1,64 +1,71 @@
1
1
  import { IsInt, IsOptional, IsString, Matches, IsNotEmpty, ValidateNested, IsArray, IsNumber } from 'class-validator';
2
2
  import { Transform, Type } from 'class-transformer';
3
- import { UpdateRoleMetadataDto } from './update-role-metadata.dto';
4
3
  import arrayTransformer from '../transformers/array-transformer';
4
+ import { ApiProperty } from '@nestjs/swagger';
5
+ import { UpdateRoleMetadataDto } from 'src/dtos/update-role-metadata.dto';
6
+
5
7
  export class UpdateMenuItemMetadataDto {
6
8
  @IsOptional()
7
9
  @IsInt()
8
10
  id: number;
9
-
10
- @IsOptional()
11
11
  @IsNotEmpty()
12
+ @IsOptional()
12
13
  @Matches(/[a-z]+(-[a-z]+)*/)
13
14
  @IsString()
15
+ @ApiProperty()
14
16
  name: string;
15
-
16
- @IsOptional()
17
17
  @IsNotEmpty()
18
+ @IsOptional()
18
19
  @IsString()
20
+ @ApiProperty()
19
21
  displayName: string;
20
-
21
22
  @IsOptional()
22
23
  @IsInt()
24
+ @ApiProperty()
23
25
  moduleId: number;
24
-
25
26
  @IsString()
26
27
  @IsOptional()
28
+ @ApiProperty()
27
29
  moduleUserKey: string;
28
-
29
30
  @IsOptional()
30
31
  @IsInt()
32
+ @ApiProperty()
31
33
  parentMenuItemId: number;
32
-
33
34
  @IsString()
34
35
  @IsOptional()
36
+ @ApiProperty()
35
37
  parentMenuItemUserKey: string;
36
-
37
38
  @IsOptional()
38
39
  @IsInt()
40
+ @ApiProperty()
39
41
  actionId: number;
40
-
41
42
  @IsString()
42
43
  @IsOptional()
44
+ @ApiProperty()
43
45
  actionUserKey: string;
44
-
46
+ @Transform(arrayTransformer)
45
47
  @IsOptional()
48
+ @ApiProperty()
46
49
  @IsArray()
47
- @Transform(arrayTransformer)
48
50
  @ValidateNested({ each: true })
49
51
  @Type(() => UpdateRoleMetadataDto)
50
52
  roles: UpdateRoleMetadataDto[];
51
-
52
53
  @IsOptional()
53
54
  @IsArray()
55
+ @ApiProperty()
54
56
  rolesIds: number[];
55
-
56
57
  @IsString()
57
58
  @IsOptional()
59
+ @ApiProperty()
58
60
  rolesCommand: string;
59
-
60
61
  @IsOptional()
61
62
  @IsNumber()
63
+ @ApiProperty()
62
64
  sequenceNumber: number;
63
65
 
66
+ @IsOptional()
67
+ @IsString()
68
+ @ApiProperty()
69
+ iconName: string;
70
+
64
71
  }
@@ -3,55 +3,57 @@ import { Type } from 'class-transformer';
3
3
  import { UpdatePermissionMetadataDto } from 'src/dtos/update-permission-metadata.dto';
4
4
  import { UpdateUserDto } from 'src/dtos/update-user.dto';
5
5
  import { UpdateMenuItemMetadataDto } from 'src/dtos/update-menu-item-metadata.dto';
6
+ import { ApiProperty } from '@nestjs/swagger';
7
+
6
8
  export class UpdateRoleMetadataDto {
7
9
  @IsOptional()
8
10
  @IsInt()
9
11
  id: number;
10
-
11
- @IsOptional()
12
- @IsNotEmpty()
13
- @IsString()
14
- name: string;
15
-
16
- @IsOptional()
17
- @IsArray()
18
- @ValidateNested({ each : true })
19
- @Type(() => UpdatePermissionMetadataDto)
20
- permissions: UpdatePermissionMetadataDto[];
21
-
22
- @IsOptional()
23
- @IsArray()
24
- permissionsIds: number[];
25
-
26
- @IsString()
27
- @IsOptional()
28
- permissionsCommand: string;
29
-
30
- @IsOptional()
31
- @IsArray()
32
- @ValidateNested({ each : true })
33
- @Type(() => UpdateUserDto)
34
- users: UpdateUserDto[];
35
-
36
- @IsOptional()
37
- @IsArray()
38
- usersIds: number[];
39
-
40
- @IsString()
41
- @IsOptional()
42
- usersCommand: string;
43
-
44
- @IsOptional()
45
- @IsArray()
46
- @ValidateNested({ each : true })
47
- @Type(() => UpdateMenuItemMetadataDto)
48
- menuItems: UpdateMenuItemMetadataDto[];
49
-
50
- @IsOptional()
51
- @IsArray()
52
- menuItemsIds: number[];
53
-
54
- @IsString()
55
- @IsOptional()
56
- menuItemsCommand: string;
12
+ @IsNotEmpty()
13
+ @IsOptional()
14
+ @IsString()
15
+ @ApiProperty()
16
+ name: string;
17
+ @IsOptional()
18
+ @ApiProperty()
19
+ @IsArray()
20
+ @ValidateNested({ each: true })
21
+ @Type(() => UpdatePermissionMetadataDto)
22
+ permissions: UpdatePermissionMetadataDto[];
23
+ @IsOptional()
24
+ @IsArray()
25
+ @ApiProperty()
26
+ permissionsIds: number[];
27
+ @IsString()
28
+ @IsOptional()
29
+ @ApiProperty()
30
+ permissionsCommand: string;
31
+ @IsOptional()
32
+ @ApiProperty()
33
+ @IsArray()
34
+ @ValidateNested({ each: true })
35
+ @Type(() => UpdateUserDto)
36
+ users: UpdateUserDto[];
37
+ @IsOptional()
38
+ @IsArray()
39
+ @ApiProperty()
40
+ usersIds: number[];
41
+ @IsString()
42
+ @IsOptional()
43
+ @ApiProperty()
44
+ usersCommand: string;
45
+ @IsOptional()
46
+ @ApiProperty()
47
+ @IsArray()
48
+ @ValidateNested({ each: true })
49
+ @Type(() => UpdateMenuItemMetadataDto)
50
+ menuItems: UpdateMenuItemMetadataDto[];
51
+ @IsOptional()
52
+ @IsArray()
53
+ @ApiProperty()
54
+ menuItemsIds: number[];
55
+ @IsString()
56
+ @IsOptional()
57
+ @ApiProperty()
58
+ menuItemsCommand: string;
57
59
  }
@@ -1,4 +1,5 @@
1
- import { PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn } from "typeorm"
1
+ import { PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, Index, ManyToOne, JoinColumn } from "typeorm"
2
+ import { Locale } from "./locale.entity";
2
3
 
3
4
  export abstract class CommonEntity {
4
5
  @PrimaryGeneratedColumn({ type: 'integer' })
@@ -15,4 +16,13 @@ export abstract class CommonEntity {
15
16
 
16
17
  @Column({ name: "deletedTracker", default: "not-deleted" })
17
18
  deletedTracker: string;
19
+
20
+ @Column({ type: "timestamp", name: 'published_at', default: null ,nullable: true})
21
+ publishedAt: Date;
22
+
23
+ @Column({ type: "varchar", name: 'locale_name', default: null })
24
+ localeName: string;
25
+
26
+ @Column({ type: "int", name: 'default_entity_locale_id', default: null })
27
+ defaultEntityLocaleId: number;
18
28
  }
@@ -0,0 +1,14 @@
1
+ import { CommonEntity } from 'src/entities/common.entity'
2
+ import { Entity, Column, Index, ManyToOne } from 'typeorm';
3
+
4
+ @Entity("ss_locale")
5
+ export class Locale extends CommonEntity {
6
+ @Index({ unique: true })
7
+ @Column({ type: "varchar" })
8
+ locale: string;
9
+ @Column({ type: "varchar" })
10
+ displayName: string;
11
+ @Index()
12
+ @Column({ type: "boolean", default: true })
13
+ isDefault: boolean = true;
14
+ }
@@ -2,34 +2,34 @@ import { CommonEntity } from "src/entities/common.entity"
2
2
  import { Entity, Column, ManyToOne, Index, JoinTable, ManyToMany, JoinColumn } from "typeorm";
3
3
  import { ModuleMetadata } from 'src/entities/module-metadata.entity';
4
4
  import { ActionMetadata } from 'src/entities/action-metadata.entity';
5
- import { RoleMetadata } from "./role-metadata.entity";
5
+ import { RoleMetadata } from 'src/entities/role-metadata.entity';
6
+
6
7
  @Entity("ss_menu_item_metadata")
7
8
  export class MenuItemMetadata extends CommonEntity {
9
+ @Index({ unique: true })
8
10
  @Column({ name: "name", type: "varchar", unique: true })
9
11
  name: string;
10
-
11
12
  @Column({ name: "display_name", type: "varchar" })
12
13
  displayName: string;
13
-
14
- @JoinColumn({ name: 'module_id', referencedColumnName: 'id' })
15
14
  @Index()
16
- @ManyToOne(() => ModuleMetadata, { onDelete: "CASCADE" })
15
+ @ManyToOne(() => ModuleMetadata, { onDelete: "CASCADE", nullable: false })
16
+ @JoinColumn({ referencedColumnName: 'id' })
17
17
  module: ModuleMetadata;
18
-
19
- @JoinColumn({ name: 'parent_menu_item_id', referencedColumnName: 'id' })
20
18
  @Index()
21
- @ManyToOne(() => MenuItemMetadata, { onDelete: "CASCADE" })
19
+ @ManyToOne(() => MenuItemMetadata, { onDelete: "CASCADE", nullable: true })
20
+ @JoinColumn({ referencedColumnName: 'id' })
22
21
  parentMenuItem: MenuItemMetadata;
23
-
24
- @JoinColumn({ name: 'action_id', referencedColumnName: 'id' })
25
22
  @Index()
26
- @ManyToOne(() => ActionMetadata, { onDelete: "CASCADE" })
23
+ @ManyToOne(() => ActionMetadata, { onDelete: "CASCADE", nullable: true })
24
+ @JoinColumn({ referencedColumnName: 'id' })
27
25
  action: ActionMetadata;
28
-
29
- @ManyToMany(() => RoleMetadata, roleMetadata => roleMetadata.menuItems, { cascade: true })
26
+ @ManyToMany(() => RoleMetadata, roleMetadata => roleMetadata.users, { cascade: true })
30
27
  @JoinTable()
31
28
  roles: RoleMetadata[];
32
-
33
29
  @Column({ name: "sequence_number", type: "int", nullable: true })
34
30
  sequenceNumber: number;
31
+
32
+ @Column({ name: "icon_name", type: "varchar", nullable: true })
33
+ iconName: string;
34
+
35
35
  }