@solidstarters/solid-core 1.2.6 → 1.2.9

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 (82) hide show
  1. package/dist/commands/refresh-model.command.d.ts +4 -4
  2. package/dist/commands/refresh-model.command.d.ts.map +1 -1
  3. package/dist/commands/refresh-model.command.js +8 -8
  4. package/dist/commands/refresh-model.command.js.map +1 -1
  5. package/dist/commands/refresh-module.command.d.ts +4 -4
  6. package/dist/commands/refresh-module.command.d.ts.map +1 -1
  7. package/dist/commands/refresh-module.command.js +8 -8
  8. package/dist/commands/refresh-module.command.js.map +1 -1
  9. package/dist/controllers/setting.controller.d.ts +34 -0
  10. package/dist/controllers/setting.controller.d.ts.map +1 -0
  11. package/dist/controllers/setting.controller.js +161 -0
  12. package/dist/controllers/setting.controller.js.map +1 -0
  13. package/dist/dtos/create-field-metadata.dto.d.ts +1 -0
  14. package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
  15. package/dist/dtos/create-field-metadata.dto.js +7 -1
  16. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  17. package/dist/dtos/create-model-metadata.dto.d.ts +0 -1
  18. package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
  19. package/dist/dtos/create-model-metadata.dto.js +1 -6
  20. package/dist/dtos/create-model-metadata.dto.js.map +1 -1
  21. package/dist/dtos/create-setting.dto.d.ts +18 -0
  22. package/dist/dtos/create-setting.dto.d.ts.map +1 -0
  23. package/dist/dtos/create-setting.dto.js +106 -0
  24. package/dist/dtos/create-setting.dto.js.map +1 -0
  25. package/dist/dtos/update-setting.dto.d.ts +19 -0
  26. package/dist/dtos/update-setting.dto.d.ts.map +1 -0
  27. package/dist/dtos/update-setting.dto.js +110 -0
  28. package/dist/dtos/update-setting.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/model-metadata.entity.d.ts +0 -1
  34. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  35. package/dist/entities/model-metadata.entity.js +1 -5
  36. package/dist/entities/model-metadata.entity.js.map +1 -1
  37. package/dist/entities/setting.entity.d.ts +19 -0
  38. package/dist/entities/setting.entity.d.ts.map +1 -0
  39. package/dist/entities/setting.entity.js +95 -0
  40. package/dist/entities/setting.entity.js.map +1 -0
  41. package/dist/index.d.ts +4 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +4 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/seeders/seed-data/solid-core-metadata.json +410 -94
  46. package/dist/services/field-metadata.service.d.ts.map +1 -1
  47. package/dist/services/field-metadata.service.js +2 -1
  48. package/dist/services/field-metadata.service.js.map +1 -1
  49. package/dist/services/file.service.d.ts +1 -0
  50. package/dist/services/file.service.d.ts.map +1 -1
  51. package/dist/services/file.service.js +8 -0
  52. package/dist/services/file.service.js.map +1 -1
  53. package/dist/services/model-metadata.service.d.ts.map +1 -1
  54. package/dist/services/model-metadata.service.js +28 -10
  55. package/dist/services/model-metadata.service.js.map +1 -1
  56. package/dist/services/setting.service.d.ts +31 -0
  57. package/dist/services/setting.service.d.ts.map +1 -0
  58. package/dist/services/setting.service.js +94 -0
  59. package/dist/services/setting.service.js.map +1 -0
  60. package/dist/solid-core.module.d.ts.map +1 -1
  61. package/dist/solid-core.module.js +6 -0
  62. package/dist/solid-core.module.js.map +1 -1
  63. package/dist/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +1 -1
  65. package/src/commands/refresh-model.command.ts +31 -31
  66. package/src/commands/refresh-module.command.ts +32 -32
  67. package/src/controllers/setting.controller.ts +80 -0
  68. package/src/dtos/create-field-metadata.dto.ts +5 -0
  69. package/src/dtos/create-model-metadata.dto.ts +0 -4
  70. package/src/dtos/create-setting.dto.ts +63 -0
  71. package/src/dtos/update-setting.dto.ts +66 -0
  72. package/src/entities/field-metadata.entity.ts +2 -0
  73. package/src/entities/model-metadata.entity.ts +0 -3
  74. package/src/entities/setting.entity.ts +49 -0
  75. package/src/index.ts +5 -0
  76. package/src/seeders/seed-data/solid-core-metadata.json +410 -94
  77. package/src/services/1.js +6 -0
  78. package/src/services/field-metadata.service.ts +2 -1
  79. package/src/services/file.service.ts +9 -0
  80. package/src/services/model-metadata.service.ts +36 -11
  81. package/src/services/setting.service.ts +71 -0
  82. package/src/solid-core.module.ts +6 -0
