@solidstarters/solid-core 1.2.39 → 1.2.40

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 (107) hide show
  1. package/dist/controllers/media.controller.d.ts +27 -10
  2. package/dist/controllers/media.controller.d.ts.map +1 -1
  3. package/dist/controllers/media.controller.js +117 -42
  4. package/dist/controllers/media.controller.js.map +1 -1
  5. package/dist/dtos/create-media.dto.d.ts +5 -2
  6. package/dist/dtos/create-media.dto.d.ts.map +1 -1
  7. package/dist/dtos/create-media.dto.js +45 -17
  8. package/dist/dtos/create-media.dto.js.map +1 -1
  9. package/dist/dtos/update-media.dto.d.ts +13 -4
  10. package/dist/dtos/update-media.dto.d.ts.map +1 -1
  11. package/dist/dtos/update-media.dto.js +85 -4
  12. package/dist/dtos/update-media.dto.js.map +1 -1
  13. package/dist/entities/media.entity.d.ts +6 -6
  14. package/dist/entities/media.entity.d.ts.map +1 -1
  15. package/dist/entities/media.entity.js +20 -26
  16. package/dist/entities/media.entity.js.map +1 -1
  17. package/dist/repository/media.repository.d.ts +16 -0
  18. package/dist/repository/media.repository.d.ts.map +1 -0
  19. package/dist/repository/media.repository.js +90 -0
  20. package/dist/repository/media.repository.js.map +1 -0
  21. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  22. package/dist/seeders/module-metadata-seeder.service.js +5 -0
  23. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  24. package/dist/seeders/seed-data/solid-core-metadata.json +154 -38
  25. package/dist/services/action-metadata.service.d.ts +3 -6
  26. package/dist/services/action-metadata.service.d.ts.map +1 -1
  27. package/dist/services/action-metadata.service.js +7 -11
  28. package/dist/services/action-metadata.service.js.map +1 -1
  29. package/dist/services/crud.service.d.ts +3 -6
  30. package/dist/services/crud.service.d.ts.map +1 -1
  31. package/dist/services/crud.service.js +5 -6
  32. package/dist/services/crud.service.js.map +1 -1
  33. package/dist/services/media.service.d.ts +32 -22
  34. package/dist/services/media.service.d.ts.map +1 -1
  35. package/dist/services/media.service.js +64 -134
  36. package/dist/services/media.service.js.map +1 -1
  37. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +3 -3
  38. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  39. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +28 -9
  40. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  41. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +3 -3
  42. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  43. package/dist/services/mediaStorageProviders/file-storage-provider.js +28 -9
  44. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  45. package/dist/services/mediaStorageProviders/index.d.ts +2 -5
  46. package/dist/services/mediaStorageProviders/index.d.ts.map +1 -1
  47. package/dist/services/mediaStorageProviders/index.js +4 -4
  48. package/dist/services/mediaStorageProviders/index.js.map +1 -1
  49. package/dist/services/menu-item-metadata.service.d.ts +3 -6
  50. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  51. package/dist/services/menu-item-metadata.service.js +7 -11
  52. package/dist/services/menu-item-metadata.service.js.map +1 -1
  53. package/dist/services/mq-message-queue.service.d.ts +3 -6
  54. package/dist/services/mq-message-queue.service.d.ts.map +1 -1
  55. package/dist/services/mq-message-queue.service.js +7 -11
  56. package/dist/services/mq-message-queue.service.js.map +1 -1
  57. package/dist/services/mq-message.service.d.ts +3 -6
  58. package/dist/services/mq-message.service.d.ts.map +1 -1
  59. package/dist/services/mq-message.service.js +7 -11
  60. package/dist/services/mq-message.service.js.map +1 -1
  61. package/dist/services/permission-metadata.service.d.ts +3 -6
  62. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  63. package/dist/services/permission-metadata.service.js +7 -11
  64. package/dist/services/permission-metadata.service.js.map +1 -1
  65. package/dist/services/role-metadata.service.d.ts +3 -6
  66. package/dist/services/role-metadata.service.d.ts.map +1 -1
  67. package/dist/services/role-metadata.service.js +8 -12
  68. package/dist/services/role-metadata.service.js.map +1 -1
  69. package/dist/services/setting.service.d.ts +8 -11
  70. package/dist/services/setting.service.d.ts.map +1 -1
  71. package/dist/services/setting.service.js +15 -19
  72. package/dist/services/setting.service.js.map +1 -1
  73. package/dist/services/user.service.d.ts +8 -11
  74. package/dist/services/user.service.d.ts.map +1 -1
  75. package/dist/services/user.service.js +14 -18
  76. package/dist/services/user.service.js.map +1 -1
  77. package/dist/services/view-metadata.service.d.ts +9 -12
  78. package/dist/services/view-metadata.service.d.ts.map +1 -1
  79. package/dist/services/view-metadata.service.js +15 -19
  80. package/dist/services/view-metadata.service.js.map +1 -1
  81. package/dist/solid-core.module.d.ts.map +1 -1
  82. package/dist/solid-core.module.js +6 -0
  83. package/dist/solid-core.module.js.map +1 -1
  84. package/dist/tsconfig.tsbuildinfo +1 -1
  85. package/package.json +1 -1
  86. package/src/controllers/media.controller.ts +97 -68
  87. package/src/dtos/create-media.dto.ts +57 -33
  88. package/src/dtos/update-media.dto.ts +61 -3
  89. package/src/entities/media.entity.ts +29 -31
  90. package/src/repository/media.repository.ts +74 -0
  91. package/src/seeders/module-metadata-seeder.service.ts +5 -0
  92. package/src/seeders/seed-data/solid-core-metadata.json +160 -42
  93. package/src/services/action-metadata.service.ts +4 -6
  94. package/src/services/crud.service.ts +5 -9
  95. package/src/services/media.service.ts +160 -270
  96. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +8 -7
  97. package/src/services/mediaStorageProviders/file-storage-provider.ts +10 -8
  98. package/src/services/mediaStorageProviders/index.ts +7 -13
  99. package/src/services/menu-item-metadata.service.ts +4 -6
  100. package/src/services/mq-message-queue.service.ts +4 -6
  101. package/src/services/mq-message.service.ts +5 -8
  102. package/src/services/permission-metadata.service.ts +4 -6
  103. package/src/services/role-metadata.service.ts +4 -6
  104. package/src/services/setting.service.ts +18 -20
  105. package/src/services/user.service.ts +11 -14
  106. package/src/services/view-metadata.service.ts +10 -12
  107. package/src/solid-core.module.ts +6 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidstarters/solid-core",
