@solidxai/core 0.1.4 → 0.1.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +8 -0
- package/dist/constants/error-messages.d.ts +1 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +1 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/constants.d.ts +3 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +12 -12
- package/dist/constants.js.map +1 -1
- package/dist/controllers/otp-authentication.controller.d.ts +1 -4
- package/dist/controllers/otp-authentication.controller.d.ts.map +1 -1
- package/dist/controllers/otp-authentication.controller.js +1 -1
- package/dist/controllers/role-metadata.controller.d.ts +1 -0
- package/dist/controllers/role-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/role-metadata.controller.js +15 -0
- package/dist/controllers/role-metadata.controller.js.map +1 -1
- package/dist/dtos/create-email-template.dto.d.ts.map +1 -1
- package/dist/dtos/create-email-template.dto.js.map +1 -1
- package/dist/dtos/create-list-of-values.dto.d.ts.map +1 -1
- package/dist/dtos/create-list-of-values.dto.js.map +1 -1
- package/dist/dtos/create-menu-item-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-menu-item-metadata.dto.js.map +1 -1
- package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- package/dist/dtos/create-scheduled-job.dto.d.ts.map +1 -1
- package/dist/dtos/create-scheduled-job.dto.js.map +1 -1
- package/dist/dtos/create-security-rule.dto.d.ts.map +1 -1
- package/dist/dtos/create-security-rule.dto.js.map +1 -1
- package/dist/dtos/create-sms-template.dto.d.ts.map +1 -1
- package/dist/dtos/create-sms-template.dto.js.map +1 -1
- package/dist/dtos/create-view-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-view-metadata.dto.js.map +1 -1
- package/dist/dtos/otp-sign-in.dto.d.ts +1 -1
- package/dist/dtos/otp-sign-in.dto.d.ts.map +1 -1
- package/dist/dtos/otp-sign-in.dto.js +2 -2
- package/dist/dtos/otp-sign-in.dto.js.map +1 -1
- package/dist/dtos/otp-sign-up.dto.d.ts +2 -2
- package/dist/dtos/otp-sign-up.dto.d.ts.map +1 -1
- package/dist/dtos/otp-sign-up.dto.js +2 -2
- package/dist/dtos/otp-sign-up.dto.js.map +1 -1
- package/dist/dtos/resolve-s3-url.dto.d.ts +2 -5
- package/dist/dtos/resolve-s3-url.dto.d.ts.map +1 -1
- package/dist/dtos/resolve-s3-url.dto.js +1 -13
- package/dist/dtos/resolve-s3-url.dto.js.map +1 -1
- package/dist/dtos/sign-up.dto.d.ts.map +1 -1
- package/dist/dtos/sign-up.dto.js.map +1 -1
- package/dist/dtos/update-email-template.dto.d.ts.map +1 -1
- package/dist/dtos/update-email-template.dto.js.map +1 -1
- package/dist/dtos/update-list-of-values.dto.d.ts.map +1 -1
- package/dist/dtos/update-list-of-values.dto.js.map +1 -1
- package/dist/dtos/update-menu-item-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/update-menu-item-metadata.dto.js.map +1 -1
- package/dist/dtos/update-scheduled-job.dto.d.ts.map +1 -1
- package/dist/dtos/update-scheduled-job.dto.js.map +1 -1
- package/dist/dtos/update-security-rule.dto.d.ts.map +1 -1
- package/dist/dtos/update-security-rule.dto.js.map +1 -1
- package/dist/dtos/update-sms-template.dto.d.ts.map +1 -1
- package/dist/dtos/update-sms-template.dto.js.map +1 -1
- package/dist/dtos/update-view-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/update-view-metadata.dto.js.map +1 -1
- package/dist/entities/user.entity.d.ts +1 -0
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +6 -1
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts +2 -0
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js +33 -23
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts +3 -0
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js +36 -23
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/security.helper.js +1 -0
- package/dist/helpers/security.helper.js.map +1 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +1 -1
- package/dist/repository/solid-base.repository.d.ts +10 -1
- package/dist/repository/solid-base.repository.d.ts.map +1 -1
- package/dist/repository/solid-base.repository.js +109 -0
- package/dist/repository/solid-base.repository.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts +2 -0
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +141 -71
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/permission-metadata-seeder.service.d.ts +1 -1
- package/dist/seeders/permission-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/permission-metadata-seeder.service.js +1 -1
- package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +12 -25
- package/dist/services/authentication.service.d.ts +22 -8
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +228 -214
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/crud-helper.service.d.ts +4 -0
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +66 -32
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +7 -4
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/file/disk-file.service.d.ts +0 -2
- package/dist/services/file/disk-file.service.d.ts.map +1 -1
- package/dist/services/file/disk-file.service.js +7 -16
- package/dist/services/file/disk-file.service.js.map +1 -1
- package/dist/services/file/index.d.ts +1 -0
- package/dist/services/file/index.d.ts.map +1 -1
- package/dist/services/file/index.js +1 -0
- package/dist/services/file/index.js.map +1 -1
- package/dist/services/file/storage-path-builder.d.ts +17 -0
- package/dist/services/file/storage-path-builder.d.ts.map +1 -0
- package/dist/{seeders/sms-template-seeder.service.js → services/file/storage-path-builder.js} +45 -35
- package/dist/services/file/storage-path-builder.js.map +1 -0
- package/dist/services/media.service.d.ts +1 -1
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/media.service.js +45 -6
- package/dist/services/media.service.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js +46 -7
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/module-metadata.service.d.ts +4 -6
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +16 -14
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/setting.service.d.ts +3 -2
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +7 -4
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +24 -2
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +8 -6
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/solid-core.module.d.ts +3 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +45 -9
- package/dist/solid-core.module.js.map +1 -1
- package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -1
- package/dist/testing/adapters/ui/playwright-adapter.js +35 -2
- package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -1
- package/package.json +8 -2
- package/src/constants/error-messages.ts +1 -0
- package/src/constants.ts +3 -3
- package/src/controllers/role-metadata.controller.ts +26 -18
- package/src/dtos/create-email-template.dto.ts +7 -0
- package/src/dtos/create-list-of-values.dto.ts +7 -0
- package/src/dtos/create-menu-item-metadata.dto.ts +12 -1
- package/src/dtos/create-role-metadata.dto.ts +9 -0
- package/src/dtos/create-scheduled-job.dto.ts +14 -0
- package/src/dtos/create-security-rule.dto.ts +6 -0
- package/src/dtos/create-sms-template.dto.ts +6 -0
- package/src/dtos/create-view-metadata.dto.ts +11 -0
- package/src/dtos/otp-sign-in.dto.ts +3 -3
- package/src/dtos/otp-sign-up.dto.ts +3 -3
- package/src/dtos/resolve-s3-url.dto.ts +2 -12
- package/src/dtos/sign-up.dto.ts +0 -2
- package/src/dtos/update-email-template.dto.ts +6 -0
- package/src/dtos/update-list-of-values.dto.ts +8 -0
- package/src/dtos/update-menu-item-metadata.dto.ts +12 -0
- package/src/dtos/update-scheduled-job.dto.ts +15 -0
- package/src/dtos/update-security-rule.dto.ts +7 -0
- package/src/dtos/update-sms-template.dto.ts +32 -32
- package/src/dtos/update-view-metadata.dto.ts +12 -0
- package/src/entities/user.entity.ts +3 -0
- package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +43 -32
- package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +45 -33
- package/src/helpers/security.helper.ts +1 -1
- package/src/index.ts +0 -4
- package/src/repository/solid-base.repository.ts +172 -1
- package/src/seeders/module-metadata-seeder.service.ts +188 -126
- package/src/seeders/permission-metadata-seeder.service.ts +1 -4
- package/src/seeders/seed-data/solid-core-metadata.json +12 -25
- package/src/services/authentication.service.ts +268 -266
- package/src/services/crud-helper.service.ts +79 -36
- package/src/services/crud.service.ts +9 -4
- package/src/services/field-metadata.service.ts +0 -71
- package/src/services/file/disk-file.service.ts +8 -18
- package/src/services/file/index.ts +1 -0
- package/src/services/file/storage-path-builder.ts +56 -0
- package/src/services/media.service.ts +13 -7
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +1 -1
- package/src/services/mediaStorageProviders/file-storage-provider.ts +13 -8
- package/src/services/module-metadata.service.ts +18 -15
- package/src/services/setting.service.ts +5 -3
- package/src/services/settings/default-settings-provider.service.ts +5 -3
- package/src/solid-core.module.ts +16 -12
- package/src/testing/adapters/ui/playwright-adapter.ts +1 -1
- package/dist/passport-strategies/local.strategy.d.ts +0 -15
- package/dist/passport-strategies/local.strategy.d.ts.map +0 -1
- package/dist/passport-strategies/local.strategy.js +0 -44
- package/dist/passport-strategies/local.strategy.js.map +0 -1
- package/dist/seeders/email-template-seeder.service.d.ts +0 -10
- package/dist/seeders/email-template-seeder.service.d.ts.map +0 -1
- package/dist/seeders/email-template-seeder.service.js +0 -84
- package/dist/seeders/email-template-seeder.service.js.map +0 -1
- package/dist/seeders/sms-template-seeder.service.d.ts +0 -10
- package/dist/seeders/sms-template-seeder.service.d.ts.map +0 -1
- package/dist/seeders/sms-template-seeder.service.js.map +0 -1
- package/dist/seeders/user-seeder.service.d.ts +0 -10
- package/dist/seeders/user-seeder.service.d.ts.map +0 -1
- package/dist/seeders/user-seeder.service.js +0 -44
- package/dist/seeders/user-seeder.service.js.map +0 -1
- package/src/passport-strategies/local.strategy.ts +0 -28
- package/src/seeders/email-template-seeder.service.ts +0 -49
- package/src/seeders/sms-template-seeder.service.ts +0 -50
- package/src/seeders/user-seeder.service.ts +0 -33
|
@@ -2,17 +2,7 @@ import { IsEmail, IsNotEmpty, IsOptional, MinLength } from 'class-validator';
|
|
|
2
2
|
|
|
3
3
|
export class ResolveS3UrlDto {
|
|
4
4
|
@IsNotEmpty()
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@IsNotEmpty()
|
|
8
|
-
fieldName: string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
@IsNotEmpty()
|
|
12
|
-
fileType?: string;
|
|
13
|
-
|
|
14
|
-
@IsNotEmpty()
|
|
15
|
-
s3Key?: string;
|
|
5
|
+
s3Key: string;
|
|
16
6
|
|
|
17
7
|
@IsOptional()
|
|
18
8
|
bucketName?: string;
|
|
@@ -21,7 +11,7 @@ export class ResolveS3UrlDto {
|
|
|
21
11
|
mediaStorageProviderUserKey?: string;
|
|
22
12
|
|
|
23
13
|
@IsNotEmpty()
|
|
24
|
-
isPrivate
|
|
14
|
+
isPrivate: string;
|
|
25
15
|
}
|
|
26
16
|
|
|
27
17
|
|
package/src/dtos/sign-up.dto.ts
CHANGED
|
@@ -12,29 +12,35 @@ export class UpdateEmailTemplateDto extends PartialType(CreateEmailTemplateDto)
|
|
|
12
12
|
@IsString()
|
|
13
13
|
@ApiProperty()
|
|
14
14
|
name: string;
|
|
15
|
+
|
|
15
16
|
@IsNotEmpty()
|
|
16
17
|
@IsOptional()
|
|
17
18
|
@IsString()
|
|
18
19
|
@ApiProperty()
|
|
19
20
|
displayName: string;
|
|
21
|
+
|
|
20
22
|
@IsNotEmpty()
|
|
21
23
|
@IsOptional()
|
|
22
24
|
@IsString()
|
|
23
25
|
@ApiProperty()
|
|
24
26
|
body: string;
|
|
27
|
+
|
|
25
28
|
@IsOptional()
|
|
26
29
|
@IsString()
|
|
27
30
|
@ApiProperty()
|
|
28
31
|
type: string;
|
|
32
|
+
|
|
29
33
|
@IsNotEmpty()
|
|
30
34
|
@IsOptional()
|
|
31
35
|
@IsString()
|
|
32
36
|
@ApiProperty()
|
|
33
37
|
subject: string;
|
|
38
|
+
|
|
34
39
|
@IsOptional()
|
|
35
40
|
@IsString()
|
|
36
41
|
@ApiProperty()
|
|
37
42
|
description: string;
|
|
43
|
+
|
|
38
44
|
@IsOptional()
|
|
39
45
|
@IsBoolean()
|
|
40
46
|
@ApiProperty()
|
|
@@ -5,38 +5,46 @@ export class UpdateListOfValuesDto {
|
|
|
5
5
|
@IsOptional()
|
|
6
6
|
@IsInt()
|
|
7
7
|
id: number;
|
|
8
|
+
|
|
8
9
|
@IsNotEmpty()
|
|
9
10
|
@IsOptional()
|
|
10
11
|
@IsString()
|
|
11
12
|
@ApiProperty()
|
|
12
13
|
type: string;
|
|
14
|
+
|
|
13
15
|
@IsNotEmpty()
|
|
14
16
|
@IsOptional()
|
|
15
17
|
@IsString()
|
|
16
18
|
@ApiProperty()
|
|
17
19
|
value: string;
|
|
20
|
+
|
|
18
21
|
@IsNotEmpty()
|
|
19
22
|
@IsOptional()
|
|
20
23
|
@IsString()
|
|
21
24
|
@ApiProperty()
|
|
22
25
|
display: string;
|
|
26
|
+
|
|
23
27
|
@IsNotEmpty()
|
|
24
28
|
@IsOptional()
|
|
25
29
|
@IsString()
|
|
26
30
|
@ApiProperty()
|
|
27
31
|
description: string;
|
|
32
|
+
|
|
28
33
|
@IsOptional()
|
|
29
34
|
@IsBoolean()
|
|
30
35
|
@ApiProperty()
|
|
31
36
|
default: boolean;
|
|
37
|
+
|
|
32
38
|
@IsOptional()
|
|
33
39
|
@IsInt()
|
|
34
40
|
@ApiProperty()
|
|
35
41
|
sequence: number;
|
|
42
|
+
|
|
36
43
|
@IsOptional()
|
|
37
44
|
@IsInt()
|
|
38
45
|
@ApiProperty()
|
|
39
46
|
moduleId: number;
|
|
47
|
+
|
|
40
48
|
@IsString()
|
|
41
49
|
@IsOptional()
|
|
42
50
|
@ApiProperty()
|
|
@@ -8,41 +8,50 @@ export class UpdateMenuItemMetadataDto {
|
|
|
8
8
|
@IsOptional()
|
|
9
9
|
@IsInt()
|
|
10
10
|
id: number;
|
|
11
|
+
|
|
11
12
|
@IsNotEmpty()
|
|
12
13
|
@IsOptional()
|
|
13
14
|
@Matches(/[a-z]+(-[a-z]+)*/)
|
|
14
15
|
@IsString()
|
|
15
16
|
@ApiProperty()
|
|
16
17
|
name: string;
|
|
18
|
+
|
|
17
19
|
@IsNotEmpty()
|
|
18
20
|
@IsOptional()
|
|
19
21
|
@IsString()
|
|
20
22
|
@ApiProperty()
|
|
21
23
|
displayName: string;
|
|
24
|
+
|
|
22
25
|
@IsOptional()
|
|
23
26
|
@IsInt()
|
|
24
27
|
@ApiProperty()
|
|
25
28
|
moduleId: number;
|
|
29
|
+
|
|
26
30
|
@IsString()
|
|
27
31
|
@IsOptional()
|
|
28
32
|
@ApiProperty()
|
|
29
33
|
moduleUserKey: string;
|
|
34
|
+
|
|
30
35
|
@IsOptional()
|
|
31
36
|
@IsInt()
|
|
32
37
|
@ApiProperty()
|
|
33
38
|
parentMenuItemId: number;
|
|
39
|
+
|
|
34
40
|
@IsString()
|
|
35
41
|
@IsOptional()
|
|
36
42
|
@ApiProperty()
|
|
37
43
|
parentMenuItemUserKey: string;
|
|
44
|
+
|
|
38
45
|
@IsOptional()
|
|
39
46
|
@IsInt()
|
|
40
47
|
@ApiProperty()
|
|
41
48
|
actionId: number;
|
|
49
|
+
|
|
42
50
|
@IsString()
|
|
43
51
|
@IsOptional()
|
|
44
52
|
@ApiProperty()
|
|
45
53
|
actionUserKey: string;
|
|
54
|
+
|
|
46
55
|
@Transform(arrayTransformer)
|
|
47
56
|
@IsOptional()
|
|
48
57
|
@ApiProperty()
|
|
@@ -50,14 +59,17 @@ export class UpdateMenuItemMetadataDto {
|
|
|
50
59
|
@ValidateNested({ each: true })
|
|
51
60
|
@Type(() => UpdateRoleMetadataDto)
|
|
52
61
|
roles: UpdateRoleMetadataDto[];
|
|
62
|
+
|
|
53
63
|
@IsOptional()
|
|
54
64
|
@IsArray()
|
|
55
65
|
@ApiProperty()
|
|
56
66
|
rolesIds: number[];
|
|
67
|
+
|
|
57
68
|
@IsString()
|
|
58
69
|
@IsOptional()
|
|
59
70
|
@ApiProperty()
|
|
60
71
|
rolesCommand: string;
|
|
72
|
+
|
|
61
73
|
@IsOptional()
|
|
62
74
|
@IsNumber()
|
|
63
75
|
@ApiProperty()
|
|
@@ -5,66 +5,81 @@ export class UpdateScheduledJobDto {
|
|
|
5
5
|
@IsOptional()
|
|
6
6
|
@IsInt()
|
|
7
7
|
id: number;
|
|
8
|
+
|
|
8
9
|
@IsNotEmpty()
|
|
9
10
|
@IsOptional()
|
|
10
11
|
@IsString()
|
|
11
12
|
@ApiProperty()
|
|
12
13
|
scheduleName: string;
|
|
14
|
+
|
|
13
15
|
@IsNotEmpty()
|
|
14
16
|
@IsOptional()
|
|
15
17
|
@IsBoolean()
|
|
16
18
|
@ApiProperty()
|
|
17
19
|
isActive: boolean;
|
|
20
|
+
|
|
18
21
|
@IsNotEmpty()
|
|
19
22
|
@IsOptional()
|
|
20
23
|
@IsString()
|
|
21
24
|
@ApiProperty()
|
|
22
25
|
frequency: string;
|
|
26
|
+
|
|
23
27
|
@IsOptional()
|
|
24
28
|
@IsDate()
|
|
25
29
|
@ApiProperty()
|
|
26
30
|
startTime: Date;
|
|
31
|
+
|
|
27
32
|
@IsOptional()
|
|
28
33
|
@IsDate()
|
|
29
34
|
@ApiProperty()
|
|
30
35
|
endTime: Date;
|
|
36
|
+
|
|
31
37
|
@IsOptional()
|
|
32
38
|
@IsDate()
|
|
33
39
|
@ApiProperty()
|
|
34
40
|
startDate: Date;
|
|
41
|
+
|
|
35
42
|
@IsOptional()
|
|
36
43
|
@IsDate()
|
|
37
44
|
@ApiProperty()
|
|
38
45
|
endDate: Date;
|
|
46
|
+
|
|
39
47
|
@IsOptional()
|
|
40
48
|
@IsInt()
|
|
41
49
|
@ApiProperty()
|
|
42
50
|
dayOfMonth: number;
|
|
51
|
+
|
|
43
52
|
@IsOptional()
|
|
44
53
|
@IsDate()
|
|
45
54
|
@ApiProperty()
|
|
46
55
|
lastRunAt: Date;
|
|
56
|
+
|
|
47
57
|
@IsOptional()
|
|
48
58
|
@IsDate()
|
|
49
59
|
@ApiProperty()
|
|
50
60
|
nextRunAt: Date;
|
|
61
|
+
|
|
51
62
|
@IsOptional()
|
|
52
63
|
@IsString()
|
|
53
64
|
@ApiProperty()
|
|
54
65
|
dayOfWeek: string;
|
|
66
|
+
|
|
55
67
|
@IsNotEmpty()
|
|
56
68
|
@IsOptional()
|
|
57
69
|
@IsString()
|
|
58
70
|
@ApiProperty()
|
|
59
71
|
job: string;
|
|
72
|
+
|
|
60
73
|
@IsOptional()
|
|
61
74
|
@IsString()
|
|
62
75
|
@ApiProperty()
|
|
63
76
|
cronExpression: string;
|
|
77
|
+
|
|
64
78
|
@IsOptional()
|
|
65
79
|
@IsInt()
|
|
66
80
|
@ApiProperty()
|
|
67
81
|
moduleId: number;
|
|
82
|
+
|
|
68
83
|
@IsString()
|
|
69
84
|
@IsOptional()
|
|
70
85
|
@ApiProperty()
|
|
@@ -5,32 +5,39 @@ export class UpdateSecurityRuleDto {
|
|
|
5
5
|
@IsOptional()
|
|
6
6
|
@IsInt()
|
|
7
7
|
id: number;
|
|
8
|
+
|
|
8
9
|
@IsNotEmpty()
|
|
9
10
|
@IsOptional()
|
|
10
11
|
@IsString()
|
|
11
12
|
@ApiProperty()
|
|
12
13
|
name: string;
|
|
14
|
+
|
|
13
15
|
@IsNotEmpty()
|
|
14
16
|
@IsOptional()
|
|
15
17
|
@IsString()
|
|
16
18
|
@ApiProperty()
|
|
17
19
|
description: string;
|
|
20
|
+
|
|
18
21
|
@IsOptional()
|
|
19
22
|
@IsInt()
|
|
20
23
|
@ApiProperty()
|
|
21
24
|
roleId: number;
|
|
25
|
+
|
|
22
26
|
@IsString()
|
|
23
27
|
@IsOptional()
|
|
24
28
|
@ApiProperty()
|
|
25
29
|
roleUserKey: string;
|
|
30
|
+
|
|
26
31
|
@IsOptional()
|
|
27
32
|
@IsInt()
|
|
28
33
|
@ApiProperty()
|
|
29
34
|
modelMetadataId: number;
|
|
35
|
+
|
|
30
36
|
@IsString()
|
|
31
37
|
@IsOptional()
|
|
32
38
|
@ApiProperty()
|
|
33
39
|
modelMetadataUserKey: string;
|
|
40
|
+
|
|
34
41
|
@IsNotEmpty()
|
|
35
42
|
@IsOptional()
|
|
36
43
|
@IsJSON()
|
|
@@ -3,42 +3,42 @@ import { CreateSmsTemplateDto } from './create-sms-template.dto';
|
|
|
3
3
|
import { IsString } from 'class-validator';
|
|
4
4
|
import { IsOptional, Matches, IsNotEmpty, IsBoolean } from 'class-validator';
|
|
5
5
|
|
|
6
|
-
export class UpdateSmsTemplateDto extends PartialType(CreateSmsTemplateDto) {
|
|
7
|
-
@IsOptional()
|
|
8
|
-
@IsString()
|
|
9
|
-
@ApiProperty()
|
|
10
|
-
type: string;
|
|
6
|
+
export class UpdateSmsTemplateDto extends PartialType(CreateSmsTemplateDto) {
|
|
7
|
+
@IsOptional()
|
|
8
|
+
@IsString()
|
|
9
|
+
@ApiProperty()
|
|
10
|
+
type: string;
|
|
11
11
|
|
|
12
|
-
@IsNotEmpty()
|
|
13
|
-
@IsOptional()
|
|
14
|
-
@Matches(/[a-z]+(-[a-z]+)*/)
|
|
15
|
-
@IsString()
|
|
16
|
-
@ApiProperty()
|
|
17
|
-
name: string;
|
|
12
|
+
@IsNotEmpty()
|
|
13
|
+
@IsOptional()
|
|
14
|
+
@Matches(/[a-z]+(-[a-z]+)*/)
|
|
15
|
+
@IsString()
|
|
16
|
+
@ApiProperty()
|
|
17
|
+
name: string;
|
|
18
18
|
|
|
19
|
-
@IsOptional()
|
|
20
|
-
@IsString()
|
|
21
|
-
@ApiProperty()
|
|
22
|
-
smsProviderTemplateId: string;
|
|
19
|
+
@IsOptional()
|
|
20
|
+
@IsString()
|
|
21
|
+
@ApiProperty()
|
|
22
|
+
smsProviderTemplateId: string;
|
|
23
23
|
|
|
24
|
-
@IsNotEmpty()
|
|
25
|
-
@IsOptional()
|
|
26
|
-
@IsString()
|
|
27
|
-
@ApiProperty()
|
|
28
|
-
displayName: string;
|
|
24
|
+
@IsNotEmpty()
|
|
25
|
+
@IsOptional()
|
|
26
|
+
@IsString()
|
|
27
|
+
@ApiProperty()
|
|
28
|
+
displayName: string;
|
|
29
29
|
|
|
30
|
-
@IsOptional()
|
|
31
|
-
@IsString()
|
|
32
|
-
@ApiProperty()
|
|
33
|
-
body: string;
|
|
30
|
+
@IsOptional()
|
|
31
|
+
@IsString()
|
|
32
|
+
@ApiProperty()
|
|
33
|
+
body: string;
|
|
34
34
|
|
|
35
|
-
@IsOptional()
|
|
36
|
-
@IsString()
|
|
37
|
-
@ApiProperty()
|
|
38
|
-
description: string;
|
|
35
|
+
@IsOptional()
|
|
36
|
+
@IsString()
|
|
37
|
+
@ApiProperty()
|
|
38
|
+
description: string;
|
|
39
39
|
|
|
40
|
-
@IsOptional()
|
|
41
|
-
@IsBoolean()
|
|
42
|
-
@ApiProperty()
|
|
43
|
-
active: boolean;
|
|
40
|
+
@IsOptional()
|
|
41
|
+
@IsBoolean()
|
|
42
|
+
@ApiProperty()
|
|
43
|
+
active: boolean;
|
|
44
44
|
} { }
|
|
@@ -7,58 +7,70 @@ export class UpdateViewMetadataDto {
|
|
|
7
7
|
@IsOptional()
|
|
8
8
|
@IsInt()
|
|
9
9
|
id: number;
|
|
10
|
+
|
|
10
11
|
@IsNotEmpty()
|
|
11
12
|
@IsOptional()
|
|
12
13
|
@Matches(/[a-z]+(-[a-z]+)*/)
|
|
13
14
|
@IsString()
|
|
14
15
|
@ApiProperty()
|
|
15
16
|
name: string;
|
|
17
|
+
|
|
16
18
|
@IsNotEmpty()
|
|
17
19
|
@IsOptional()
|
|
18
20
|
@IsString()
|
|
19
21
|
@ApiProperty()
|
|
20
22
|
displayName: string;
|
|
23
|
+
|
|
21
24
|
@IsNotEmpty()
|
|
22
25
|
@IsOptional()
|
|
23
26
|
@IsString()
|
|
24
27
|
@ApiProperty()
|
|
25
28
|
type: string;
|
|
29
|
+
|
|
26
30
|
@IsNotEmpty()
|
|
27
31
|
@IsOptional()
|
|
28
32
|
@IsJSON()
|
|
29
33
|
@ApiProperty()
|
|
30
34
|
context: any;
|
|
35
|
+
|
|
31
36
|
@IsNotEmpty()
|
|
32
37
|
@IsOptional()
|
|
33
38
|
@IsJSON()
|
|
34
39
|
@ApiProperty()
|
|
35
40
|
layout: any;
|
|
41
|
+
|
|
36
42
|
@IsOptional()
|
|
37
43
|
@IsInt()
|
|
38
44
|
@ApiProperty()
|
|
39
45
|
moduleId: number;
|
|
46
|
+
|
|
40
47
|
@IsString()
|
|
41
48
|
@IsOptional()
|
|
42
49
|
@ApiProperty()
|
|
43
50
|
moduleUserKey: string;
|
|
51
|
+
|
|
44
52
|
@IsOptional()
|
|
45
53
|
@IsInt()
|
|
46
54
|
@ApiProperty()
|
|
47
55
|
modelId: number;
|
|
56
|
+
|
|
48
57
|
@IsString()
|
|
49
58
|
@IsOptional()
|
|
50
59
|
@ApiProperty()
|
|
51
60
|
modelUserKey: string;
|
|
61
|
+
|
|
52
62
|
@IsOptional()
|
|
53
63
|
@ApiProperty()
|
|
54
64
|
@IsArray()
|
|
55
65
|
@ValidateNested({ each: true })
|
|
56
66
|
@Type(() => UpdateUserViewMetadataDto)
|
|
57
67
|
userViewMetadata: UpdateUserViewMetadataDto[];
|
|
68
|
+
|
|
58
69
|
@IsOptional()
|
|
59
70
|
@IsArray()
|
|
60
71
|
@ApiProperty()
|
|
61
72
|
userViewMetadataIds: number[];
|
|
73
|
+
|
|
62
74
|
@IsString()
|
|
63
75
|
@IsOptional()
|
|
64
76
|
@ApiProperty()
|
|
@@ -111,6 +111,9 @@ export class User extends CommonEntity {
|
|
|
111
111
|
// dont send to client
|
|
112
112
|
@Column({ nullable: true })
|
|
113
113
|
rehashedAt: Date;
|
|
114
|
+
// dont send to client
|
|
115
|
+
@Column({ type: "int", default: 0 })
|
|
116
|
+
failedLoginAttempts: number = 0;
|
|
114
117
|
@Expose()
|
|
115
118
|
_media: any;
|
|
116
119
|
}
|
|
@@ -14,6 +14,8 @@ export interface ManyToManyRelationFieldOptions {
|
|
|
14
14
|
entityManager: EntityManager;
|
|
15
15
|
fieldName: string;
|
|
16
16
|
relationCoModelFieldName?: string;
|
|
17
|
+
isUpdate?: boolean;
|
|
18
|
+
entityId?: number;
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
const linkCommands = [RelationFieldsCommand.link, RelationFieldsCommand.unlink, RelationFieldsCommand.set];
|
|
@@ -74,16 +76,21 @@ export class ManyToManyRelationFieldCrudManager implements FieldCrudManager {
|
|
|
74
76
|
const relatedEntityName = classify(this.options.relationCoModelSingularName);
|
|
75
77
|
const relatedEntityRepository = this.options.entityManager.getRepository(relatedEntityName)
|
|
76
78
|
|
|
77
|
-
|
|
79
|
+
const result = await this.transformByCommand(dto, relatedEntityRepository, currentEntityRepository);
|
|
80
|
+
if (result !== undefined) {
|
|
81
|
+
dto[this.valueFieldName] = result;
|
|
82
|
+
} else {
|
|
83
|
+
delete dto[this.valueFieldName];
|
|
84
|
+
}
|
|
78
85
|
return dto;
|
|
79
86
|
}
|
|
80
87
|
|
|
81
|
-
private async transformByCommand(dto: any, relatedEntityRepository: any, currentEntityRepository: any): Promise<any[]> {
|
|
88
|
+
private async transformByCommand(dto: any, relatedEntityRepository: any, currentEntityRepository: any): Promise<any[] | undefined> {
|
|
82
89
|
// TODO : Need to add support for the multiple commands
|
|
83
90
|
const command = dto[this.commandFieldName];
|
|
84
91
|
const values = dto[this.valueFieldName];
|
|
85
92
|
const ids = dto[this.idFieldName];
|
|
86
|
-
|
|
93
|
+
|
|
87
94
|
switch (command) {
|
|
88
95
|
case RelationFieldsCommand.create:
|
|
89
96
|
return await this.transformForCommandCreate(values, relatedEntityRepository);
|
|
@@ -94,15 +101,15 @@ export class ManyToManyRelationFieldCrudManager implements FieldCrudManager {
|
|
|
94
101
|
case RelationFieldsCommand.clear:
|
|
95
102
|
return this.transformForCommandClear();
|
|
96
103
|
case RelationFieldsCommand.set:
|
|
97
|
-
return await this.transformForCommandSet(ids, relatedEntityRepository
|
|
104
|
+
return await this.transformForCommandSet(ids, relatedEntityRepository);
|
|
98
105
|
case RelationFieldsCommand.link:
|
|
99
|
-
return await this.tranformForCommandLink(ids, relatedEntityRepository
|
|
106
|
+
return await this.tranformForCommandLink(ids, relatedEntityRepository);
|
|
100
107
|
case RelationFieldsCommand.unlink:
|
|
101
|
-
return await this.transformForCommandUnLink(ids
|
|
108
|
+
return await this.transformForCommandUnLink(ids);
|
|
102
109
|
default:
|
|
103
110
|
this.logger.log(`Invalid command ${command}`);
|
|
104
111
|
return null;
|
|
105
|
-
|
|
112
|
+
|
|
106
113
|
}
|
|
107
114
|
}
|
|
108
115
|
|
|
@@ -110,46 +117,50 @@ export class ManyToManyRelationFieldCrudManager implements FieldCrudManager {
|
|
|
110
117
|
return []
|
|
111
118
|
}
|
|
112
119
|
|
|
113
|
-
private async transformForCommandSet(ids: any[], relatedEntityRepository: any
|
|
114
|
-
// Load the entities with the ids passed
|
|
120
|
+
private async transformForCommandSet(ids: any[], relatedEntityRepository: any): Promise<any[]> {
|
|
115
121
|
const loadedEntities: any[] = await relatedEntityRepository.find({
|
|
116
|
-
where : {id: In(ids) }
|
|
122
|
+
where : {id: In(ids) }
|
|
117
123
|
})
|
|
118
124
|
if (loadedEntities.length !== ids.length) {
|
|
119
|
-
throw new Error('Invalid entity ids provided for
|
|
125
|
+
throw new Error('Invalid entity ids provided for set');
|
|
120
126
|
}
|
|
121
127
|
|
|
122
128
|
return loadedEntities;
|
|
123
129
|
}
|
|
124
130
|
|
|
125
|
-
private async tranformForCommandLink(ids: any, relatedEntityRepository: any
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
131
|
+
private async tranformForCommandLink(ids: any[], relatedEntityRepository: any): Promise<undefined> {
|
|
132
|
+
if (!this.options.isUpdate) {
|
|
133
|
+
throw new Error('Link command is only supported for update operations');
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const count: number = await relatedEntityRepository.count({
|
|
137
|
+
where: { id: In(ids) }
|
|
138
|
+
});
|
|
139
|
+
if (count !== ids.length) {
|
|
132
140
|
throw new Error('Invalid entity ids provided for linking');
|
|
133
141
|
}
|
|
134
|
-
tranformedRelatedFields.push(...loadedEntities);
|
|
135
142
|
|
|
136
|
-
|
|
143
|
+
await this.options.entityManager
|
|
144
|
+
.createQueryBuilder()
|
|
145
|
+
.relation(classify(this.options.modelSingularName), this.valueFieldName)
|
|
146
|
+
.of(this.options.entityId)
|
|
147
|
+
.add(ids);
|
|
148
|
+
|
|
149
|
+
return undefined;
|
|
137
150
|
}
|
|
138
151
|
|
|
139
|
-
private async transformForCommandUnLink(ids: any
|
|
140
|
-
if (
|
|
141
|
-
throw new Error('
|
|
142
|
-
}
|
|
152
|
+
private async transformForCommandUnLink(ids: any[]): Promise<undefined> {
|
|
153
|
+
if (!this.options.isUpdate) {
|
|
154
|
+
throw new Error('Unlink command is only supported for update operations');
|
|
155
|
+
}
|
|
143
156
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const filteredEntities = entityInstance[this.valueFieldName].filter((entity) => !ids.includes(entity.id));
|
|
150
|
-
tranformedRelatedFields.push(...filteredEntities);
|
|
157
|
+
await this.options.entityManager
|
|
158
|
+
.createQueryBuilder()
|
|
159
|
+
.relation(classify(this.options.modelSingularName), this.valueFieldName)
|
|
160
|
+
.of(this.options.entityId)
|
|
161
|
+
.remove(ids);
|
|
151
162
|
|
|
152
|
-
return
|
|
163
|
+
return undefined;
|
|
153
164
|
}
|
|
154
165
|
|
|
155
166
|
private async transformForCommandCreate(values: any[], relatedEntityRepository: any): Promise<any[]> {
|