@@ -158,7 +158,6 @@ export class ModelMetadataService {
158
158
  relations: {},
159
159
  });
160
160
  createDto['module'] = resolvedModule;
161
-
162
161
  const { fields: fieldsMetadata, ...modelMetaDataWithoutFields } = createDto;
163
162
  const modelMetadata = this.modelMetadataRepo.create(modelMetaDataWithoutFields);
164
163
  let model = await manager.save(modelMetadata);
@@ -168,7 +167,6 @@ export class ModelMetadataService {
168
167
  const listViewLayout = [];
169
168
  const formViewLayout = [];
170
169
 
171
- const userKeyFieldName = createDto.userKeyFieldUserKey;
172
170
  for (let k = 0; k < fieldsMetadata.length; k++) {
173
171
  const fieldMetadata = fieldsMetadata[k];
174
172
 
@@ -182,7 +180,7 @@ export class ModelMetadataService {
182
180
  const fieldMetadataObject = this.fieldMetadataRepo.create(fieldMetadata);
183
181
  const affectedField = await manager.save(fieldMetadataObject);
184
182
 
185
- if (fieldMetadata.name === userKeyFieldName) {
183
+ if (fieldMetadata.isUserKey) {
186
184
  userKeyField = affectedField;
187
185
  }
188
186
  listViewLayout.push({ type: "field", attrs: { name: `${affectedField.name}`, label: `${affectedField.displayName}`, sortable: true, filterable: true } })
@@ -466,7 +464,7 @@ export class ModelMetadataService {
466
464
  const existingFieldIds = existingFields.map((field) => field.id);
467
465
 
468
466
  // 2. Synchronize fields
469
- const userKeyFieldName = updateModelMetaDataDto.userKeyFieldUserKey;
467
+ // const userKeyFieldName = updateModelMetaDataDto.userKeyFieldUserKey;
470
468
  let userKeyField = null;
471
469
 
472
470
  const fieldsToSave: FieldMetadata[] = [];
@@ -490,14 +488,14 @@ export class ModelMetadataService {
490
488
  if (fieldMetadata.mediaStorageProviderId) {
491
489
  fieldMetadata['mediaStorageProvider'] = await this.mediaStorageProviderMetadataService.findOne(fieldMetadata.mediaStorageProviderId);
492
490
  }
493
- const createdField = await this.fieldMetadataRepo.create(fieldMetadata);
491
+ const createdField = fieldRepo.create(fieldMetadata);
494
492
  fieldsToSave.push(createdField);
495
493
  }
496
494
 
497
495
  // Check for userKeyField
498
- if (fieldMetadata.name === userKeyFieldName) {
499
- userKeyField = fieldMetadata;
500
- }
496
+ // if (fieldMetadata.isUserKey) {
497
+ // userKeyField = fieldMetadata;
498
+ // }
501
499
  }
502
500
 
503
501
  // Fields to delete (not in the payload)
@@ -514,10 +512,37 @@ export class ModelMetadataService {
514
512
  // await this.fieldMetadataRepo.remove(fieldsToDelete);
515
513
  }
516
514
 
515
+ const finalModel = await modelRepo.findOne({
516
+ where: { id: updatedModel.id },
517
+ relations: ["fields", "userKeyField"]
518
+ });
519
+
517
520
  // 3. Update model with userKeyField if specified
518
- if (userKeyField) {
519
- updatedModel.userKeyField = userKeyField;
520
- await modelRepo.save(updatedModel);
521
+ const userKeyFields = fieldsMetadata.filter(field => field.isUserKey);
522
+
523
+ if (userKeyFields.length > 0) {
524
+ const newUserKeyField = userKeyFields[userKeyFields.length - 1];
525
+ const savedUserKeyField = await fieldRepo.findOne({ where: { id: newUserKeyField.id } });
526
+
527
+ if (savedUserKeyField) {
528
+ finalModel.userKeyField = savedUserKeyField;
529
+ await modelRepo.save(finalModel);
530
+ }
531
+
532
+ const otherUserKeyFields = userKeyFields.filter(field => field.id !== newUserKeyField.id);
533
+
534
+ for (const field of otherUserKeyFields) {
535
+ const existingField = await fieldRepo.findOne({ where: { id: field.id } });
536
+ if (existingField) {
537
+ existingField.isUserKey = false;
538
+ await fieldRepo.save(existingField);
539
+ }
540
+ }
541
+ } else {
542
+ if (finalModel.userKeyField) {
543
+ finalModel.userKeyField = null;
544
+ await modelRepo.save(finalModel);
545
+ }
521
546
  }
522
547
 
523
548
  return updatedModel;
@@ -0,0 +1,71 @@
1
+ import { Inject, Injectable } from '@nestjs/common';
2
+ import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
3
+ import { DiscoveryService } 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 { MediaStorageProviderMetadataService } from 'src/services/media-storage-provider-metadata.service';
10
+ import { ConfigService, ConfigType } from '@nestjs/config';
11
+ import { MediaService } from 'src/services/media.service';
12
+ import { FileService } from 'src/services/file.service';
13
+ import { CrudHelperService } from 'src/services/crud-helper.service';
14
+
15
+
16
+ import { Setting } from '../entities/setting.entity';
17
+ import { iamConfig } from 'src/config/iam.config';
18
+ import commonConfig from 'src/config/common.config';
19
+
20
+ @Injectable()
21
+ export class SettingService extends CRUDService<Setting>{
22
+ constructor(
23
+ readonly modelMetadataService: ModelMetadataService,
24
+ readonly moduleMetadataService: ModuleMetadataService,
25
+ readonly mediaStorageProviderService: MediaStorageProviderMetadataService,
26
+ readonly configService: ConfigService,
27
+ readonly fileService: FileService,
28
+ readonly mediaService: MediaService,
29
+ readonly discoveryService: DiscoveryService,
30
+ readonly crudHelperService: CrudHelperService,
31
+ @Inject(iamConfig.KEY) private readonly iamConfiguration: ConfigType<typeof iamConfig>,
32
+ @Inject(commonConfig.KEY)
33
+ private readonly commonConfiguration: ConfigType<typeof commonConfig>,
34
+ @InjectEntityManager()
35
+ readonly entityManager: EntityManager,
36
+ @InjectRepository(Setting, 'default')
37
+ readonly repo: Repository<Setting>,
38
+ ) {
39
+ super(modelMetadataService, moduleMetadataService, mediaStorageProviderService, configService, fileService, mediaService, discoveryService, crudHelperService,entityManager, repo, 'setting', 'solid-core'
40
+ );
41
+ }
42
+
43
+ async getAllSettings(): Promise<Record<string, any>> {
44
+ const settings: any = await this.repo.find();
45
+ if (!settings || settings.length === 0) {
46
+ return this.getDefaultSettings();
47
+ }
48
+ return settings;
49
+ }
50
+
51
+ private getDefaultSettings(): Record<string, any> {
52
+ return {
53
+ iamAllowPublicRegistration: this.iamConfiguration.allowPublicRegistration,
54
+ iamPasswordRegistrationEnabled: false,
55
+ iamPasswordLessRegistrationEnabled: this.iamConfiguration.passwordlessRegistration,
56
+ iamActivateUserOnRegistration: this.iamConfiguration.activateUserOnRegistration,
57
+ iamGoogleOAuthEnabled: false,
58
+ authPagesLayout: "center",
59
+ authPagesTheme: "light",
60
+ appTitle: process.env.SOLID_APP_NAME || "Default App",
61
+ appLogo: "",
62
+ appDescription: "",
63
+ appTnc: "",
64
+ appPrivacyPolicy: "",
65
+ iamDefaultRole: this.iamConfiguration.defaultRole,
66
+ shouldQueueEmails: this.commonConfiguration.shouldQueueEmails,
67
+ shouldQueueSms: this.commonConfiguration.shouldQueueSms
68
+ };
69
+ }
70
+
71
+ }
@@ -132,6 +132,9 @@ import { User } from './entities/user.entity';
132
132
  import { PermissionMetadataSeederService } from './seeders/permission-metadata-seeder.service';
133
133
  import { RoleMetadataService } from './services/role-metadata.service';
134
134
  import { UserService } from './services/user.service';
135
+ import { Setting } from './entities/setting.entity';
136
+ import { SettingService } from './services/setting.service';
137
+ import { SettingController } from './controllers/setting.controller';
135
138
 
136
139
 
137
140
  @Global()
@@ -175,6 +178,7 @@ import { UserService } from './services/user.service';
175
178
  }),
176
179
  HttpModule,
177
180
  ConfigModule,
181
+ TypeOrmModule.forFeature([Setting]),
178
182
  // TypeOrmModule.forFeature([User]),
179
183
  ],
180
184
  controllers: [
@@ -199,6 +203,7 @@ import { UserService } from './services/user.service';
199
203
  PermissionMetadataController,
200
204
  RoleMetadataController,
201
205
  UserController,
206
+ SettingController,
202
207
  ],
203
208
  providers: [
204
209
  {
@@ -286,6 +291,7 @@ import { UserService } from './services/user.service';
286
291
  RoleMetadataService,
287
292
  PermissionMetadataSeederService,
288
293
  UserService,
294
+ SettingService,
289
295
  ],
290
296
  exports: [
291
297
  ModuleMetadataService,