3
- "version": "1.2.39",
3
+ "version": "1.2.40",
4
4
  "description": "This module is a NestJS module containing all the required core providers required by a Solid application",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,75 +1,104 @@
1
- import { Body, Controller, Delete, Get, Logger, Param, ParseIntPipe, Post, Query, UploadedFile, UploadedFiles, UseInterceptors } from '@nestjs/common';
1
+ import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch } from '@nestjs/common';
2
+ import { AnyFilesInterceptor } from "@nestjs/platform-express";
2
3
  import { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';
3
- import { PaginationQueryDto } from 'src/dtos/pagination-query.dto';
4
- import { MediaService } from '../services/media.service';
5
- import { BasicFilterDto } from '../dtos/basic-filters.dto';
6
- import { CreateMediaDto } from '../dtos/create-media.dto';
7
4
  import { Public } from 'src/decorators/public.decorator';
8
- import { AnyFilesInterceptor } from '@nestjs/platform-express';
5
+ import { MediaService } from 'src/services/media.service';
6
+ import { CreateMediaDto } from 'src/dtos/create-media.dto';
7
+ import { UpdateMediaDto } from 'src/dtos/update-media.dto';
9
8
 
9
+ enum ShowSoftDeleted {
10
+ INCLUSIVE = "inclusive",
11
+ EXCLUSIVE = "exclusive",
12
+ }
13
+
14
+ @ApiTags('Solid Core')
10
15
  @Controller('media')
11
- @ApiTags("App Builder")
12
16
  export class MediaController {
13
- private logger = new Logger(MediaController.name);
14
-
15
- constructor(
16
- private readonly mediaService: MediaService
17
- ) { }
18
-
19
- @ApiBearerAuth("jwt")
20
- @ApiQuery({ name: 'limit', required: false, type: Number })
21
- @ApiQuery({ name: 'offset', required: false, type: Number })
22
- @ApiQuery({ name: 'fields', required: false, type: Array })
23
- @ApiQuery({ name: 'sort', required: false, type: Array })
24
- @ApiQuery({ name: 'groupBy', required: false, type: Array })
25
- @ApiQuery({ name: 'populate', required: false, type: Array })
26
- @ApiQuery({ name: 'populateMedia', required: false, type: Array })
27
- @ApiQuery({ name: 'filters', required: false, type: Array })
28
- @Get()
29
- async findMany(
30
- @Query() basicFilterDto: BasicFilterDto
31
- ) {
32
- return this.mediaService.findMany(basicFilterDto);
33
- }
34
-
35
- @ApiBearerAuth("jwt")
36
- @Get(':id')
37
- findOne(@Param('id', ParseIntPipe) id: number) {
38
- return this.mediaService.findOne(id);
39
- }
40
-
41
- @ApiBearerAuth("jwt")
42
- @Post()
43
- create(@Body() createDto: CreateMediaDto) {
44
- // this.logger.log(`Creating a new model: ${JSON.stringify(createDto)}`);
45
- return this.mediaService.create(createDto);
46
- }
47
-
48
- @Public()
49
- @ApiBearerAuth("jwt")
50
- @Post('/upload')
51
- @UseInterceptors(AnyFilesInterceptor())
52
- upload(@UploadedFiles() files: Array<Express.Multer.File>, @Body() createDto: CreateMediaDto, ) {
53
- // this.logger.log(`Creating a new model: ${JSON.stringify(createDto)}`);
54
- return this.mediaService.upload(createDto, files);
55
- }
56
-
57
-
58
-
59
- // @Patch(':id')
60
- // update(@Param('id') id: number, @Body() updateCountryDto: UpdateCountryDto) {
61
- // return this.countriesService.update(id, updateCountryDto);
62
- // }
63
- @ApiBearerAuth("jwt")
64
- @Delete('/bulk')
65
- async deleteMany(@Body() ids: number[]) {
66
- return this.mediaService.deleteMany(ids);
67
- }
68
-
69
- @ApiBearerAuth("jwt")
70
- @Delete(':id')
71
- async delete(@Param('id') id: number) {
72
- return this.mediaService.remove(id);
73
- }
17
+ constructor(private readonly service: MediaService) {}
18
+
19
+ @ApiBearerAuth("jwt")
20
+ @Post()
21
+ @UseInterceptors(AnyFilesInterceptor())
22
+ create(@Body() createDto: CreateMediaDto, @UploadedFiles() files: Array<Express.Multer.File>) {
23
+ return this.service.create(createDto, files);
24
+ }
25
+
26
+ @ApiBearerAuth("jwt")
27
+ @Post('/bulk')
28
+ @UseInterceptors(AnyFilesInterceptor())
29
+ insertMany(@Body() createDtos: CreateMediaDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {
30
+ return this.service.insertMany(createDtos, filesArray);
31
+ }
32
+
33
+
34
+ @ApiBearerAuth("jwt")
35
+ @Put(':id')
36
+ @UseInterceptors(AnyFilesInterceptor())
37
+ update(@Param('id') id: number, @Body() updateDto: UpdateMediaDto, @UploadedFiles() files: Array<Express.Multer.File>) {
38
+ return this.service.update(id, updateDto, files);
39
+ }
40
+
41
+ @ApiBearerAuth("jwt")
42
+ @Patch(':id')
43
+ @UseInterceptors(AnyFilesInterceptor())
44
+ partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateMediaDto, @UploadedFiles() files: Array<Express.Multer.File>) {
45
+ return this.service.update(id, updateDto, files, true);
46
+ }
47
+
48
+ @Public()
49
+ @ApiBearerAuth("jwt")
50
+ @Post('/upload')
51
+ @UseInterceptors(AnyFilesInterceptor())
52
+ upload(@UploadedFiles() files: Array<Express.Multer.File>, @Body() createDto: CreateMediaDto, ) {
53
+ // this.logger.log(`Creating a new model: ${JSON.stringify(createDto)}`);
54
+ return this.service.upload(createDto, files);
55
+ }
56
+
57
+
58
+ @ApiBearerAuth("jwt")
59
+ @Post('/bulk-recover')
60
+ async recoverMany(@Body() ids: number[]) {
61
+ return this.service.recoverMany(ids);
62
+ }
63
+
64
+ @ApiBearerAuth("jwt")
65
+ @Get('/recover/:id')
66
+ async recover(@Param('id') id: number) {
67
+ return this.service.recover(id);
68
+ }
69
+
70
+ @ApiBearerAuth("jwt")
71
+ @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })
72
+ @ApiQuery({ name: 'limit', required: false, type: Number })
73
+ @ApiQuery({ name: 'offset', required: false, type: Number })
74
+ @ApiQuery({ name: 'fields', required: false, type: Array })
75
+ @ApiQuery({ name: 'sort', required: false, type: Array })
76
+ @ApiQuery({ name: 'groupBy', required: false, type: Array })
77
+ @ApiQuery({ name: 'populate', required: false, type: Array })
78
+ @ApiQuery({ name: 'populateMedia', required: false, type: Array })
79
+ @ApiQuery({ name: 'filters', required: false, type: Array })
80
+ @Get()
81
+ async findMany(@Query() query: any) {
82
+ return this.service.find(query);
83
+ }
84
+
85
+ @ApiBearerAuth("jwt")
86
+ @Get(':id')
87
+ async findOne(@Param('id') id: string, @Query() query: any) {
88
+ return this.service.findOne(+id, query);
89
+ }
90
+
91
+ @ApiBearerAuth("jwt")
92
+ @Delete('/bulk')
93
+ async deleteMany(@Body() ids: number[]) {
94
+ return this.service.deleteMany(ids);
95
+ }
96
+
97
+ @ApiBearerAuth("jwt")
98
+ @Delete(':id')
99
+ async delete(@Param('id') id: number) {
100
+ return this.service.delete(id);
101
+ }
102
+
74
103
 
