@solidstarters/solid-core 1.2.51 → 1.2.53

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 (94) hide show
  1. package/dist/controllers/list-of-values.controller.d.ts +41 -0
  2. package/dist/controllers/list-of-values.controller.d.ts.map +1 -0
  3. package/dist/controllers/list-of-values.controller.js +179 -0
  4. package/dist/controllers/list-of-values.controller.js.map +1 -0
  5. package/dist/controllers/saved-filters.controller.d.ts +41 -0
  6. package/dist/controllers/saved-filters.controller.d.ts.map +1 -0
  7. package/dist/controllers/saved-filters.controller.js +179 -0
  8. package/dist/controllers/saved-filters.controller.js.map +1 -0
  9. package/dist/dtos/create-field-metadata.dto.d.ts +1 -0
  10. package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
  11. package/dist/dtos/create-field-metadata.dto.js +6 -1
  12. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  13. package/dist/dtos/create-list-of-values.dto.d.ts +6 -6
  14. package/dist/dtos/create-list-of-values.dto.d.ts.map +1 -1
  15. package/dist/dtos/create-list-of-values.dto.js +24 -7
  16. package/dist/dtos/create-list-of-values.dto.js.map +1 -1
  17. package/dist/dtos/create-saved-filters.dto.d.ts +12 -0
  18. package/dist/dtos/create-saved-filters.dto.d.ts.map +1 -0
  19. package/dist/dtos/create-saved-filters.dto.js +80 -0
  20. package/dist/dtos/create-saved-filters.dto.js.map +1 -0
  21. package/dist/dtos/update-list-of-values.dto.d.ts +10 -0
  22. package/dist/dtos/update-list-of-values.dto.d.ts.map +1 -0
  23. package/dist/dtos/update-list-of-values.dto.js +67 -0
  24. package/dist/dtos/update-list-of-values.dto.js.map +1 -0
  25. package/dist/dtos/update-saved-filters.dto.d.ts +13 -0
  26. package/dist/dtos/update-saved-filters.dto.d.ts.map +1 -0
  27. package/dist/dtos/update-saved-filters.dto.js +82 -0
  28. package/dist/dtos/update-saved-filters.dto.js.map +1 -0
  29. package/dist/entities/field-metadata.entity.d.ts +1 -0
  30. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  31. package/dist/entities/field-metadata.entity.js +5 -1
  32. package/dist/entities/field-metadata.entity.js.map +1 -1
  33. package/dist/entities/list-of-values.entity.d.ts +1 -1
  34. package/dist/entities/list-of-values.entity.d.ts.map +1 -1
  35. package/dist/entities/list-of-values.entity.js +11 -7
  36. package/dist/entities/list-of-values.entity.js.map +1 -1
  37. package/dist/entities/saved-filters.entity.d.ts +13 -0
  38. package/dist/entities/saved-filters.entity.d.ts.map +1 -0
  39. package/dist/entities/saved-filters.entity.js +59 -0
  40. package/dist/entities/saved-filters.entity.js.map +1 -0
  41. package/dist/helpers/schematic.service.d.ts +1 -0
  42. package/dist/helpers/schematic.service.d.ts.map +1 -1
  43. package/dist/helpers/schematic.service.js +3 -0
  44. package/dist/helpers/schematic.service.js.map +1 -1
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +2 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/providers/list-of-values-selection-providers.service.js +2 -2
  50. package/dist/providers/list-of-values-selection-providers.service.js.map +1 -1
  51. package/dist/seeders/module-metadata-seeder.service.d.ts +6 -2
  52. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  53. package/dist/seeders/module-metadata-seeder.service.js +24 -8
  54. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  55. package/dist/seeders/seed-data/solid-core-metadata.json +1400 -332
  56. package/dist/services/field-metadata.service.d.ts.map +1 -1
  57. package/dist/services/field-metadata.service.js +1 -0
  58. package/dist/services/field-metadata.service.js.map +1 -1
  59. package/dist/services/list-of-values.service.d.ts +21 -10
  60. package/dist/services/list-of-values.service.d.ts.map +1 -1
  61. package/dist/services/list-of-values.service.js +43 -31
  62. package/dist/services/list-of-values.service.js.map +1 -1
  63. package/dist/services/model-metadata.service.d.ts.map +1 -1
  64. package/dist/services/model-metadata.service.js +18 -4
  65. package/dist/services/model-metadata.service.js.map +1 -1
  66. package/dist/services/saved-filters.service.d.ts +22 -0
  67. package/dist/services/saved-filters.service.d.ts.map +1 -0
  68. package/dist/services/saved-filters.service.js +56 -0
  69. package/dist/services/saved-filters.service.js.map +1 -0
  70. package/dist/solid-core.module.d.ts.map +1 -1
  71. package/dist/solid-core.module.js +12 -0
  72. package/dist/solid-core.module.js.map +1 -1
  73. package/dist/tsconfig.tsbuildinfo +1 -1
  74. package/package.json +1 -1
  75. package/src/controllers/list-of-values.controller.ts +93 -0
  76. package/src/controllers/saved-filters.controller.ts +93 -0
  77. package/src/dtos/create-field-metadata.dto.ts +6 -1
  78. package/src/dtos/create-list-of-values.dto.ts +27 -19
  79. package/src/dtos/create-saved-filters.dto.ts +42 -0
  80. package/src/dtos/update-list-of-values.dto.ts +36 -0
  81. package/src/dtos/update-saved-filters.dto.ts +45 -0
  82. package/src/entities/field-metadata.entity.ts +6 -0
  83. package/src/entities/list-of-values.entity.ts +9 -14
  84. package/src/entities/saved-filters.entity.ts +24 -0
  85. package/src/helpers/schematic.service.ts +5 -0
  86. package/src/index.ts +2 -0
  87. package/src/providers/list-of-values-selection-providers.service.ts +2 -2
  88. package/src/seeders/module-metadata-seeder.service.ts +22 -3
  89. package/src/seeders/seed-data/solid-core-metadata.json +1646 -578
  90. package/src/services/field-metadata.service.ts +9 -8
  91. package/src/services/list-of-values.service.ts +55 -47
  92. package/src/services/model-metadata.service.ts +19 -4
  93. package/src/services/saved-filters.service.ts +34 -0
  94. package/src/solid-core.module.ts +12 -0
