@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
|
@@ -32,7 +32,7 @@ import solidCoreMetadata from './seed-data/solid-core-metadata.json';
|
|
|
32
32
|
import { SystemFieldsSeederService } from './system-fields-seeder.service';
|
|
33
33
|
// import { CreateScheduledJobDto } from 'src/dtos/create-scheduled-job.dto';
|
|
34
34
|
import { ActionMetadata, DEFAULT_SA_PASSWORD, MENU_ROLE_JOIN_TABLE_NAME, MENU_ROLE_JOIN_TABLE_NAME_MENU_COL, MENU_ROLE_JOIN_TABLE_NAME_ROLE_COL, MenuItemMetadata, ModuleMetadata, RoleMetadata, SignUpDto } from 'src';
|
|
35
|
-
import { ADMIN_ROLE_NAME } from 'src/dtos/create-role-metadata.dto';
|
|
35
|
+
import { ADMIN_ROLE_NAME, CreateRoleMetadataDto } from 'src/dtos/create-role-metadata.dto';
|
|
36
36
|
import { CreateSavedFiltersDto } from 'src/dtos/create-saved-filters.dto';
|
|
37
37
|
import { CreateScheduledJobDto } from 'src/dtos/create-scheduled-job.dto';
|
|
38
38
|
import { PermissionMetadataRepository } from 'src/repository/permission-metadata.repository';
|
|
@@ -90,134 +90,152 @@ export class ModuleMetadataSeederService {
|
|
|
90
90
|
) { }
|
|
91
91
|
|
|
92
92
|
async seed(conf?: any) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
// Global seeding steps i.e across all modules
|
|
97
|
-
await this.seedGlobalMetadata();
|
|
98
|
-
|
|
99
|
-
// Module specific seeding steps.
|
|
100
|
-
// Get all the module metadata files which needs to be seeded.
|
|
101
|
-
const seedDataFiles = this.seedDataFiles;
|
|
102
|
-
this.logger.debug(`Found seed data for modules: ${seedDataFiles.map(s => s.moduleMetadata?.name)}`);
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* -------------------------------------------------------------
|
|
106
|
-
* Selective module seeding via: solid seed --modules-to-seed onboarding,reports
|
|
107
|
-
* -------------------------------------------------------------
|
|
108
|
-
*/
|
|
93
|
+
let currentModule = 'global';
|
|
94
|
+
let currentStep = 'bootstrap';
|
|
109
95
|
let modulesToSeed: string[] | null = null;
|
|
110
96
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
console.log(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
this.
|
|
118
|
-
|
|
97
|
+
try {
|
|
98
|
+
this.enablePruning = Boolean(conf?.pruneMetadata);
|
|
99
|
+
console.log(this.enablePruning ? '▶ Pruning enabled: metadata not present in JSON will be removed.' : '▶ Pruning disabled: existing metadata will be kept.');
|
|
100
|
+
|
|
101
|
+
// Global seeding steps i.e across all modules
|
|
102
|
+
currentStep = 'seedGlobalMetadata';
|
|
103
|
+
await this.seedGlobalMetadata();
|
|
104
|
+
|
|
105
|
+
// Module specific seeding steps.
|
|
106
|
+
// Get all the module metadata files which needs to be seeded.
|
|
107
|
+
const seedDataFiles = this.seedDataFiles;
|
|
108
|
+
this.logger.debug(`Found seed data for modules: ${seedDataFiles.map(s => s.moduleMetadata?.name)}`);
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* -------------------------------------------------------------
|
|
112
|
+
* Selective module seeding via: solid seed --modules-to-seed onboarding,reports
|
|
113
|
+
* -------------------------------------------------------------
|
|
114
|
+
*/
|
|
115
|
+
currentStep = 'resolveModulesToSeed';
|
|
116
|
+
if (conf && Array.isArray(conf.modulesToSeed)) {
|
|
117
|
+
modulesToSeed = conf.modulesToSeed;
|
|
118
|
+
console.log(`▶ Selective seeding enabled. Modules to seed: ${modulesToSeed.join(', ')}`);
|
|
119
|
+
this.logger.log(`Selective seeding enabled. Modules to seed: ${modulesToSeed.join(', ')}`);
|
|
120
|
+
} else {
|
|
121
|
+
console.log(`▶ No modulesToSeed provided. Seeding ALL modules.`);
|
|
122
|
+
this.logger.log(`No modulesToSeed provided. Seeding ALL modules.`);
|
|
123
|
+
}
|
|
119
124
|
|
|
120
|
-
|
|
121
|
-
|
|
125
|
+
// Filter modules if needed
|
|
126
|
+
const filteredSeedDataFiles = modulesToSeed ? seedDataFiles.filter((file) => modulesToSeed.includes(file.moduleMetadata?.name)) : seedDataFiles;
|
|
122
127
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
128
|
+
if (filteredSeedDataFiles.length === 0) {
|
|
129
|
+
this.logger.warn(`No modules matched the provided modulesToSeed list.`);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
127
132
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
133
|
+
// let usersDetail;
|
|
134
|
+
// For each module metadata file, we will process the seeding steps one by one.
|
|
135
|
+
for (let i = 0; i < filteredSeedDataFiles.length; i++) {
|
|
136
|
+
const overallMetadata = filteredSeedDataFiles[i];
|
|
137
|
+
const moduleMetadata: CreateModuleMetadataDto = overallMetadata.moduleMetadata;
|
|
138
|
+
currentModule = moduleMetadata?.name ?? 'unknown';
|
|
139
|
+
|
|
140
|
+
console.log(`▶ Seeding Metadata for Module: ${moduleMetadata.name}`);
|
|
141
|
+
this.logger.log(`Seeding Metadata for Module: ${moduleMetadata.name}`);
|
|
142
|
+
|
|
143
|
+
// Process module metadata first.
|
|
144
|
+
currentStep = 'seedModuleModelFields';
|
|
145
|
+
this.logger.log(`Seeding Module / Model / Fields`);
|
|
146
|
+
const moduleModelFieldCounts = await this.seedModuleModelFields(moduleMetadata);
|
|
147
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Module/Model/Fields', moduleModelFieldCounts)}`);
|
|
148
|
+
|
|
149
|
+
currentStep = 'seedMediaStorageProviders';
|
|
150
|
+
this.logger.log(`Seeding Media Storage Providers`);
|
|
151
|
+
const mediaStorageCounts = await this.seedMediaStorageProviders(overallMetadata.mediaStorageProviders);
|
|
152
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Media Storage Providers', mediaStorageCounts)}`);
|
|
153
|
+
|
|
154
|
+
currentStep = 'seedRoles';
|
|
155
|
+
this.logger.log(`Seeding Roles`);
|
|
156
|
+
const roleCounts = await this.seedRoles(overallMetadata);
|
|
157
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Roles', roleCounts)}`);
|
|
158
|
+
|
|
159
|
+
currentStep = 'seedUsers';
|
|
160
|
+
this.logger.log(`Seeding Users`);
|
|
161
|
+
const userCounts = await this.seedUsers(overallMetadata);
|
|
162
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Users', userCounts)}`);
|
|
163
|
+
|
|
164
|
+
currentStep = 'seedViews';
|
|
165
|
+
this.logger.log(`Seeding Views`);
|
|
166
|
+
const viewCounts = await this.seedViews(overallMetadata);
|
|
167
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Views', viewCounts)}`);
|
|
168
|
+
|
|
169
|
+
currentStep = 'seedActions';
|
|
170
|
+
this.logger.log(`Seeding Actions`);
|
|
171
|
+
const actionCounts = await this.seedActions(overallMetadata);
|
|
172
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Actions', actionCounts)}`);
|
|
173
|
+
|
|
174
|
+
currentStep = 'seedMenus';
|
|
175
|
+
this.logger.log(`Seeding Menus`);
|
|
176
|
+
const menuCounts = await this.seedMenus(overallMetadata);
|
|
177
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Menus', menuCounts)}`);
|
|
178
|
+
|
|
179
|
+
currentStep = 'seedEmailTemplates';
|
|
180
|
+
this.logger.log(`Seeding Email Templates`);
|
|
181
|
+
const emailTemplateCounts = await this.seedEmailTemplates(overallMetadata, moduleMetadata.name);
|
|
182
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Email Templates', emailTemplateCounts)}`);
|
|
183
|
+
|
|
184
|
+
currentStep = 'seedSmsTemplates';
|
|
185
|
+
this.logger.log(`Seeding Sms Templates`);
|
|
186
|
+
const smsTemplateCounts = await this.seedSmsTemplates(overallMetadata, moduleMetadata.name);
|
|
187
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Sms Templates', smsTemplateCounts)}`);
|
|
188
|
+
|
|
189
|
+
currentStep = 'seedSecurityRules';
|
|
190
|
+
this.logger.log(`Seeding Security Rules`);
|
|
191
|
+
const securityRuleCounts = await this.seedSecurityRules(overallMetadata);
|
|
192
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Security Rules', securityRuleCounts)}`);
|
|
193
|
+
|
|
194
|
+
currentStep = 'seedListOfValues';
|
|
195
|
+
this.logger.log(`Seeding List Of Values`);
|
|
196
|
+
const lovCounts = await this.seedListOfValues(moduleMetadata, overallMetadata);
|
|
197
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'List Of Values', lovCounts)}`);
|
|
198
|
+
|
|
199
|
+
currentStep = 'seedDashboards';
|
|
200
|
+
this.logger.log(`Seeding Dashboards`);
|
|
201
|
+
const dashboardCounts = await this.seedDashboards(moduleMetadata, overallMetadata);
|
|
202
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Dashboards', dashboardCounts)}`);
|
|
203
|
+
|
|
204
|
+
currentStep = 'seedScheduledJobs';
|
|
205
|
+
this.logger.log(`Seeding Scheduled Jobs`);
|
|
206
|
+
const scheduledJobCounts = await this.seedScheduledJobs(moduleMetadata, overallMetadata);
|
|
207
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Scheduled Jobs', scheduledJobCounts)}`);
|
|
208
|
+
|
|
209
|
+
currentStep = 'seedSavedFilters';
|
|
210
|
+
this.logger.log(`Seeding Saved Filters`);
|
|
211
|
+
const savedFilterCounts = await this.seedSavedFilters(moduleMetadata, overallMetadata);
|
|
212
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Saved Filters', savedFilterCounts)}`);
|
|
213
|
+
|
|
214
|
+
currentStep = 'seedModelSequences';
|
|
215
|
+
this.logger.log(`Seeding Model Sequences`);
|
|
216
|
+
const modelSequenceCounts = await this.seedModelSequences(overallMetadata);
|
|
217
|
+
console.log(`${this.formatSeedResult(moduleMetadata.name, 'Model Sequences', modelSequenceCounts)}`);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
currentModule = 'global';
|
|
221
|
+
currentStep = 'setupDefaultRolesWithPermissions';
|
|
222
|
+
await this.setupDefaultRolesWithPermissions();
|
|
223
|
+
|
|
224
|
+
// Add a console log indicating seeding is finished. This needs to be console.log so that it looks proper when this code is run via CLI.
|
|
225
|
+
console.log(`✔ Seeding completed.`);
|
|
226
|
+
//this.logger.log(`All Seeders finished`);
|
|
227
|
+
|
|
228
|
+
//FIXME: Handle displaying the created users credentials in a better way.
|
|
229
|
+
// this.logger.log(`Newly created username is: ${usersDetail?.length > 0 ? usersDetail[0]?.username : ''} and password is ${usersDetail?.length > 0 ? usersDetail[0]?.password : ''}`);
|
|
230
|
+
} catch (error) {
|
|
231
|
+
this.logSeedFailureForCli(error, {
|
|
232
|
+
moduleName: currentModule,
|
|
233
|
+
step: currentStep,
|
|
234
|
+
pruneEnabled: this.enablePruning,
|
|
235
|
+
modulesToSeed,
|
|
236
|
+
});
|
|
237
|
+
throw error;
|
|
238
|
+
}
|
|
221
239
|
}
|
|
222
240
|
|
|
223
241
|
private async seedScheduledJobs(moduleMetadata: CreateModuleMetadataDto, overallMetadata: any): Promise<{ pruned: number; upserted: number }> {
|
|
@@ -403,7 +421,6 @@ export class ModuleMetadataSeederService {
|
|
|
403
421
|
await this.systemFieldsSeederService.seed();
|
|
404
422
|
}
|
|
405
423
|
|
|
406
|
-
|
|
407
424
|
// OK
|
|
408
425
|
private async seedPermissions() {
|
|
409
426
|
|
|
@@ -858,7 +875,6 @@ export class ModuleMetadataSeederService {
|
|
|
858
875
|
return { pruned, upserted };
|
|
859
876
|
}
|
|
860
877
|
|
|
861
|
-
|
|
862
878
|
private async handleSeedSecurityRules(rulesDto: CreateSecurityRuleDto[]) {
|
|
863
879
|
if (!rulesDto || rulesDto.length === 0) {
|
|
864
880
|
this.logger.debug(`No security rules found to seed`);
|
|
@@ -908,10 +924,30 @@ export class ModuleMetadataSeederService {
|
|
|
908
924
|
return;
|
|
909
925
|
}
|
|
910
926
|
for (const dto of createSavedFilterDto) {
|
|
927
|
+
this.validateSavedFilterQueryJsonWrapper(dto);
|
|
911
928
|
await this.savedFiltersRepo.upsertWithDto({ ...dto, filterQueryJson: JSON.stringify(dto.filterQueryJson) });
|
|
912
929
|
}
|
|
913
930
|
}
|
|
914
931
|
|
|
932
|
+
private validateSavedFilterQueryJsonWrapper(dto: CreateSavedFiltersDto): void {
|
|
933
|
+
const filterName = dto?.name ?? '<unnamed>';
|
|
934
|
+
const filterQueryJson = dto?.filterQueryJson;
|
|
935
|
+
const baseErrorMessage =
|
|
936
|
+
`Invalid saved filter "${filterName}": filterQueryJson must be wrapped with a top-level "$or" or "$and". ` +
|
|
937
|
+
`Example: {"$or":[{"employeeStatus":{"$eq":"Active"}}]}`;
|
|
938
|
+
|
|
939
|
+
if (!filterQueryJson || typeof filterQueryJson !== 'object' || Array.isArray(filterQueryJson)) {
|
|
940
|
+
throw new Error(baseErrorMessage);
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
const topLevelKeys = Object.keys(filterQueryJson);
|
|
944
|
+
const hasLogicalWrapper = topLevelKeys.includes('$or') || topLevelKeys.includes('$and');
|
|
945
|
+
if (!hasLogicalWrapper) {
|
|
946
|
+
const receivedKeys = topLevelKeys.length > 0 ? topLevelKeys.join(', ') : '(none)';
|
|
947
|
+
throw new Error(`${baseErrorMessage}. Received top-level keys: ${receivedKeys}`);
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
|
|
915
951
|
private async handleSeedModelSequences(modelSequencesDto: CreateModelSequenceDto[]) {
|
|
916
952
|
if (!modelSequencesDto || modelSequencesDto.length === 0) {
|
|
917
953
|
this.logger.debug(`No Model Sequences found to seed`);
|
|
@@ -1494,6 +1530,32 @@ export class ModuleMetadataSeederService {
|
|
|
1494
1530
|
// return answer.trim().toLowerCase().startsWith('y');
|
|
1495
1531
|
// }
|
|
1496
1532
|
|
|
1533
|
+
private logSeedFailureForCli(
|
|
1534
|
+
error: unknown,
|
|
1535
|
+
context: { moduleName: string; step: string; pruneEnabled: boolean; modulesToSeed: string[] | null }
|
|
1536
|
+
): void {
|
|
1537
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
1538
|
+
const stackLines = (err.stack ?? '')
|
|
1539
|
+
.split('\n')
|
|
1540
|
+
.slice(0, 8)
|
|
1541
|
+
.map((line) => line.trim())
|
|
1542
|
+
.filter(Boolean);
|
|
1543
|
+
const logPayload = {
|
|
1544
|
+
module: context.moduleName,
|
|
1545
|
+
step: context.step,
|
|
1546
|
+
pruneEnabled: context.pruneEnabled,
|
|
1547
|
+
modulesToSeed: context.modulesToSeed?.length ? context.modulesToSeed : 'ALL',
|
|
1548
|
+
error: {
|
|
1549
|
+
name: err.name,
|
|
1550
|
+
message: err.message,
|
|
1551
|
+
stackPreview: stackLines.length > 0 ? stackLines : undefined,
|
|
1552
|
+
},
|
|
1553
|
+
};
|
|
1554
|
+
|
|
1555
|
+
console.log('✖ Seeding failed');
|
|
1556
|
+
console.log(JSON.stringify(logPayload, null, 2));
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1497
1559
|
private formatSeedResult(moduleName: string, label: string, counts: { pruned: number; upserted: number }): string {
|
|
1498
1560
|
if (this.enablePruning) {
|
|
1499
1561
|
return `✔ [${moduleName}] ${label} seeded (pruned ${counts.pruned}, upserted ${counts.upserted})`;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { forwardRef, Inject, Injectable, Logger } from '@nestjs/common';
|
|
2
|
-
import { InjectRepository } from '@nestjs/typeorm';
|
|
3
|
-
import { Repository } from 'typeorm';
|
|
4
2
|
import { SolidRegistry } from 'src/helpers/solid-registry';
|
|
5
|
-
import { PermissionMetadata } from '../entities/permission-metadata.entity';
|
|
6
|
-
import { RoleMetadataService } from '../services/role-metadata.service';
|
|
7
3
|
import { PermissionMetadataRepository } from 'src/repository/permission-metadata.repository';
|
|
4
|
+
import { RoleMetadataService } from '../services/role-metadata.service';
|
|
8
5
|
|
|
9
6
|
@Injectable()
|
|
10
7
|
export class PermissionMetadataSeederService {
|
|
@@ -5510,7 +5510,7 @@
|
|
|
5510
5510
|
"customComponent": "",
|
|
5511
5511
|
"customIsModal": false,
|
|
5512
5512
|
"serverEndpoint": "",
|
|
5513
|
-
"viewUserKey": "
|
|
5513
|
+
"viewUserKey": "chatterMessage-list-view",
|
|
5514
5514
|
"moduleUserKey": "solid-core",
|
|
5515
5515
|
"modelUserKey": "chatterMessage"
|
|
5516
5516
|
},
|
|
@@ -5523,7 +5523,7 @@
|
|
|
5523
5523
|
"customComponent": "",
|
|
5524
5524
|
"customIsModal": false,
|
|
5525
5525
|
"serverEndpoint": "",
|
|
5526
|
-
"viewUserKey": "
|
|
5526
|
+
"viewUserKey": "chatterMessageDetails-list-view",
|
|
5527
5527
|
"moduleUserKey": "solid-core",
|
|
5528
5528
|
"modelUserKey": "chatterMessageDetails"
|
|
5529
5529
|
},
|
|
@@ -5722,19 +5722,6 @@
|
|
|
5722
5722
|
"moduleUserKey": "solid-core",
|
|
5723
5723
|
"modelUserKey": "importTransaction"
|
|
5724
5724
|
},
|
|
5725
|
-
{
|
|
5726
|
-
"displayName": "locale List Action",
|
|
5727
|
-
"name": "locale-list-view",
|
|
5728
|
-
"type": "solid",
|
|
5729
|
-
"domain": "",
|
|
5730
|
-
"context": "",
|
|
5731
|
-
"customComponent": "",
|
|
5732
|
-
"customIsModal": true,
|
|
5733
|
-
"serverEndpoint": "",
|
|
5734
|
-
"viewUserKey": "locale-list-view",
|
|
5735
|
-
"moduleUserKey": "solid-core",
|
|
5736
|
-
"modelUserKey": "locale"
|
|
5737
|
-
},
|
|
5738
5725
|
{
|
|
5739
5726
|
"displayName": "User Activity History List Action",
|
|
5740
5727
|
"name": "userActivityHistory-list-action",
|
|
@@ -5897,7 +5884,7 @@
|
|
|
5897
5884
|
"displayName": "App Builder",
|
|
5898
5885
|
"name": "appBuilder-menu-item",
|
|
5899
5886
|
"sequenceNumber": 1,
|
|
5900
|
-
"actionUserKey": "
|
|
5887
|
+
"actionUserKey": "",
|
|
5901
5888
|
"moduleUserKey": "solid-core",
|
|
5902
5889
|
"parentMenuItemUserKey": "",
|
|
5903
5890
|
"iconName" : "app_registration"
|
|
@@ -5930,7 +5917,7 @@
|
|
|
5930
5917
|
"displayName": "Layout Builder",
|
|
5931
5918
|
"name": "layoutBuilder-menu-item",
|
|
5932
5919
|
"sequenceNumber": 2,
|
|
5933
|
-
"actionUserKey": "
|
|
5920
|
+
"actionUserKey": "",
|
|
5934
5921
|
"moduleUserKey": "solid-core",
|
|
5935
5922
|
"parentMenuItemUserKey": "",
|
|
5936
5923
|
"iconName": "space_dashboard"
|
|
@@ -5971,7 +5958,7 @@
|
|
|
5971
5958
|
"displayName": "Media Management",
|
|
5972
5959
|
"name": "mediaManagement-menu-item",
|
|
5973
5960
|
"sequenceNumber": 3,
|
|
5974
|
-
"actionUserKey": "
|
|
5961
|
+
"actionUserKey": "",
|
|
5975
5962
|
"moduleUserKey": "solid-core",
|
|
5976
5963
|
"parentMenuItemUserKey": "",
|
|
5977
5964
|
"iconName":"perm_media"
|
|
@@ -5996,7 +5983,7 @@
|
|
|
5996
5983
|
"displayName": "IAM",
|
|
5997
5984
|
"name": "iam-menu-item",
|
|
5998
5985
|
"sequenceNumber": 4,
|
|
5999
|
-
"actionUserKey": "
|
|
5986
|
+
"actionUserKey": "",
|
|
6000
5987
|
"moduleUserKey": "solid-core",
|
|
6001
5988
|
"parentMenuItemUserKey": "",
|
|
6002
5989
|
"iconName": "person_shield"
|
|
@@ -6045,7 +6032,7 @@
|
|
|
6045
6032
|
"displayName": "Queues",
|
|
6046
6033
|
"name": "queues-menu-item",
|
|
6047
6034
|
"sequenceNumber": 5,
|
|
6048
|
-
"actionUserKey": "
|
|
6035
|
+
"actionUserKey": "",
|
|
6049
6036
|
"moduleUserKey": "solid-core",
|
|
6050
6037
|
"parentMenuItemUserKey": "",
|
|
6051
6038
|
"iconName":"low_priority"
|
|
@@ -6070,7 +6057,7 @@
|
|
|
6070
6057
|
"displayName": "Notification",
|
|
6071
6058
|
"name": "notification-menu-item",
|
|
6072
6059
|
"sequenceNumber": 6,
|
|
6073
|
-
"actionUserKey": "
|
|
6060
|
+
"actionUserKey": "",
|
|
6074
6061
|
"moduleUserKey": "solid-core",
|
|
6075
6062
|
"parentMenuItemUserKey": "",
|
|
6076
6063
|
"iconName":"notification_settings"
|
|
@@ -6095,7 +6082,7 @@
|
|
|
6095
6082
|
"displayName": "Other",
|
|
6096
6083
|
"name": "other-menu-item",
|
|
6097
6084
|
"sequenceNumber": 7,
|
|
6098
|
-
"actionUserKey": "
|
|
6085
|
+
"actionUserKey": "",
|
|
6099
6086
|
"moduleUserKey": "solid-core",
|
|
6100
6087
|
"parentMenuItemUserKey": "",
|
|
6101
6088
|
"iconName":"other_admission"
|
|
@@ -6176,7 +6163,7 @@
|
|
|
6176
6163
|
"displayName": "Dashboard Management",
|
|
6177
6164
|
"name": "dashboardManagement-menu-item",
|
|
6178
6165
|
"sequenceNumber": 8,
|
|
6179
|
-
"actionUserKey": "
|
|
6166
|
+
"actionUserKey": "",
|
|
6180
6167
|
"moduleUserKey": "solid-core",
|
|
6181
6168
|
"parentMenuItemUserKey": "",
|
|
6182
6169
|
"iconName" : "dashboard_customize"
|
|
@@ -6201,7 +6188,7 @@
|
|
|
6201
6188
|
"displayName": "Settings",
|
|
6202
6189
|
"name": "settings-menu-item",
|
|
6203
6190
|
"sequenceNumber": 9,
|
|
6204
|
-
"actionUserKey": "
|
|
6191
|
+
"actionUserKey": "",
|
|
6205
6192
|
"moduleUserKey": "solid-core",
|
|
6206
6193
|
"parentMenuItemUserKey": "",
|
|
6207
6194
|
"iconName":"settings"
|
|
@@ -12495,7 +12482,7 @@
|
|
|
12495
12482
|
"label": "Model Sequence",
|
|
12496
12483
|
"className": "grid"
|
|
12497
12484
|
},
|
|
12498
|
-
"onFieldChange": "",
|
|
12485
|
+
"onFieldChange": "modelSequenceFormViewChangeHandler",
|
|
12499
12486
|
"children": [
|
|
12500
12487
|
{
|
|
12501
12488
|
"type": "sheet",
|