75
104
  }
@@ -1,35 +1,59 @@
1
- import { IsBoolean, IsEnum, IsInt, IsNotEmpty, IsOptional, IsString, isBoolean } from "class-validator";
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsInt } from 'class-validator';
3
+ import { IsNotEmpty, IsString, IsOptional } from 'class-validator';
2
4
  export class CreateMediaDto {
3
-
4
- @IsNotEmpty()
5
- @IsInt()
6
- entityId: number;
7
-
8
- @IsNotEmpty()
9
- @IsInt()
10
- modelMetadataId: number;
11
-
12
- @IsNotEmpty()
13
- @IsString()
14
- relativeUri: string;
15
-
16
- @IsOptional()
17
- @IsString()
18
- mimeType: string;
19
-
20
- @IsOptional()
21
- @IsInt()
22
- fileSize: number;
23
-
24
- @IsOptional()
25
- @IsString()
26
- originalFileName: string;
27
-
28
- @IsNotEmpty()
29
- @IsInt()
30
- mediaStorageProviderMetadataId: number;
31
-
32
- @IsNotEmpty()
33
- @IsInt()
34
- fieldMetadataId: number;
5
+ @IsNotEmpty()
6
+ @IsInt()
7
+ @ApiProperty()
8
+ entityId: number;
9
+
10
+ @IsOptional()
11
+ @IsString()
12
+ @ApiProperty()
13
+ relativeUri: string;
14
+
15
+ @IsOptional()
16
+ @IsInt()
17
+ @ApiProperty()
18
+ fileSize: number;
19
+
20
+ @IsOptional()
21
+ @IsString()
22
+ @ApiProperty()
23
+ mimeType: string;
24
+
25
+ @IsOptional()
26
+ @IsString()
27
+ @ApiProperty()
28
+ originalFileName: string;
29
+
30
+ @IsOptional()
31
+ @IsInt()
32
+ @ApiProperty()
33
+ modelMetadataId: number;
34
+
35
+ @IsString()
36
+ @IsOptional()
37
+ @ApiProperty()
38
+ modelMetadataUserKey: string;
39
+
40
+ @IsOptional()
41
+ @IsInt()
42
+ @ApiProperty()
43
+ mediaStorageProviderMetadataId: number;
44
+
45
+ @IsString()
46
+ @IsOptional()
47
+ @ApiProperty()
48
+ mediaStorageProviderMetadataUserKey: string;
49
+
50
+ @IsOptional()
51
+ @IsInt()
52
+ @ApiProperty()
53
+ fieldMetadataId: number;
54
+
55
+ @IsString()
56
+ @IsOptional()
57
+ @ApiProperty()
58
+ fieldMetadataUserKey: string;
35
59
  }