@@ -68,9 +68,9 @@ export class FieldMetadataService {
68
68
  private: false,
69
69
  encrypt: false,
70
70
  model: relationModel,
71
- columnName:null,
71
+ columnName: null,
72
72
  relationJoinTableName: null,
73
- id : null,
73
+ id: null,
74
74
  }
75
75
 
76
76
  // Load the inverse field,
@@ -98,9 +98,9 @@ export class FieldMetadataService {
98
98
  private: false,
99
99
  encrypt: false,
100
100
  model: relationModel,
101
- columnName:null,
101
+ columnName: null,
102
102
  relationJoinTableName: null,
103
- id : null,
103
+ id: null,
104
104
  }
105
105
 
106
106
  // Load the inverse field,
@@ -129,10 +129,10 @@ export class FieldMetadataService {
129
129
  private: false,
130
130
  encrypt: false,
131
131
  model: relationModel,
132
- columnName:null,
132
+ columnName: null,
133
133
  relationJoinTableName: null,
134
134
  isRelationManyToManyOwner: false,
135
- id : null,
135
+ id: null,
136
136
  }
137
137
  const savedField = await this.saveInverseField(fieldRepository, relationModel, inverseFieldManyToMany);
138
138
  return savedField;
@@ -141,7 +141,7 @@ export class FieldMetadataService {
141
141
  throw new Error(`Invalid relation type for field ${field.name} with relation type ${field.relationType}`);
142
142
  }
143
143
  }
