@solidxai/core 0.1.10-beta.24 → 0.1.10-beta.26
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/controllers/action-metadata.controller.d.ts +1 -20
- package/dist/controllers/action-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/agent-event.controller.d.ts +1 -20
- package/dist/controllers/agent-event.controller.d.ts.map +1 -1
- package/dist/controllers/agent-session.controller.d.ts +1 -20
- package/dist/controllers/agent-session.controller.d.ts.map +1 -1
- package/dist/controllers/ai-interaction.controller.d.ts +1 -20
- package/dist/controllers/ai-interaction.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message-details.controller.d.ts +1 -20
- package/dist/controllers/chatter-message-details.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message.controller.d.ts +1 -20
- package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
- package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -20
- package/dist/controllers/dashboard-user-layout.controller.d.ts.map +1 -1
- package/dist/controllers/email-template.controller.d.ts +1 -20
- package/dist/controllers/email-template.controller.d.ts.map +1 -1
- package/dist/controllers/export-template.controller.d.ts +1 -20
- package/dist/controllers/export-template.controller.d.ts.map +1 -1
- package/dist/controllers/export-transaction.controller.d.ts +1 -20
- package/dist/controllers/export-transaction.controller.d.ts.map +1 -1
- package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -20
- package/dist/controllers/import-transaction-error-log.controller.d.ts.map +1 -1
- package/dist/controllers/import-transaction.controller.d.ts +1 -20
- package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
- package/dist/controllers/list-of-values.controller.d.ts +1 -20
- package/dist/controllers/list-of-values.controller.d.ts.map +1 -1
- package/dist/controllers/locale.controller.d.ts +1 -20
- package/dist/controllers/locale.controller.d.ts.map +1 -1
- package/dist/controllers/mcp-audit-log.controller.d.ts +1 -20
- package/dist/controllers/mcp-audit-log.controller.d.ts.map +1 -1
- package/dist/controllers/media.controller.d.ts +1 -20
- package/dist/controllers/media.controller.d.ts.map +1 -1
- package/dist/controllers/menu-item-metadata.controller.d.ts +1 -20
- package/dist/controllers/menu-item-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/model-metadata.controller.d.ts +10 -30
- package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/model-metadata.controller.js +2 -2
- package/dist/controllers/model-sequence.controller.d.ts +1 -20
- package/dist/controllers/model-sequence.controller.d.ts.map +1 -1
- package/dist/controllers/module-metadata-explorer.controller.d.ts +171 -0
- package/dist/controllers/module-metadata-explorer.controller.d.ts.map +1 -0
- package/dist/controllers/module-metadata-explorer.controller.js +143 -0
- package/dist/controllers/module-metadata-explorer.controller.js.map +1 -0
- package/dist/controllers/module-metadata.controller.d.ts +5 -0
- package/dist/controllers/module-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/module-metadata.controller.js +12 -0
- package/dist/controllers/module-metadata.controller.js.map +1 -1
- package/dist/controllers/module-package.controller.d.ts +622 -0
- package/dist/controllers/module-package.controller.d.ts.map +1 -0
- package/dist/controllers/module-package.controller.js +150 -0
- package/dist/controllers/module-package.controller.js.map +1 -0
- package/dist/controllers/mq-message-queue.controller.d.ts +1 -20
- package/dist/controllers/mq-message-queue.controller.d.ts.map +1 -1
- package/dist/controllers/mq-message.controller.d.ts +1 -20
- package/dist/controllers/mq-message.controller.d.ts.map +1 -1
- package/dist/controllers/permission-metadata.controller.d.ts +1 -20
- package/dist/controllers/permission-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/role-metadata.controller.d.ts +1 -20
- package/dist/controllers/role-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/saved-filters.controller.d.ts +1 -20
- package/dist/controllers/saved-filters.controller.d.ts.map +1 -1
- package/dist/controllers/scheduled-job.controller.d.ts +1 -20
- package/dist/controllers/scheduled-job.controller.d.ts.map +1 -1
- package/dist/controllers/security-rule.controller.d.ts +1 -20
- package/dist/controllers/security-rule.controller.d.ts.map +1 -1
- package/dist/controllers/sms-template.controller.d.ts +1 -20
- package/dist/controllers/sms-template.controller.d.ts.map +1 -1
- package/dist/controllers/user-activity-history.controller.d.ts +1 -20
- package/dist/controllers/user-activity-history.controller.d.ts.map +1 -1
- package/dist/controllers/user-view-metadata.controller.d.ts +1 -20
- package/dist/controllers/user-view-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/user.controller.d.ts +1 -20
- package/dist/controllers/user.controller.d.ts.map +1 -1
- package/dist/controllers/view-metadata.controller.d.ts +1 -20
- package/dist/controllers/view-metadata.controller.d.ts.map +1 -1
- package/dist/dtos/confirm-module-package-import.dto.d.ts +4 -0
- package/dist/dtos/confirm-module-package-import.dto.d.ts.map +1 -0
- package/dist/dtos/confirm-module-package-import.dto.js +34 -0
- package/dist/dtos/confirm-module-package-import.dto.js.map +1 -0
- package/dist/dtos/metadata-explorer-references-query.dto.d.ts +10 -0
- package/dist/dtos/metadata-explorer-references-query.dto.d.ts.map +1 -0
- package/dist/dtos/metadata-explorer-references-query.dto.js +69 -0
- package/dist/dtos/metadata-explorer-references-query.dto.js.map +1 -0
- package/dist/dtos/metadata-explorer-search-query.dto.d.ts +8 -0
- package/dist/dtos/metadata-explorer-search-query.dto.d.ts.map +1 -0
- package/dist/dtos/metadata-explorer-search-query.dto.js +55 -0
- package/dist/dtos/metadata-explorer-search-query.dto.js.map +1 -0
- package/dist/dtos/metadata-explorer-write.dto.d.ts +4 -0
- package/dist/dtos/metadata-explorer-write.dto.d.ts.map +1 -0
- package/dist/dtos/metadata-explorer-write.dto.js +30 -0
- package/dist/dtos/metadata-explorer-write.dto.js.map +1 -0
- package/dist/dtos/run-module-package-build.dto.d.ts +5 -0
- package/dist/dtos/run-module-package-build.dto.d.ts.map +1 -0
- package/dist/dtos/run-module-package-build.dto.js +38 -0
- package/dist/dtos/run-module-package-build.dto.js.map +1 -0
- package/dist/dtos/run-module-package-seed.dto.d.ts +4 -0
- package/dist/dtos/run-module-package-seed.dto.d.ts.map +1 -0
- package/dist/dtos/run-module-package-seed.dto.js +34 -0
- package/dist/dtos/run-module-package-seed.dto.js.map +1 -0
- package/dist/helpers/command.service.js +1 -1
- package/dist/helpers/command.service.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.d.ts +2 -0
- package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js +14 -12
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module.helper.d.ts.map +1 -1
- package/dist/helpers/module.helper.js +11 -6
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/typeorm-migration-helpers.d.ts +12 -0
- package/dist/helpers/typeorm-migration-helpers.d.ts.map +1 -0
- package/dist/helpers/typeorm-migration-helpers.js +119 -0
- package/dist/helpers/typeorm-migration-helpers.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts +1 -0
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +57 -38
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/module-test-data.service.js +1 -1
- package/dist/seeders/module-test-data.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +2364 -1106
- package/dist/services/crud-helper.service.d.ts +18 -0
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +67 -1
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +1 -21
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +23 -87
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/genai/ingest-metadata.service.js +2 -2
- package/dist/services/genai/ingest-metadata.service.js.map +1 -1
- package/dist/services/media.service.d.ts +1 -20
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +31 -2
- 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 +5 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +15 -30
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +249 -29
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata-explorer.service.d.ts +161 -0
- package/dist/services/module-metadata-explorer.service.d.ts.map +1 -0
- package/dist/services/module-metadata-explorer.service.js +485 -0
- package/dist/services/module-metadata-explorer.service.js.map +1 -0
- package/dist/services/module-metadata.service.d.ts +7 -0
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +121 -2
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/module-package.service.d.ts +266 -0
- package/dist/services/module-package.service.d.ts.map +1 -0
- package/dist/services/module-package.service.js +980 -0
- package/dist/services/module-package.service.js.map +1 -0
- package/dist/services/settings/default-settings-provider.service.d.ts +18 -0
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +10 -0
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +10 -2
- package/dist/solid-core.module.js.map +1 -1
- package/dist-tests/api/authenticate.spec.js +119 -0
- package/dist-tests/api/authenticate.spec.js.map +1 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
- package/dist-tests/api/ping.spec.js +21 -0
- package/dist-tests/api/ping.spec.js.map +1 -0
- package/dist-tests/helpers/auth.js +41 -0
- package/dist-tests/helpers/auth.js.map +1 -0
- package/dist-tests/helpers/env.js +11 -0
- package/dist-tests/helpers/env.js.map +1 -0
- package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +438 -0
- package/docs/dashboards/dashboard-curl-smoke-tests.txt +146 -0
- package/docs/dashboards/delete-legacy-dashboard-metadata.sql +172 -0
- package/docs/grouping-enhancements.md +89 -0
- package/docs/java-spring/README.md +3 -0
- package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
- package/docs/module-package-import-handoff.md +691 -0
- package/docs/seed-changes.md +65 -0
- package/docs/test-data-workflow.md +200 -0
- package/docs/type-declaration-import-issue.md +24 -0
- package/package.json +2 -1
- package/src/controllers/module-metadata-explorer.controller.ts +83 -0
- package/src/controllers/module-metadata.controller.ts +6 -0
- package/src/controllers/module-package.controller.ts +102 -0
- package/src/dtos/confirm-module-package-import.dto.ts +12 -0
- package/src/dtos/metadata-explorer-references-query.dto.ts +39 -0
- package/src/dtos/metadata-explorer-search-query.dto.ts +28 -0
- package/src/dtos/metadata-explorer-write.dto.ts +11 -0
- package/src/dtos/run-module-package-build.dto.ts +14 -0
- package/src/dtos/run-module-package-seed.dto.ts +12 -0
- package/src/helpers/command.service.ts +1 -1
- package/src/helpers/module-metadata-helper.service.ts +19 -21
- package/src/helpers/module.helper.ts +12 -9
- package/src/helpers/typeorm-migration-helpers.ts +163 -0
- package/src/index.ts +8 -0
- package/src/seeders/module-metadata-seeder.service.ts +63 -38
- package/src/seeders/module-test-data.service.ts +1 -1
- package/src/seeders/seed-data/solid-core-metadata.json +2365 -1107
- package/src/services/crud-helper.service.ts +79 -1
- package/src/services/crud.service.ts +26 -119
- package/src/services/dashboard-providers/README.md +1 -1
- package/src/services/genai/ingest-metadata.service.ts +3 -3
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +37 -2
- package/src/services/mediaStorageProviders/file-storage-provider.ts +5 -1
- package/src/services/model-metadata.service.ts +302 -98
- package/src/services/module-metadata-explorer.service.ts +670 -0
- package/src/services/module-metadata.service.ts +136 -10
- package/src/services/module-package.service.ts +1171 -0
- package/src/services/settings/default-settings-provider.service.ts +10 -0
- package/src/solid-core.module.ts +10 -2
- package/.claude/settings.local.json +0 -15
- package/CLAUDE.md +0 -26
- package/dist/services/database/database-bootstrap.service.d.ts +0 -12
- package/dist/services/database/database-bootstrap.service.d.ts.map +0 -1
- package/dist/services/database/database-bootstrap.service.js +0 -115
- package/dist/services/database/database-bootstrap.service.js.map +0 -1
- package/sql/default/mariadb/proc_CleanupModelMetadata.sql +0 -153
- package/sql/default/mariadb/proc_CleanupModuleMetadata.sql +0 -56
- package/sql/default/mssql/proc_CleanupModuleMetadata.sql +0 -78
- package/sql/default/mysql/proc_CleanupModelMetadata.sql +0 -153
- package/sql/default/mysql/proc_CleanupModuleMetadata.sql +0 -56
- package/sql/default/postgres/proc_CleanupModelMetadata.sql +0 -148
- package/sql/default/postgres/proc_CleanupModuleMetadata.sql +0 -50
- package/sql/default/postgres/scratchpad.sql.txt +0 -12
- package/src/services/1.js +0 -6
- package/src/services/database/database-bootstrap.service.ts +0 -91
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/model-metadata.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"model-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/model-metadata.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,7 +62,11 @@ const field_metadata_repository_1 = require("../repository/field-metadata.reposi
|
|
|
62
62
|
const model_metadata_repository_1 = require("../repository/model-metadata.repository");
|
|
63
63
|
const action_metadata_entity_1 = require("../entities/action-metadata.entity");
|
|
64
64
|
const field_metadata_entity_1 = require("../entities/field-metadata.entity");
|
|
65
|
+
const import_transaction_error_log_entity_1 = require("../entities/import-transaction-error-log.entity");
|
|
66
|
+
const import_transaction_entity_1 = require("../entities/import-transaction.entity");
|
|
65
67
|
const menu_item_metadata_entity_1 = require("../entities/menu-item-metadata.entity");
|
|
68
|
+
const user_view_metadata_entity_1 = require("../entities/user-view-metadata.entity");
|
|
69
|
+
const permission_metadata_entity_1 = require("../entities/permission-metadata.entity");
|
|
66
70
|
const view_metadata_entity_1 = require("../entities/view-metadata.entity");
|
|
67
71
|
const command_service_1 = require("../helpers/command.service");
|
|
68
72
|
const schematic_service_1 = require("../helpers/schematic.service");
|
|
@@ -94,26 +98,15 @@ let ModelMetadataService = class ModelMetadataService {
|
|
|
94
98
|
}
|
|
95
99
|
async findMany(basicFilterDto) {
|
|
96
100
|
const alias = 'modelMetadata';
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
meta: {
|
|
107
|
-
totalRecords: count,
|
|
108
|
-
currentPage: currentPage,
|
|
109
|
-
nextPage: nextPage,
|
|
110
|
-
prevPage: prevPage,
|
|
111
|
-
totalPages: totalPages,
|
|
112
|
-
perPage: +limit,
|
|
113
|
-
},
|
|
114
|
-
records: entities
|
|
115
|
-
};
|
|
116
|
-
return r;
|
|
101
|
+
const { limit, offset } = basicFilterDto;
|
|
102
|
+
const qb = await this.modelMetadataRepo.createSecurityRuleAwareQueryBuilder(alias);
|
|
103
|
+
if (basicFilterDto.groupBy?.length) {
|
|
104
|
+
const groupFilterQb = this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias, undefined, undefined, undefined, crud_helper_service_1.FilterCombinator.AND, false, false);
|
|
105
|
+
return this.crudHelperService.executeGroupPipeline(groupFilterQb, basicFilterDto, alias, () => this.modelMetadataRepo.createSecurityRuleAwareQueryBuilder(alias));
|
|
106
|
+
}
|
|
107
|
+
const filteredQb = this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias);
|
|
108
|
+
const [entities, count] = await filteredQb.getManyAndCount();
|
|
109
|
+
return this.crudHelperService.pagedResponse(offset, limit, count, entities);
|
|
117
110
|
}
|
|
118
111
|
async findOne(id, query) {
|
|
119
112
|
const entity = await this.modelMetadataRepo.findOne({
|
|
@@ -471,7 +464,7 @@ let ModelMetadataService = class ModelMetadataService {
|
|
|
471
464
|
where: {
|
|
472
465
|
id: modelEntityId,
|
|
473
466
|
},
|
|
474
|
-
relations: ['module']
|
|
467
|
+
relations: ['module', 'fields']
|
|
475
468
|
});
|
|
476
469
|
if (!modelEntity) {
|
|
477
470
|
this.logger.log(`Invalid modelEntityId: ${modelEntityId} unable to resolve model metadata`);
|
|
@@ -511,21 +504,67 @@ let ModelMetadataService = class ModelMetadataService {
|
|
|
511
504
|
this.logger.log(`Deleted file: ${fileToDelete}`);
|
|
512
505
|
}
|
|
513
506
|
catch (error) {
|
|
507
|
+
if (error?.code === 'ENOENT') {
|
|
508
|
+
this.logger.warn(`File already absent, skipping delete: ${fileToDelete}`);
|
|
509
|
+
continue;
|
|
510
|
+
}
|
|
514
511
|
this.logger.error(`Error deleting file: ${fileToDelete}`, error);
|
|
515
512
|
}
|
|
516
513
|
}
|
|
517
514
|
}
|
|
518
|
-
await this.
|
|
515
|
+
const { removedActionNames, removedMenuNames, removedViewNames } = await this.cleanupAssociatedViewsActionsAndMenus(modelEntity.id);
|
|
516
|
+
await this.cleanupAssociatedImports(modelEntity.id);
|
|
517
|
+
await this.cleanupAssociatedPermissions(modelEntity.singularName);
|
|
518
|
+
await this.clearModelReferencesBeforeDelete(modelEntity);
|
|
519
519
|
const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(modelEntity.module?.name);
|
|
520
520
|
const metaData = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(filePath);
|
|
521
521
|
if (metaData) {
|
|
522
|
+
const moduleMetadata = metaData?.moduleMetadata ?? metaData;
|
|
523
|
+
const removedActionNameSet = new Set(removedActionNames);
|
|
524
|
+
const removedMenuNameSet = new Set(removedMenuNames);
|
|
525
|
+
const removedViewNameSet = new Set(removedViewNames);
|
|
522
526
|
const existingModelIndex = metaData.moduleMetadata.models.findIndex((existingModel) => existingModel.singularName === modelEntity.singularName);
|
|
523
527
|
if (existingModelIndex !== -1) {
|
|
524
528
|
metaData.moduleMetadata.models.splice(existingModelIndex, 1);
|
|
525
529
|
}
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
530
|
+
const existingViews = Array.isArray(moduleMetadata?.views) ? moduleMetadata.views : [];
|
|
531
|
+
moduleMetadata.views = existingViews.filter((view) => {
|
|
532
|
+
const shouldRemove = view?.modelUserKey === modelEntity.singularName || removedViewNameSet.has(view?.name);
|
|
533
|
+
if (shouldRemove && view?.name) {
|
|
534
|
+
removedViewNameSet.add(view.name);
|
|
535
|
+
}
|
|
536
|
+
return !shouldRemove;
|
|
537
|
+
});
|
|
538
|
+
const existingActions = Array.isArray(moduleMetadata?.actions) ? moduleMetadata.actions : [];
|
|
539
|
+
moduleMetadata.actions = existingActions.filter((action) => {
|
|
540
|
+
const shouldRemove = action?.modelUserKey === modelEntity.singularName ||
|
|
541
|
+
removedActionNameSet.has(action?.name) ||
|
|
542
|
+
removedViewNameSet.has(action?.viewUserKey);
|
|
543
|
+
if (shouldRemove && action?.name) {
|
|
544
|
+
removedActionNameSet.add(action.name);
|
|
545
|
+
}
|
|
546
|
+
return !shouldRemove;
|
|
547
|
+
});
|
|
548
|
+
let pendingMenus = Array.isArray(moduleMetadata?.menus) ? [...moduleMetadata.menus] : [];
|
|
549
|
+
let menuRemovedOnPass = true;
|
|
550
|
+
while (menuRemovedOnPass) {
|
|
551
|
+
menuRemovedOnPass = false;
|
|
552
|
+
pendingMenus = pendingMenus.filter((menu) => {
|
|
553
|
+
const shouldRemove = menu?.modelUserKey === modelEntity.singularName ||
|
|
554
|
+
removedMenuNameSet.has(menu?.name) ||
|
|
555
|
+
removedActionNameSet.has(menu?.actionUserKey) ||
|
|
556
|
+
removedMenuNameSet.has(menu?.parentMenuItemUserKey);
|
|
557
|
+
if (shouldRemove) {
|
|
558
|
+
if (menu?.name) {
|
|
559
|
+
removedMenuNameSet.add(menu.name);
|
|
560
|
+
}
|
|
561
|
+
menuRemovedOnPass = true;
|
|
562
|
+
return false;
|
|
563
|
+
}
|
|
564
|
+
return true;
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
moduleMetadata.menus = pendingMenus;
|
|
529
568
|
const updatedContent = JSON.stringify(metaData, null, 2);
|
|
530
569
|
await fs.writeFile(filePath, updatedContent);
|
|
531
570
|
}
|
|
@@ -545,11 +584,192 @@ let ModelMetadataService = class ModelMetadataService {
|
|
|
545
584
|
}
|
|
546
585
|
}
|
|
547
586
|
}
|
|
587
|
+
async cleanupAssociatedViewsActionsAndMenus(modelId) {
|
|
588
|
+
const viewRepo = this.dataSource.getRepository(view_metadata_entity_1.ViewMetadata);
|
|
589
|
+
const actionRepo = this.dataSource.getRepository(action_metadata_entity_1.ActionMetadata);
|
|
590
|
+
const menuRepo = this.dataSource.getRepository(menu_item_metadata_entity_1.MenuItemMetadata);
|
|
591
|
+
const userViewRepo = this.dataSource.getRepository(user_view_metadata_entity_1.UserViewMetadata);
|
|
592
|
+
const views = await viewRepo.find({
|
|
593
|
+
where: {
|
|
594
|
+
model: { id: modelId },
|
|
595
|
+
},
|
|
596
|
+
});
|
|
597
|
+
const viewIds = views.map((view) => view.id);
|
|
598
|
+
const removedViewNames = views.map((view) => view.name).filter(Boolean);
|
|
599
|
+
const actions = await actionRepo.find({
|
|
600
|
+
where: [
|
|
601
|
+
{
|
|
602
|
+
model: { id: modelId },
|
|
603
|
+
},
|
|
604
|
+
...(viewIds.length > 0
|
|
605
|
+
? [
|
|
606
|
+
{
|
|
607
|
+
view: { id: (0, typeorm_2.In)(viewIds) },
|
|
608
|
+
},
|
|
609
|
+
]
|
|
610
|
+
: []),
|
|
611
|
+
],
|
|
612
|
+
relations: ['view'],
|
|
613
|
+
});
|
|
614
|
+
const uniqueActions = Array.from(new Map(actions.map((action) => [action.id, action])).values());
|
|
615
|
+
const actionIds = uniqueActions.map((action) => action.id);
|
|
616
|
+
const removedActionNames = uniqueActions.map((action) => action.name).filter(Boolean);
|
|
617
|
+
const menus = await this.findMenusForActionIds(actionIds);
|
|
618
|
+
const removedMenuNames = menus.map((menu) => menu.name).filter(Boolean);
|
|
619
|
+
if (menus.length > 0) {
|
|
620
|
+
const menuIds = menus.map((menu) => menu.id).filter(Boolean);
|
|
621
|
+
for (const menu of menus) {
|
|
622
|
+
if (menu.roles?.length) {
|
|
623
|
+
await this.dataSource
|
|
624
|
+
.createQueryBuilder()
|
|
625
|
+
.relation(menu_item_metadata_entity_1.MenuItemMetadata, 'roles')
|
|
626
|
+
.of(menu.id)
|
|
627
|
+
.remove(menu.roles.map((role) => role.id));
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
if (menuIds.length > 0) {
|
|
631
|
+
await menuRepo
|
|
632
|
+
.createQueryBuilder()
|
|
633
|
+
.update(menu_item_metadata_entity_1.MenuItemMetadata)
|
|
634
|
+
.set({ parentMenuItem: null })
|
|
635
|
+
.where('id IN (:...menuIds)', { menuIds })
|
|
636
|
+
.execute();
|
|
637
|
+
await menuRepo
|
|
638
|
+
.createQueryBuilder()
|
|
639
|
+
.delete()
|
|
640
|
+
.from(menu_item_metadata_entity_1.MenuItemMetadata)
|
|
641
|
+
.where('id IN (:...menuIds)', { menuIds })
|
|
642
|
+
.execute();
|
|
643
|
+
}
|
|
644
|
+
this.logger.log(`Deleted ${menus.length} menu metadata record(s) for model id ${modelId}`);
|
|
645
|
+
}
|
|
646
|
+
if (uniqueActions.length > 0) {
|
|
647
|
+
await actionRepo.remove(uniqueActions);
|
|
648
|
+
this.logger.log(`Deleted ${uniqueActions.length} action metadata record(s) for model id ${modelId}`);
|
|
649
|
+
}
|
|
650
|
+
if (viewIds.length > 0) {
|
|
651
|
+
const userViews = await userViewRepo.find({
|
|
652
|
+
where: {
|
|
653
|
+
viewMetadata: { id: (0, typeorm_2.In)(viewIds) },
|
|
654
|
+
},
|
|
655
|
+
relations: ['viewMetadata'],
|
|
656
|
+
});
|
|
657
|
+
if (userViews.length > 0) {
|
|
658
|
+
await userViewRepo.remove(userViews);
|
|
659
|
+
this.logger.log(`Deleted ${userViews.length} user view metadata record(s) for model id ${modelId}`);
|
|
660
|
+
}
|
|
661
|
+
await viewRepo.remove(views);
|
|
662
|
+
this.logger.log(`Deleted ${views.length} view metadata record(s) for model id ${modelId}`);
|
|
663
|
+
}
|
|
664
|
+
return {
|
|
665
|
+
removedActionNames,
|
|
666
|
+
removedMenuNames,
|
|
667
|
+
removedViewNames,
|
|
668
|
+
};
|
|
669
|
+
}
|
|
670
|
+
async cleanupAssociatedImports(modelId) {
|
|
671
|
+
const importTransactionRepo = this.dataSource.getRepository(import_transaction_entity_1.ImportTransaction);
|
|
672
|
+
const importTransactionErrorLogRepo = this.dataSource.getRepository(import_transaction_error_log_entity_1.ImportTransactionErrorLog);
|
|
673
|
+
const importTransactions = await importTransactionRepo.find({
|
|
674
|
+
where: {
|
|
675
|
+
modelMetadata: { id: modelId },
|
|
676
|
+
},
|
|
677
|
+
});
|
|
678
|
+
if (importTransactions.length === 0) {
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
const importTransactionIds = importTransactions.map((transaction) => transaction.id);
|
|
682
|
+
const importTransactionErrorLogs = await importTransactionErrorLogRepo.find({
|
|
683
|
+
where: {
|
|
684
|
+
importTransaction: { id: (0, typeorm_2.In)(importTransactionIds) },
|
|
685
|
+
},
|
|
686
|
+
relations: ['importTransaction'],
|
|
687
|
+
});
|
|
688
|
+
if (importTransactionErrorLogs.length > 0) {
|
|
689
|
+
await importTransactionErrorLogRepo.remove(importTransactionErrorLogs);
|
|
690
|
+
this.logger.log(`Deleted ${importTransactionErrorLogs.length} import transaction error log record(s) for model id ${modelId}`);
|
|
691
|
+
}
|
|
692
|
+
await importTransactionRepo.remove(importTransactions);
|
|
693
|
+
this.logger.log(`Deleted ${importTransactions.length} import transaction record(s) for model id ${modelId}`);
|
|
694
|
+
}
|
|
695
|
+
async cleanupAssociatedPermissions(modelSingularName) {
|
|
696
|
+
const permissionsRepo = this.dataSource.getRepository(permission_metadata_entity_1.PermissionMetadata);
|
|
697
|
+
const controllerName = `${(0, string_helper_1.classify)(modelSingularName)}Controller`;
|
|
698
|
+
const permissions = await permissionsRepo
|
|
699
|
+
.createQueryBuilder('permission')
|
|
700
|
+
.leftJoinAndSelect('permission.roles', 'role')
|
|
701
|
+
.where('permission.name LIKE :pattern', { pattern: `${controllerName}.%` })
|
|
702
|
+
.getMany();
|
|
703
|
+
if (permissions.length === 0) {
|
|
704
|
+
return;
|
|
705
|
+
}
|
|
706
|
+
for (const permission of permissions) {
|
|
707
|
+
if (permission.roles?.length) {
|
|
708
|
+
await this.dataSource
|
|
709
|
+
.createQueryBuilder()
|
|
710
|
+
.relation(permission_metadata_entity_1.PermissionMetadata, 'roles')
|
|
711
|
+
.of(permission.id)
|
|
712
|
+
.remove(permission.roles.map((role) => role.id));
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
await permissionsRepo.remove(permissions);
|
|
716
|
+
this.logger.log(`Deleted ${permissions.length} permission metadata record(s) for model '${modelSingularName}'`);
|
|
717
|
+
}
|
|
718
|
+
async clearModelReferencesBeforeDelete(modelEntity) {
|
|
719
|
+
const modelRepo = this.dataSource.getRepository(model_metadata_entity_1.ModelMetadata);
|
|
720
|
+
const fieldIds = (modelEntity.fields ?? []).map((field) => field.id).filter(Boolean);
|
|
721
|
+
if (fieldIds.length > 0) {
|
|
722
|
+
await modelRepo
|
|
723
|
+
.createQueryBuilder()
|
|
724
|
+
.update(model_metadata_entity_1.ModelMetadata)
|
|
725
|
+
.set({ userKeyField: null })
|
|
726
|
+
.where('user_key_field_id IN (:...fieldIds)', { fieldIds })
|
|
727
|
+
.execute();
|
|
728
|
+
}
|
|
729
|
+
await modelRepo
|
|
730
|
+
.createQueryBuilder()
|
|
731
|
+
.update(model_metadata_entity_1.ModelMetadata)
|
|
732
|
+
.set({ parentModel: null })
|
|
733
|
+
.where('parent_model_id = :modelId', { modelId: modelEntity.id })
|
|
734
|
+
.execute();
|
|
735
|
+
}
|
|
736
|
+
async findMenusForActionIds(actionIds) {
|
|
737
|
+
if (!actionIds?.length) {
|
|
738
|
+
return [];
|
|
739
|
+
}
|
|
740
|
+
const menuRepo = this.dataSource.getRepository(menu_item_metadata_entity_1.MenuItemMetadata);
|
|
741
|
+
const menusById = new Map();
|
|
742
|
+
const rootMenus = await menuRepo.find({
|
|
743
|
+
where: {
|
|
744
|
+
action: { id: (0, typeorm_2.In)(actionIds) },
|
|
745
|
+
},
|
|
746
|
+
relations: ['roles', 'action', 'parentMenuItem'],
|
|
747
|
+
});
|
|
748
|
+
rootMenus.forEach((menu) => menusById.set(menu.id, menu));
|
|
749
|
+
let parentIds = rootMenus.map((menu) => menu.id);
|
|
750
|
+
while (parentIds.length > 0) {
|
|
751
|
+
const childMenus = await menuRepo.find({
|
|
752
|
+
where: {
|
|
753
|
+
parentMenuItem: { id: (0, typeorm_2.In)(parentIds) },
|
|
754
|
+
},
|
|
755
|
+
relations: ['roles', 'action', 'parentMenuItem'],
|
|
756
|
+
});
|
|
757
|
+
const nextParentIds = [];
|
|
758
|
+
for (const childMenu of childMenus) {
|
|
759
|
+
if (!menusById.has(childMenu.id)) {
|
|
760
|
+
menusById.set(childMenu.id, childMenu);
|
|
761
|
+
nextParentIds.push(childMenu.id);
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
parentIds = nextParentIds;
|
|
765
|
+
}
|
|
766
|
+
return Array.from(menusById.values());
|
|
767
|
+
}
|
|
548
768
|
async generateCodeViaCtl(modelId) {
|
|
549
769
|
const model = await this.findOne(modelId);
|
|
550
770
|
return this.commandService.executeCommandWithArgs({
|
|
551
771
|
command: 'npx',
|
|
552
|
-
args: ['@
|
|
772
|
+
args: ['@solidxai/solidctl@latest', 'generate', 'model', `--name=${model.singularName}`],
|
|
553
773
|
cwd: path.join(process.cwd(), '..'),
|
|
554
774
|
});
|
|
555
775
|
}
|
|
@@ -967,11 +1187,11 @@ let ModelMetadataService = class ModelMetadataService {
|
|
|
967
1187
|
const model = options.modelId ? await this.findOne(options.modelId, query) : await this.findOneByUserKey(options.modelUserKey, query.populate);
|
|
968
1188
|
const fieldsForRemoval = model.fields.filter((field) => options.fieldIdsForRemoval.includes(+field.id));
|
|
969
1189
|
const removeOutput = await this.executeRemoveFieldsCommand(model, fieldsForRemoval, options.dryRun);
|
|
970
|
-
|
|
1190
|
+
for (const field of fieldsForRemoval) {
|
|
971
1191
|
if (field.isMarkedForRemoval) {
|
|
972
|
-
this.fieldMetadataService.delete(field.id);
|
|
1192
|
+
await this.fieldMetadataService.delete(field.id);
|
|
973
1193
|
}
|
|
974
|
-
}
|
|
1194
|
+
}
|
|
975
1195
|
const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(model.module.name);
|
|
976
1196
|
const metaData = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(filePath);
|
|
977
1197
|
const existingModelIndex = metaData.moduleMetadata.models.findIndex((existingModel) => existingModel.singularName === model.singularName);
|