@@ -1,5 +1,63 @@
1
- import { PartialType } from "@nestjs/mapped-types";
2
- import { CreateMediaDto } from "./create-media.dto";
1
+ import { IsInt,IsOptional, IsNotEmpty, IsString } from 'class-validator';
2
+ import { ApiProperty } from '@nestjs/swagger';
3
+ export class UpdateMediaDto {
4
+ @IsOptional()
5
+ @IsInt()
6
+ id: number;
3
7
 
4
- export class UpdateMediaDto extends PartialType(CreateMediaDto) {
8
+ @IsNotEmpty()
9
+ @IsOptional()
10
+ @IsInt()
11
+ @ApiProperty()
12
+ entityId: number;
13
+
14
+ @IsOptional()
15
+ @IsString()
16
+ @ApiProperty()
17
+ relativeUri: string;
18
+
19
+ @IsOptional()
20
+ @IsInt()
21
+ @ApiProperty()
22
+ fileSize: number;
23
+
24
+ @IsOptional()
25
+ @IsString()
26
+ @ApiProperty()
27
+ mimeType: string;
28
+
29
+ @IsOptional()
30
+ @IsString()
31
+ @ApiProperty()
32
+ originalFileName: string;
33
+
34
+ @IsOptional()
35
+ @IsInt()
36
+ @ApiProperty()
37
+ modelMetadataId: number;
38
+
39
+ @IsString()
40
+ @IsOptional()
41
+ @ApiProperty()
42
+ modelMetadataUserKey: string;
43
+
44
+ @IsOptional()
45
+ @IsInt()
46
+ @ApiProperty()
47
+ mediaStorageProviderMetadataId: number;
48
+
49
+ @IsString()
50
+ @IsOptional()
51
+ @ApiProperty()
52
+ mediaStorageProviderMetadataUserKey: string;
53
+
54
+ @IsOptional()
55
+ @IsInt()
56
+ @ApiProperty()
57
+ fieldMetadataId: number;
58
+
59
+ @IsString()
60
+ @IsOptional()
61
+ @ApiProperty()
62
+ fieldMetadataUserKey: string;
5
63
  }
@@ -1,40 +1,38 @@
1
- import { CommonEntity } from "src/entities/common.entity";
2
- import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
3
- import { MediaStorageProviderMetadata } from "./media-storage-provider-metadata.entity";
4
- import { ModelMetadata } from "./model-metadata.entity";
5
- import Joi from "@hapi/joi";
6
- import { FieldMetadata } from "./field-metadata.entity";
7
-
1
+ import { CommonEntity } from 'src/entities/common.entity'
2
+ import {Entity, Column, Index, JoinColumn, ManyToOne} from 'typeorm';
3
+ import { ModelMetadata } from 'src/entities/model-metadata.entity';
4
+ import { MediaStorageProviderMetadata } from 'src/entities/media-storage-provider-metadata.entity';
5
+ import { FieldMetadata } from 'src/entities/field-metadata.entity'
8
6
  @Entity("ss_media")
9
- export class Media extends CommonEntity {
10
- @Index()
11
- @Column({ name: "entity_id" })
12
- entityId: number;
7
+ export class Media extends CommonEntity{
8
+ @Index()
9
+ @Column({ type: "integer" })
10
+ entityId: number;
13
11
 
14
- @Index()
15
- @ManyToOne(() => ModelMetadata)
16
- @JoinColumn({ name: "model_metadata_id" })
17
- modelMetadata: ModelMetadata;
12
+ @Column({ type: "varchar", nullable: true })
13
+ relativeUri: string;
18
14
 
19
- @Column({ name: "relative_uri" })
20
- relativeUri: string;
15
+ @Column({ type: "integer", nullable: true })
16
+ fileSize: number;
21
17
 
22
- @Column({ name: "mime_type", default: "" })
23
- mimeType: string = "";
18
+ @Column({ type: "varchar", nullable: true })
19
+ mimeType: string;
24
20
 
25
- @Column({ name: "file_size", default: 0 })
26
- fileSize: number = 0;
21
+ @Column({ type: "varchar", nullable: true })
22
+ originalFileName: string;
27
23
 
28
- @Column({ name: "original_file_name", default: "" })
29
- originalFileName: string = "";
24
+ @Index()
25
+ @ManyToOne(() => ModelMetadata, { onDelete: "SET NULL", nullable: false })
26
+ @JoinColumn()
27
+ modelMetadata: ModelMetadata;
30
28
 
31
- @Index()
32
- @ManyToOne(() => MediaStorageProviderMetadata)
33
- @JoinColumn({ name: "media_storage_provider_metadata_id" })
34
- mediaStorageProviderMetadata: MediaStorageProviderMetadata;
29
+ @Index()
30
+ @ManyToOne(() => MediaStorageProviderMetadata, { onDelete: "SET NULL", nullable: false })
31
+ @JoinColumn()
32
+ mediaStorageProviderMetadata: MediaStorageProviderMetadata;
35
33
 
36
- @Index()
37
- @ManyToOne(() => FieldMetadata)
38
- @JoinColumn({ name: "field_metadata_id" })
39
- fieldMetadata: FieldMetadata;
34
+ @Index()
35
+ @ManyToOne(() => FieldMetadata, { onDelete: "SET NULL", nullable: false })
36
+ @JoinColumn()
37
+ fieldMetadata: FieldMetadata;
40
38
  }
@@ -0,0 +1,74 @@
1
+ import { Repository, DataSource } from 'typeorm';
2
+ import { Injectable } from '@nestjs/common';
3
+ import { Media } from 'src/entities/media.entity';
4
+ import { FieldMetadata } from 'src/entities/field-metadata.entity';
5
+ import { InjectRepository } from '@nestjs/typeorm';
6
+ import { ModelMetadata } from 'src/entities/model-metadata.entity';
7
+ import { MediaStorageProviderMetadata } from 'src/entities/media-storage-provider-metadata.entity';
8
+
9
+ @Injectable()
10
+ export class MediaRepository extends Repository<Media> {
11
+ constructor(
12
+ private dataSource: DataSource,
13
+ @InjectRepository(ModelMetadata)
14
+ private readonly modelMetadataRepo: Repository<ModelMetadata>,
15
+ @InjectRepository(MediaStorageProviderMetadata)
16
+ private readonly mediaStorageProviderMetadataRepo: Repository<MediaStorageProviderMetadata>,
17
+ @InjectRepository(FieldMetadata)
18
+ private readonly fieldMetadataRepo: Repository<FieldMetadata>,
19
+
20
+ ) {
21
+ super(Media, dataSource.createEntityManager());
22
+ }
23
+
24
+ async createMedia(createDto: any) {
25
+ createDto['fieldMetadata'] = await this.fieldMetadataRepo.findOne({
26
+ where: {
27
+ id: createDto['fieldMetadataId']
28
+ },
29
+ });
30
+ createDto['modelMetadata'] = await this.modelMetadataRepo.findOne({
31
+ where: {
32
+ id: createDto['modelMetadataId']
33
+ },
34
+ });
35
+ createDto['mediaStorageProviderMetadata'] = await this.mediaStorageProviderMetadataRepo.findOne({
36
+ where: {
37
+ id: createDto['mediaStorageProviderMetadataId']
38
+ },
39
+ });
40
+ const media = this.create(createDto);
41
+ return this.save(media);
42
+ }
43
+
44
+ async findByEntityIdAndFieldIdAndModelMetadataId(entityId: number, fieldMetadataId: number, modelMetadataId: number, relations = {}) {
45
+ return await this.find({
46
+ where: {
47
+ modelMetadata: {
48
+ id: modelMetadataId
49
+ },
50
+ fieldMetadata: {
51
+ id: fieldMetadataId
52
+ },
53
+ entityId: entityId,
54
+ },
55
+ relations: relations,
56
+ });
57
+ }
58
+
59
+ async deleteByEntityIdAndFieldIdAndModelMetadataId(entityId: number, fieldMetadataId: number, modelMetadataId: number) {
60
+ const entities = await this.find({
61
+ where: {
62
+ modelMetadata: {
63
+ id: modelMetadataId
64
+ },
65
+ fieldMetadata: {
66
+ id: fieldMetadataId
67
+ },
68
+ entityId: entityId,
69
+ }
70
+ });
71
+ return this.remove(entities);
72
+ }
73
+
74
+ }
@@ -374,6 +374,11 @@ export class ModuleMetadataSeederService {
374
374
  actionData['model'] = await this.modelMetadataService.findOneByUserKey(actionData.modelUserKey);
375
375
  actionData['view'] = await this.solidViewService.findOneByUserKey(actionData.viewUserKey);
376
376
  }
377
+ else {
378
+ if (actionData.modelUserKey) {
379
+ actionData['model'] = await this.modelMetadataService.findOneByUserKey(actionData.modelUserKey);
380
+ }
381
+ }
377
382
  await this.solidActionService.upsert(actionData);
378
383
  }
379
384
  }