144
-
144
+
145
145
  private async getRelationModel(modelRepository: Repository<ModelMetadata>, field: FieldMetadata, moduleName: string) {
146
146
  return await modelRepository.findOne({
147
147
  where: {
@@ -750,6 +750,7 @@ export class FieldMetadataService {
750
750
  "columnName",
751
751
  "relationJoinTableName",
752
752
  "isRelationManyToManyOwner",
753
+ "relationFieldFixedFilter"
753
754
  ];
754
755
 
755
756
  case SolidFieldType.mediaSingle:
@@ -1080,7 +1081,7 @@ export class FieldMetadataService {
1080
1081
  fieldsRequiredBasedOnType.forEach((requiredField) => {
1081
1082
  fieldObject[requiredField] = field[requiredField];
1082
1083
  });
1083
-
1084
+
1084
1085
  if (field.type == "mediaSingle" || field.type == "mediaMultiple") {
1085
1086
  if (field.mediaStorageProvider) {
1086
1087
  delete fieldObject.mediaStorageProviderId
@@ -1,54 +1,62 @@
1
- import { InjectRepository } from "@nestjs/typeorm";
2
- import { Repository } from "typeorm";
3
- import { ListOfValues } from "../entities/list-of-values.entity";
4
- import { PaginationQueryDto } from "src/dtos/pagination-query.dto";
5
- import { Injectable, NotFoundException } from "@nestjs/common";
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
+ import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
+ import { EntityManager, Repository } from 'typeorm';
6
5
 
7
- @Injectable()
8
- export class ListOfValuesService {
9
- constructor(
10
- @InjectRepository(ListOfValues)
11
- private readonly listOfValuesRepo: Repository<ListOfValues>,
12
- ) { }
6
+ import { CRUDService } from 'src/services/crud.service';
7
+ import { ModelMetadataService } from 'src/services/model-metadata.service';
8
+ import { ModuleMetadataService } from 'src/services/module-metadata.service';
9
+ import { ConfigService } from '@nestjs/config';
10
+ import { FileService } from 'src/services/file.service';
11
+ import { CrudHelperService } from 'src/services/crud-helper.service';
13
12
 
14
- findAll(paginationQuery: PaginationQueryDto) {
15
- const { limit, offset } = paginationQuery;
16
- return this.listOfValuesRepo.find({
17
- relations: {},
18
- skip: offset,
19
- take: limit,
20
- });
21
- }
22
13
 
23
- async findOneByValueAndType(lovValue: string, lovType: string) {
24
- return await this.listOfValuesRepo.findOne({
25
- where: {
26
- value: lovValue,
27
- type: lovType,
28
- },
29
- });
30
- }
14
+ import { ListOfValues } from '../entities/list-of-values.entity';
31
15
 
32
- async findOne(id: number, relations = {}) {
33
- const lov = await this.listOfValuesRepo.findOne({
34
- where: {
35
- id: id,
36
- },
37
- relations: relations,
38
- });
39
- if (!lov) {
40
- throw new NotFoundException(`list of values #${id} not found`);
41
- }
42
- return lov;
43
- }
16
+ @Injectable()
17
+ export class ListOfValuesService extends CRUDService<ListOfValues> {
18
+ constructor(
19
+ readonly modelMetadataService: ModelMetadataService,
20
+ readonly moduleMetadataService: ModuleMetadataService,
21
+ readonly configService: ConfigService,
22
+ readonly fileService: FileService,
23
+ readonly discoveryService: DiscoveryService,
24
+ readonly crudHelperService: CrudHelperService,
25
+ @InjectEntityManager()
26
+ readonly entityManager: EntityManager,
27
+ @InjectRepository(ListOfValues, 'default')
28
+ readonly repo: Repository<ListOfValues>,
29
+ readonly moduleRef: ModuleRef
44
30
 
45
- async create(createDto: any) {
46
- const lov = this.listOfValuesRepo.create(createDto);
47
- return this.listOfValuesRepo.save(lov);
48
- }
31
+ ) {
32
+ super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'listOfValues', 'solid-core', moduleRef);
33
+ }
34
+ async findOneByValueAndType(lovValue: string, lovType: string) {
35
+ return await this.repo.findOne({
36
+ where: {
37
+ value: lovValue,
38
+ type: lovType,
39
+ },
40
+ });
41
+ }
42
+ async upsert(updateListOfValuesDto: any) {
43
+ // First check if module already exists using name
44
+ const existingListOfValue = await this.repo.findOne({
45
+ where: {
46
+ value: updateListOfValuesDto.value
47
+ }
48
+ })
49
49
 
50
- async remove(id: number) {
51
- const lov = await this.findOne(id);
52
- return this.listOfValuesRepo.remove(lov);
50
+ // if found
51
+ if (existingListOfValue) {
52
+ const updatedListOfValuesDto = { ...existingListOfValue, ...updateListOfValuesDto };
53
+ return this.repo.save(updatedListOfValuesDto);
53
54
  }
54
- }
55
+ // if not found - create new
56
+ else {
57
+ const listOfValue = this.repo.create(updateListOfValuesDto);
58
+ return this.repo.save(listOfValue);
59
+ }
60
+ }
61
+
62
+ }
@@ -184,6 +184,16 @@ export class ModelMetadataService {
184
184
  relations: {},
185
185
  });
186
186
  createDto['module'] = resolvedModule;
187
+
188
+ const resolvedParentModel = await this.dataSource
189
+ .getRepository(ModelMetadata)
190
+ .findOne({
191
+ where: {
192
+ id: createDto['parentModelId'],
193
+ },
194
+ relations: {},
195
+ });
196
+ createDto['parentModel'] = resolvedParentModel;
187
197
  const { fields: fieldsMetadata, ...modelMetaDataWithoutFields } = createDto;
188
198
  const modelMetadata = this.modelMetadataRepo.create(modelMetaDataWithoutFields);
189
199
  let model = await manager.save(modelMetadata);
@@ -330,7 +340,7 @@ export class ModelMetadataService {
330
340
  where: {
331
341
  id: modelId,
332
342
  },
333
- relations: ["fields", "fields.mediaStorageProvider", "module"], //FIXME: Check with jenender and change to relations to avoid confusion
343
+ relations: ["fields", "fields.mediaStorageProvider", "module", "parentModel"], //FIXME: Check with jenender and change to relations to avoid confusion
334
344
  });
335
345
 
336
346
  const filePath = this.moduleMetadataHelperService.getModuleMetadataFilePath(model.module.name);
@@ -345,6 +355,8 @@ export class ModelMetadataService {
345
355
  dataSourceType: model.dataSourceType,
346
356
  tableName: model.tableName,
347
357
  userKeyFieldUserKey: model.fields.find(field => field.isUserKey)?.name,
358
+ isChild: model?.isChild,
359
+ parentModelUserKey: model?.parentModel?.singularName,
348
360
  fields: []
349
361
  }
350
362
 
@@ -595,7 +607,7 @@ export class ModelMetadataService {
595
607
  where: {
596
608
  id: modelId,
597
609
  },
598
- relations: ["fields", "fields.mediaStorageProvider", "module"], //FIXME: Check with jenender and change to relations to avoid confusion
610
+ relations: ["fields", "fields.mediaStorageProvider", "module", "parentModel"], //FIXME: Check with jenender and change to relations to avoid confusion
599
611
  });
600
612
 
601
613
  const filePath = this.moduleMetadataHelperService.getModuleMetadataFilePath(model.module.name);
@@ -610,6 +622,8 @@ export class ModelMetadataService {
610
622
  dataSourceType: model.dataSourceType,
611
623
  tableName: model.tableName,
612
624
  userKeyFieldUserKey: model.fields.find(field => field.isUserKey)?.name,
625
+ isChild: model.isChild,
626
+ parentModelUserKey: model.parentModel.singularName,
613
627
  fields: []
614
628
  }
615
629
 
@@ -895,7 +909,7 @@ export class ModelMetadataService {
895
909
  }
896
910
 
897
911
  const query = {
898
- populate: ["module", "fields"]
912
+ populate: ["module", "fields", "parentModel"]
899
913
  };
900
914
  const model = options.modelId ? await this.findOne(options.modelId, query) : await this.findOneByUserKey(options.modelUserKey, query.populate);
901
915
 
@@ -917,7 +931,8 @@ export class ModelMetadataService {
917
931
  dataSource: model.dataSource,
918
932
  table: model.tableName,
919
933
  fields: fieldsForRefresh,
920
- modelEnableSoftDelete: model.enableSoftDelete
934
+ modelEnableSoftDelete: model.enableSoftDelete,
935
+ parentModel: model.parentModel?.singularName
921
936
  },
922
937
  dryRun
923
938
  );
@@ -0,0 +1,34 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
+ import { DiscoveryService, ModuleRef } from "@nestjs/core";
4
+ import { EntityManager, Repository } from 'typeorm';
5
+
6
+ import { CRUDService } from 'src/services/crud.service';
7
+ import { ModelMetadataService } from 'src/services/model-metadata.service';
8
+ import { ModuleMetadataService } from 'src/services/module-metadata.service';
9
+ import { ConfigService } from '@nestjs/config';
10
+ import { FileService } from 'src/services/file.service';
11
+ import { CrudHelperService } from 'src/services/crud-helper.service';
12
+
13
+
14
+ import { SavedFilters } from '../entities/saved-filters.entity';
15
+
16
+ @Injectable()
17
+ export class SavedFiltersService extends CRUDService<SavedFilters>{
18
+ constructor(
19
+ readonly modelMetadataService: ModelMetadataService,
20
+ readonly moduleMetadataService: ModuleMetadataService,
21
+ readonly configService: ConfigService,
22
+ readonly fileService: FileService,
23
+ readonly discoveryService: DiscoveryService,
24
+ readonly crudHelperService: CrudHelperService,
25
+ @InjectEntityManager()
26
+ readonly entityManager: EntityManager,
27
+ @InjectRepository(SavedFilters, 'default')
28
+ readonly repo: Repository<SavedFilters>,
29
+ readonly moduleRef: ModuleRef
30
+
31
+ ) {
32
+ super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService,entityManager, repo, 'savedFilters', 'solid-core', moduleRef);
33
+ }
34
+ }
@@ -141,6 +141,9 @@ import { FileS3StorageProvider } from './services/mediaStorageProviders/file-s3-
141
141
  import { FileStorageProvider } from './services/mediaStorageProviders/file-storage-provider';
142
142
  import { MediaRepository } from './repository/media.repository';
143
143
  import { ViewMetadataSubsciber } from './subscribers/view-metadata.subscriber';
144
+ import { SavedFilters } from './entities/saved-filters.entity';
145
+ import { SavedFiltersService } from './services/saved-filters.service';
146
+ import { SavedFiltersController } from './controllers/saved-filters.controller';
144
147
  import { UserViewMetadata } from './entities/user-view-metadata.entity';
145
148
  import { UserViewMetadataService } from './services/user-view-metadata.service';
146
149
  import { UserViewMetadataController } from './controllers/user-view-metadata.controller';
@@ -150,6 +153,7 @@ import { SecurityRuleController } from './controllers/security-rule.controller';
150
153
  import { RequestContextService } from './services/request-context.service';
151
154
  import { SecurityRuleRepository } from './repository/security-rule.repository';
152
155
  import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
156
+ import { ListOfValuesController } from './controllers/list-of-values.controller';
153
157
 
154
158
 
155
159
  @Global()
@@ -194,8 +198,11 @@ import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
194
198
  HttpModule,
195
199
  ConfigModule,
196
200
  TypeOrmModule.forFeature([Setting]),
201
+ TypeOrmModule.forFeature([SavedFilters]),
197
202
  TypeOrmModule.forFeature([UserViewMetadata]),
198
203
  TypeOrmModule.forFeature([SecurityRule]),
204
+ TypeOrmModule.forFeature([SavedFilters]),
205
+ TypeOrmModule.forFeature([ListOfValues]),
199
206
  // TypeOrmModule.forFeature([User]),
200
207
  ],
201
208
  controllers: [
@@ -221,8 +228,11 @@ import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
221
228
  RoleMetadataController,
222
229
  UserController,
223
230
  SettingController,
231
+ SavedFiltersController,
224
232
  UserViewMetadataController,
225
233
  SecurityRuleController,
234
+ SavedFiltersController,
235
+ ListOfValuesController
226
236
  ],
227
237
  providers: [
228
238
  {
@@ -317,11 +327,13 @@ import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
317
327
  FileS3StorageProvider,
318
328
  MediaRepository,
319
329
  ViewMetadataSubsciber,
330
+ SavedFiltersService,
320
331
  UserViewMetadataService,
321
332
  SecurityRuleService,
322
333
  SecurityRuleRepository,
323
334
  SecurityRuleSubscriber,
324
335
  RequestContextService,
336
+ SavedFiltersService
325
337
  ],
326
338
  exports: [
327
339
  ModuleMetadataService,