@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.
- package/dist/commands/refresh-model.command.d.ts +4 -4
- package/dist/commands/refresh-model.command.d.ts.map +1 -1
- package/dist/commands/refresh-model.command.js +8 -8
- package/dist/commands/refresh-model.command.js.map +1 -1
- package/dist/commands/refresh-module.command.d.ts +4 -4
- package/dist/commands/refresh-module.command.d.ts.map +1 -1
- package/dist/commands/refresh-module.command.js +8 -8
- package/dist/commands/refresh-module.command.js.map +1 -1
- package/dist/controllers/setting.controller.d.ts +34 -0
- package/dist/controllers/setting.controller.d.ts.map +1 -0
- package/dist/controllers/setting.controller.js +161 -0
- package/dist/controllers/setting.controller.js.map +1 -0
- package/dist/dtos/create-field-metadata.dto.d.ts +1 -0
- package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-field-metadata.dto.js +7 -1
- package/dist/dtos/create-field-metadata.dto.js.map +1 -1
- package/dist/dtos/create-model-metadata.dto.d.ts +0 -1
- package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-model-metadata.dto.js +1 -6
- package/dist/dtos/create-model-metadata.dto.js.map +1 -1
- package/dist/dtos/create-setting.dto.d.ts +18 -0
- package/dist/dtos/create-setting.dto.d.ts.map +1 -0
- package/dist/dtos/create-setting.dto.js +106 -0
- package/dist/dtos/create-setting.dto.js.map +1 -0
- package/dist/dtos/update-setting.dto.d.ts +19 -0
- package/dist/dtos/update-setting.dto.d.ts.map +1 -0
- package/dist/dtos/update-setting.dto.js +110 -0
- package/dist/dtos/update-setting.dto.js.map +1 -0
- package/dist/entities/field-metadata.entity.d.ts +1 -0
- package/dist/entities/field-metadata.entity.d.ts.map +1 -1
- package/dist/entities/field-metadata.entity.js +5 -1
- package/dist/entities/field-metadata.entity.js.map +1 -1
- package/dist/entities/model-metadata.entity.d.ts +0 -1
- package/dist/entities/model-metadata.entity.d.ts.map +1 -1
- package/dist/entities/model-metadata.entity.js +1 -5
- package/dist/entities/model-metadata.entity.js.map +1 -1
- package/dist/entities/setting.entity.d.ts +19 -0
- package/dist/entities/setting.entity.d.ts.map +1 -0
- package/dist/entities/setting.entity.js +95 -0
- package/dist/entities/setting.entity.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +410 -94
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +2 -1
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/file.service.d.ts +1 -0
- package/dist/services/file.service.d.ts.map +1 -1
- package/dist/services/file.service.js +8 -0
- package/dist/services/file.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +28 -10
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/setting.service.d.ts +31 -0
- package/dist/services/setting.service.d.ts.map +1 -0
- package/dist/services/setting.service.js +94 -0
- package/dist/services/setting.service.js.map +1 -0
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +6 -0
- package/dist/solid-core.module.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/commands/refresh-model.command.ts +31 -31
- package/src/commands/refresh-module.command.ts +32 -32
- package/src/controllers/setting.controller.ts +80 -0
- package/src/dtos/create-field-metadata.dto.ts +5 -0
- package/src/dtos/create-model-metadata.dto.ts +0 -4
- package/src/dtos/create-setting.dto.ts +63 -0
- package/src/dtos/update-setting.dto.ts +66 -0
- package/src/entities/field-metadata.entity.ts +2 -0
- package/src/entities/model-metadata.entity.ts +0 -3
- package/src/entities/setting.entity.ts +49 -0
- package/src/index.ts +5 -0
- package/src/seeders/seed-data/solid-core-metadata.json +410 -94
- package/src/services/1.js +6 -0
- package/src/services/field-metadata.service.ts +2 -1
- package/src/services/file.service.ts +9 -0
- package/src/services/model-metadata.service.ts +36 -11
- package/src/services/setting.service.ts +71 -0
- 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.
|
|
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 =
|
|
491
|
+
const createdField = fieldRepo.create(fieldMetadata);
|
|
494
492
|
fieldsToSave.push(createdField);
|
|
495
493
|
}
|
|
496
494
|
|
|
497
495
|
// Check for userKeyField
|
|
498
|
-
if (fieldMetadata.
|
|
499
|
-
|
|
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
|
-
|
|
519
|
-
|
|
520
|
-
|
|
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
|
+
}
|
package/src/solid-core.module.ts
CHANGED
|
@@ -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,
|