@solidstarters/solid-core 1.2.139 → 1.2.141

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 (66) hide show
  1. package/dist/repository/view-metadata.repository.d.ts +9 -0
  2. package/dist/repository/view-metadata.repository.d.ts.map +1 -0
  3. package/dist/repository/view-metadata.repository.js +42 -0
  4. package/dist/repository/view-metadata.repository.js.map +1 -0
  5. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -1
  6. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  7. package/dist/seeders/module-metadata-seeder.service.js +22 -8
  8. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  9. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts +14 -0
  10. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -0
  11. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +66 -0
  12. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -0
  13. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.d.ts +1 -1
  14. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.d.ts.map +1 -1
  15. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.js +1 -2
  16. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.js.map +1 -1
  17. package/dist/services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.d.ts +16 -0
  18. package/dist/services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.d.ts.map +1 -0
  19. package/dist/services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.js +48 -0
  20. package/dist/services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.js.map +1 -0
  21. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.d.ts +25 -0
  22. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.d.ts.map +1 -0
  23. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.js +114 -0
  24. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.js.map +1 -0
  25. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.d.ts +12 -0
  26. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.d.ts.map +1 -0
  27. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.js +37 -0
  28. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.js.map +1 -0
  29. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.d.ts +12 -0
  30. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.d.ts.map +1 -0
  31. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.js +38 -0
  32. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.js.map +1 -0
  33. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.d.ts +12 -0
  34. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.d.ts.map +1 -0
  35. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.js +38 -0
  36. package/dist/services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.js.map +1 -0
  37. package/dist/services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.d.ts +16 -0
  38. package/dist/services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.d.ts.map +1 -0
  39. package/dist/services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.js +47 -0
  40. package/dist/services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.js.map +1 -0
  41. package/dist/services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.d.ts +12 -0
  42. package/dist/services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.d.ts.map +1 -0
  43. package/dist/services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.js +36 -0
  44. package/dist/services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.js.map +1 -0
  45. package/dist/services/view-metadata.service.d.ts +3 -2
  46. package/dist/services/view-metadata.service.d.ts.map +1 -1
  47. package/dist/services/view-metadata.service.js +2 -3
  48. package/dist/services/view-metadata.service.js.map +1 -1
  49. package/dist/solid-core.module.d.ts.map +1 -1
  50. package/dist/solid-core.module.js +19 -3
  51. package/dist/solid-core.module.js.map +1 -1
  52. package/dist/tsconfig.tsbuildinfo +1 -1
  53. package/package.json +1 -1
  54. package/src/repository/view-metadata.repository.ts +31 -0
  55. package/src/seeders/module-metadata-seeder.service.ts +23 -17
  56. package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +70 -0
  57. package/src/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.ts +2 -4
  58. package/src/services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.ts +56 -0
  59. package/src/services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.ts +113 -0
  60. package/src/services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.ts +38 -0
  61. package/src/services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.ts +40 -0
  62. package/src/services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.ts +39 -0
  63. package/src/services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.ts +46 -0
  64. package/src/services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.ts +34 -0
  65. package/src/services/view-metadata.service.ts +3 -2
  66. package/src/solid-core.module.ts +20 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-add-field-mcp-tool-response-handler.service.js","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-add-field-mcp-tool-response-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAI5C,iEAA2D;AAE3D,sEAAiE;AACjE,sEAAiE;AAI1D,IAAM,mCAAmC,GAAzC,MAAM,mCAAmC;IAE5C,YACqB,oBAA0C,EAC1C,oBAA0C,EAC1C,aAA4B;QAF5B,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,kBAAa,GAAb,aAAa,CAAe;IAEjD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAA4B;QAEpC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAE9C,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;QAKjD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,aAAa,CAAC,CAAC;QACtE,CAAC;QAGD,WAAW,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;QAC1C,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,WAA4B,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,aAAkD,CAAC,CAAC;QAO9H,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;QAGlF,OAAO;YACH,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;SACxB,CAAA;IACL,CAAC;CAEJ,CAAA;AA5CY,kFAAmC;8CAAnC,mCAAmC;IAF/C,IAAA,mBAAU,GAAE;qCAKkC,6CAAoB;QACpB,6CAAoB;QAC3B,8BAAa;GALxC,mCAAmC,CA4C/C","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { UpdateModelMetaDataDto } from \"src/dtos/update-model-metadata.dto\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { FieldMetadata } from \"src/entities/field-metadata.entity\";\nimport { SolidRegistry } from \"src/helpers/solid-registry\";\nimport { IMcpToolResponseHandler } from \"../../interfaces\";\nimport { FieldMetadataService } from \"../field-metadata.service\";\nimport { ModelMetadataService } from \"../model-metadata.service\";\n\n@Injectable()\n// solid_add_field\nexport class SolidAddFieldMcpToolResponseHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly modelMetadataService: ModelMetadataService,\n private readonly fieldMetadataService: FieldMetadataService,\n private readonly solidRegistry: SolidRegistry,\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n // const aiResponse = JSON.parse(aiInteraction.message);\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponse = JSON.parse(escapedMessage);\n\n const { modelUserKey, fieldSchema } = aiResponse;\n\n // TODO: Validate if another field with same name exists, if it does then raise an error...\n\n // TODO: load the model with the fields.\n const modelMetadata = await this.modelMetadataService.findOneByUserKey(modelUserKey, ['fields']);\n if (!modelMetadata) {\n throw new Error(`Model with user key ${modelUserKey} not found.`);\n }\n\n // Add the fieldSchema to the model fields array\n fieldSchema['modelId'] = modelMetadata.id;\n modelMetadata.fields.push(fieldSchema as FieldMetadata);\n\n const modelObj = await this.modelMetadataService.update(modelMetadata.id, modelMetadata as unknown as UpdateModelMetaDataDto);\n\n\n // This creates the module-metadata.json file....\n // const modelObj = await this.fieldMetadataService.create(fieldSchema as CreateFieldMetadataDto);\n\n // Now we need to run solid seed & then solid refresh-model --name <module-name>\n await this.modelMetadataService.handleGenerateCode({ modelId: modelMetadata.id });\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: true,\n serverRebooting: true,\n }\n }\n\n}"]}
@@ -0,0 +1,25 @@
1
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
2
+ import { IMcpToolResponseHandler } from "../../interfaces";
3
+ import { ActionMetadataService } from "../action-metadata.service";
4
+ import { DashboardService } from "../dashboard.service";
5
+ import { MenuItemMetadataService } from "../menu-item-metadata.service";
6
+ import { ModelMetadataService } from "../model-metadata.service";
7
+ import { ModuleMetadataService } from "../module-metadata.service";
8
+ import { RoleMetadataService } from "../role-metadata.service";
9
+ export declare class SolidCreateDashboardMcpToolResponseHandler implements IMcpToolResponseHandler {
10
+ private readonly dashboardService;
11
+ private readonly actionMetadataService;
12
+ private readonly menuItemMetadataService;
13
+ private readonly moduleMetadataService;
14
+ private readonly modelMetadataService;
15
+ private readonly roleService;
16
+ constructor(dashboardService: DashboardService, actionMetadataService: ActionMetadataService, menuItemMetadataService: MenuItemMetadataService, moduleMetadataService: ModuleMetadataService, modelMetadataService: ModelMetadataService, roleService: RoleMetadataService);
17
+ apply(aiInteraction: AiInteraction): Promise<{
18
+ seedingRequired: boolean;
19
+ serverRebooting: boolean;
20
+ }>;
21
+ private createMenuItemEntry;
22
+ private createActionMetadataEntry;
23
+ private createDashboard;
24
+ }
25
+ //# sourceMappingURL=solid-create-dashboard-mcp-tool-response-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-mcp-tool-response-handler.service.d.ts","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBACa,0CAA2C,YAAW,uBAAuB;IAGlF,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW;gBALX,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB,EAC5C,uBAAuB,EAAE,uBAAuB,EAChD,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,EAAE,oBAAoB,EAC1C,WAAW,EAAE,mBAAmB;IAI/C,KAAK,CAAC,aAAa,EAAE,aAAa;;;;YAkB1B,mBAAmB;YAsCnB,yBAAyB;YAuBzB,eAAe;CAMhC"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SolidCreateDashboardMcpToolResponseHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const create_dashboard_dto_1 = require("../../dtos/create-dashboard.dto");
16
+ const action_metadata_service_1 = require("../action-metadata.service");
17
+ const dashboard_service_1 = require("../dashboard.service");
18
+ const menu_item_metadata_service_1 = require("../menu-item-metadata.service");
19
+ const model_metadata_service_1 = require("../model-metadata.service");
20
+ const module_metadata_service_1 = require("../module-metadata.service");
21
+ const role_metadata_service_1 = require("../role-metadata.service");
22
+ let SolidCreateDashboardMcpToolResponseHandler = class SolidCreateDashboardMcpToolResponseHandler {
23
+ constructor(dashboardService, actionMetadataService, menuItemMetadataService, moduleMetadataService, modelMetadataService, roleService) {
24
+ this.dashboardService = dashboardService;
25
+ this.actionMetadataService = actionMetadataService;
26
+ this.menuItemMetadataService = menuItemMetadataService;
27
+ this.moduleMetadataService = moduleMetadataService;
28
+ this.modelMetadataService = modelMetadataService;
29
+ this.roleService = roleService;
30
+ }
31
+ async apply(aiInteraction) {
32
+ const escapedMessage = aiInteraction.message.replace(/\\'/g, "'");
33
+ const aiResponseMessage = JSON.parse(escapedMessage);
34
+ const { dashboardDto, dashboard } = await this.createDashboard(aiResponseMessage);
35
+ const { moduleUserKey, actionMetadataEntity } = await this.createActionMetadataEntry(dashboardDto, dashboard);
36
+ await this.createMenuItemEntry(dashboard, moduleUserKey, actionMetadataEntity);
37
+ return {
38
+ seedingRequired: false,
39
+ serverRebooting: false,
40
+ };
41
+ }
42
+ async createMenuItemEntry(dashboard, moduleUserKey, actionMetadataEntity) {
43
+ const menuData = {
44
+ displayName: dashboard.displayName || dashboard.name,
45
+ name: `${moduleUserKey}-${dashboard.name}-dashboard-menu-item`,
46
+ sequenceNumber: 1,
47
+ actionUserKey: actionMetadataEntity.name,
48
+ moduleUserKey: moduleUserKey,
49
+ parentMenuItemUserKey: '',
50
+ };
51
+ const adminRole = await this.roleService.findRoleByName('Admin');
52
+ const specifiedRoles = menuData['roles'];
53
+ const specifiedRoleObjects = [adminRole];
54
+ if (specifiedRoles) {
55
+ for (let i = 0; i < specifiedRoles.length; i++) {
56
+ const specifiedRole = specifiedRoles[i];
57
+ const specifiedRoleObject = await this.roleService.findRoleByName(specifiedRole);
58
+ if (!specifiedRoleObject) {
59
+ throw new Error(`Invalid role: (${specifiedRole}) specified against menu with display name ${menuData.displayName}.`);
60
+ }
61
+ specifiedRoleObjects.push(specifiedRoleObject);
62
+ }
63
+ }
64
+ menuData['roles'] = specifiedRoleObjects;
65
+ menuData['action'] = await this.actionMetadataService.findOneByUserKey(menuData.actionUserKey);
66
+ menuData['module'] = await this.moduleMetadataService.findOneByUserKey(menuData.moduleUserKey);
67
+ if (menuData.parentMenuItemUserKey) {
68
+ menuData['parentMenuItem'] = await this.menuItemMetadataService.findOneByUserKey(menuData.parentMenuItemUserKey);
69
+ }
70
+ else {
71
+ menuData['parentMenuItem'] = null;
72
+ }
73
+ await this.menuItemMetadataService.upsert(menuData);
74
+ }
75
+ async createActionMetadataEntry(dashboardDto, dashboard) {
76
+ const moduleUserKey = dashboardDto.moduleUserKey;
77
+ const actionMetadata = {
78
+ name: `${dashboard.name}-view`,
79
+ displayName: dashboard.displayName || dashboard.name,
80
+ type: 'custom',
81
+ domain: "{}",
82
+ context: "{}",
83
+ customComponent: `/admin/core/${moduleUserKey}/dashboards?dashboardName=${dashboard.name}`,
84
+ customIsModal: true,
85
+ serverEndpoint: '',
86
+ moduleUserKey: moduleUserKey,
87
+ modelUserKey: '',
88
+ viewUserKey: `${dashboard.name}-view`,
89
+ };
90
+ actionMetadata['module'] = await this.moduleMetadataService.findOneByUserKey(actionMetadata.moduleUserKey);
91
+ if (actionMetadata.modelUserKey) {
92
+ actionMetadata['model'] = await this.modelMetadataService.findOneByUserKey(actionMetadata.modelUserKey);
93
+ }
94
+ const actionMetadataEntity = await this.actionMetadataService.upsert(actionMetadata);
95
+ return { moduleUserKey, actionMetadataEntity };
96
+ }
97
+ async createDashboard(aiResponseMessage) {
98
+ const dashboardDto = (0, class_transformer_1.plainToInstance)(create_dashboard_dto_1.CreateDashboardDto, aiResponseMessage);
99
+ dashboardDto['layoutJson'] = JSON.stringify(dashboardDto['layoutJson']);
100
+ const dashboard = await this.dashboardService.create(dashboardDto, []);
101
+ return { dashboardDto, dashboard };
102
+ }
103
+ };
104
+ exports.SolidCreateDashboardMcpToolResponseHandler = SolidCreateDashboardMcpToolResponseHandler;
105
+ exports.SolidCreateDashboardMcpToolResponseHandler = SolidCreateDashboardMcpToolResponseHandler = __decorate([
106
+ (0, common_1.Injectable)(),
107
+ __metadata("design:paramtypes", [dashboard_service_1.DashboardService,
108
+ action_metadata_service_1.ActionMetadataService,
109
+ menu_item_metadata_service_1.MenuItemMetadataService,
110
+ module_metadata_service_1.ModuleMetadataService,
111
+ model_metadata_service_1.ModelMetadataService,
112
+ role_metadata_service_1.RoleMetadataService])
113
+ ], SolidCreateDashboardMcpToolResponseHandler);
114
+ //# sourceMappingURL=solid-create-dashboard-mcp-tool-response-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-mcp-tool-response-handler.service.js","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-create-dashboard-mcp-tool-response-handler.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { plainToInstance } from \"class-transformer\";\nimport { CreateDashboardDto } from \"src/dtos/create-dashboard.dto\";\nimport { UpdateMenuItemMetadataDto } from \"src/dtos/update-menu-item-metadata.dto\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { Dashboard } from \"src/entities/dashboard.entity\";\nimport { IMcpToolResponseHandler } from \"../../interfaces\";\nimport { ActionMetadataService } from \"../action-metadata.service\";\nimport { DashboardService } from \"../dashboard.service\";\nimport { MenuItemMetadataService } from \"../menu-item-metadata.service\";\nimport { ModelMetadataService } from \"../model-metadata.service\";\nimport { ModuleMetadataService } from \"../module-metadata.service\";\nimport { RoleMetadataService } from \"../role-metadata.service\";\n\n@Injectable()\nexport class SolidCreateDashboardMcpToolResponseHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly dashboardService: DashboardService,\n private readonly actionMetadataService: ActionMetadataService,\n private readonly menuItemMetadataService: MenuItemMetadataService,\n private readonly moduleMetadataService: ModuleMetadataService,\n private readonly modelMetadataService: ModelMetadataService,\n private readonly roleService: RoleMetadataService, // Assuming roleService is a Mongoose model, adjust as necessary\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponseMessage = JSON.parse(escapedMessage);\n\n const { dashboardDto, dashboard } = await this.createDashboard(aiResponseMessage);\n\n const { moduleUserKey, actionMetadataEntity } = await this.createActionMetadataEntry(dashboardDto, dashboard);\n\n await this.createMenuItemEntry(dashboard, moduleUserKey, actionMetadataEntity);\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: false,\n serverRebooting: false,\n }\n }\n\n\n private async createMenuItemEntry(dashboard: Dashboard, moduleUserKey: string, actionMetadataEntity: any) {\n const menuData = {\n displayName: dashboard.displayName || dashboard.name,\n name: `${moduleUserKey}-${dashboard.name}-dashboard-menu-item`,\n sequenceNumber: 1,\n actionUserKey: actionMetadataEntity.name,\n moduleUserKey: moduleUserKey,\n parentMenuItemUserKey: '',\n };\n\n const adminRole = await this.roleService.findRoleByName('Admin');\n const specifiedRoles = menuData['roles'];\n\n // If the developer has specified roles, then resolve them, making sure that admin role is also given.\n const specifiedRoleObjects = [adminRole];\n if (specifiedRoles) {\n for (let i = 0; i < specifiedRoles.length; i++) {\n const specifiedRole = specifiedRoles[i];\n const specifiedRoleObject = await this.roleService.findRoleByName(specifiedRole);\n if (!specifiedRoleObject) {\n throw new Error(`Invalid role: (${specifiedRole}) specified against menu with display name ${menuData.displayName}.`);\n }\n specifiedRoleObjects.push(specifiedRoleObject);\n }\n }\n\n menuData['roles'] = specifiedRoleObjects;\n menuData['action'] = await this.actionMetadataService.findOneByUserKey(menuData.actionUserKey);\n menuData['module'] = await this.moduleMetadataService.findOneByUserKey(menuData.moduleUserKey);\n\n if (menuData.parentMenuItemUserKey) {\n menuData['parentMenuItem'] = await this.menuItemMetadataService.findOneByUserKey(menuData.parentMenuItemUserKey);\n } else {\n menuData['parentMenuItem'] = null;\n }\n await this.menuItemMetadataService.upsert(menuData as unknown as UpdateMenuItemMetadataDto);\n }\n\n private async createActionMetadataEntry(dashboardDto: CreateDashboardDto, dashboard: Dashboard) {\n const moduleUserKey = dashboardDto.moduleUserKey;\n const actionMetadata = {\n name: `${dashboard.name}-view`,\n displayName: dashboard.displayName || dashboard.name,\n type: 'custom',\n domain: \"{}\",\n context: \"{}\",\n customComponent: `/admin/core/${moduleUserKey}/dashboards?dashboardName=${dashboard.name}`,\n customIsModal: true,\n serverEndpoint: '',\n moduleUserKey: moduleUserKey,\n modelUserKey: '',\n viewUserKey: `${dashboard.name}-view`,\n };\n actionMetadata['module'] = await this.moduleMetadataService.findOneByUserKey(actionMetadata.moduleUserKey);\n if (actionMetadata.modelUserKey) {\n actionMetadata['model'] = await this.modelMetadataService.findOneByUserKey(actionMetadata.modelUserKey);\n }\n const actionMetadataEntity = await this.actionMetadataService.upsert(actionMetadata);\n return { moduleUserKey, actionMetadataEntity };\n }\n\n private async createDashboard(aiResponseMessage: any) {\n const dashboardDto = plainToInstance(CreateDashboardDto, aiResponseMessage);\n dashboardDto['layoutJson'] = JSON.stringify(dashboardDto['layoutJson']);\n const dashboard = await this.dashboardService.create(dashboardDto, []);\n return { dashboardDto, dashboard };\n }\n}"]}
@@ -0,0 +1,12 @@
1
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
2
+ import { IMcpToolResponseHandler } from "../../interfaces";
3
+ import { DashboardQuestionService } from "../dashboard-question.service";
4
+ export declare class SolidCreateDashboardQuestionMcpToolResponseHandler implements IMcpToolResponseHandler {
5
+ private readonly dashboardQuestionService;
6
+ constructor(dashboardQuestionService: DashboardQuestionService);
7
+ apply(aiInteraction: AiInteraction): Promise<{
8
+ seedingRequired: boolean;
9
+ serverRebooting: boolean;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=solid-create-dashboard-question-mcp-tool-response-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-question-mcp-tool-response-handler.service.d.ts","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,qBACa,kDAAmD,YAAW,uBAAuB;IAG1F,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAAxB,wBAAwB,EAAE,wBAAwB;IAIjE,KAAK,CAAC,aAAa,EAAE,aAAa;;;;CAsB3C"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SolidCreateDashboardQuestionMcpToolResponseHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const create_dashboard_question_dto_1 = require("../../dtos/create-dashboard-question.dto");
16
+ const dashboard_question_service_1 = require("../dashboard-question.service");
17
+ let SolidCreateDashboardQuestionMcpToolResponseHandler = class SolidCreateDashboardQuestionMcpToolResponseHandler {
18
+ constructor(dashboardQuestionService) {
19
+ this.dashboardQuestionService = dashboardQuestionService;
20
+ }
21
+ async apply(aiInteraction) {
22
+ const escapedMessage = aiInteraction.message.replace(/\\'/g, "'");
23
+ const aiResponseMessage = JSON.parse(escapedMessage);
24
+ const dashboardQuestionDto = (0, class_transformer_1.plainToInstance)(create_dashboard_question_dto_1.CreateDashboardQuestionDto, aiResponseMessage);
25
+ const dashboardQuestion = await this.dashboardQuestionService.create(dashboardQuestionDto, []);
26
+ return {
27
+ seedingRequired: false,
28
+ serverRebooting: false,
29
+ };
30
+ }
31
+ };
32
+ exports.SolidCreateDashboardQuestionMcpToolResponseHandler = SolidCreateDashboardQuestionMcpToolResponseHandler;
33
+ exports.SolidCreateDashboardQuestionMcpToolResponseHandler = SolidCreateDashboardQuestionMcpToolResponseHandler = __decorate([
34
+ (0, common_1.Injectable)(),
35
+ __metadata("design:paramtypes", [dashboard_question_service_1.DashboardQuestionService])
36
+ ], SolidCreateDashboardQuestionMcpToolResponseHandler);
37
+ //# sourceMappingURL=solid-create-dashboard-question-mcp-tool-response-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-question-mcp-tool-response-handler.service.js","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-create-dashboard-question-mcp-tool-response-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAoD;AACpD,4FAAoF;AAGpF,8EAAyE;AAGlE,IAAM,kDAAkD,GAAxD,MAAM,kDAAkD;IAE3D,YACqB,wBAAkD;QAAlD,6BAAwB,GAAxB,wBAAwB,CAA0B;IAEvE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAA4B;QACpC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QASrD,MAAM,oBAAoB,GAAG,IAAA,mCAAe,EAAC,0DAA0B,EAAE,iBAAiB,CAAC,CAAC;QAE5F,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAG/F,OAAO;YACH,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;SACzB,CAAA;IACL,CAAC;CAEJ,CAAA;AA7BY,gHAAkD;6DAAlD,kDAAkD;IAD9D,IAAA,mBAAU,GAAE;qCAIsC,qDAAwB;GAH9D,kDAAkD,CA6B9D","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { plainToInstance } from \"class-transformer\";\nimport { CreateDashboardQuestionDto } from \"src/dtos/create-dashboard-question.dto\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { IMcpToolResponseHandler } from \"../../interfaces\";\nimport { DashboardQuestionService } from \"../dashboard-question.service\";\n\n@Injectable()\nexport class SolidCreateDashboardQuestionMcpToolResponseHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly dashboardQuestionService: DashboardQuestionService,\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponseMessage = JSON.parse(escapedMessage);\n\n //FIXME: Replace \\' with ' in the response, since the AI response seems to contain \\' which is invalid JSON.\n // This is a workaround for now, until we find a better solution.\n // const aiResponseMessageReplaced = aiResponseMessage['message'].replace(/\\\\'/g, \"'\");\n // const dashboardUserKey = aiResponseMessageReplaced['dashboardUserKey'];\n // if (!dashboardUserKey) {\n // throw new Error(\"Dashboard User Key is required to create a Dashboard Question.\");\n // }\n const dashboardQuestionDto = plainToInstance(CreateDashboardQuestionDto, aiResponseMessage);\n\n const dashboardQuestion = await this.dashboardQuestionService.create(dashboardQuestionDto, []);\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: false,\n serverRebooting: false,\n }\n }\n\n}"]}
@@ -0,0 +1,12 @@
1
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
2
+ import { IMcpToolResponseHandler } from "../../interfaces";
3
+ import { DashboardQuestionSqlDatasetConfigService } from "../dashboard-question-sql-dataset-config.service";
4
+ export declare class SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler implements IMcpToolResponseHandler {
5
+ private readonly dashboardQuestionSqlDatasetConfigService;
6
+ constructor(dashboardQuestionSqlDatasetConfigService: DashboardQuestionSqlDatasetConfigService);
7
+ apply(aiInteraction: AiInteraction): Promise<{
8
+ seedingRequired: boolean;
9
+ serverRebooting: boolean;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.d.ts","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,wCAAwC,EAAE,MAAM,kDAAkD,CAAC;AAG5G,qBACa,kEAAmE,YAAW,uBAAuB;IAG1G,OAAO,CAAC,QAAQ,CAAC,wCAAwC;gBAAxC,wCAAwC,EAAE,wCAAwC;IAIjG,KAAK,CAAC,aAAa,EAAE,aAAa;;;;CAwB3C"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const dashboard_question_sql_dataset_config_service_1 = require("../dashboard-question-sql-dataset-config.service");
16
+ const create_dashboard_question_sql_dataset_config_dto_1 = require("../../dtos/create-dashboard-question-sql-dataset-config.dto");
17
+ let SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler = class SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler {
18
+ constructor(dashboardQuestionSqlDatasetConfigService) {
19
+ this.dashboardQuestionSqlDatasetConfigService = dashboardQuestionSqlDatasetConfigService;
20
+ }
21
+ async apply(aiInteraction) {
22
+ const escapedMessage = aiInteraction.message.replace(/\\'/g, "'");
23
+ const aiResponseMessage = JSON.parse(escapedMessage);
24
+ const dto = (0, class_transformer_1.plainToInstance)(create_dashboard_question_sql_dataset_config_dto_1.CreateDashboardQuestionSqlDatasetConfigDto, aiResponseMessage);
25
+ dto['options'] = JSON.stringify(dto['options']);
26
+ const dashboardQuestion = await this.dashboardQuestionSqlDatasetConfigService.create(dto, []);
27
+ return {
28
+ seedingRequired: false,
29
+ serverRebooting: false,
30
+ };
31
+ }
32
+ };
33
+ exports.SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler = SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler;
34
+ exports.SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler = SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler = __decorate([
35
+ (0, common_1.Injectable)(),
36
+ __metadata("design:paramtypes", [dashboard_question_sql_dataset_config_service_1.DashboardQuestionSqlDatasetConfigService])
37
+ ], SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler);
38
+ //# sourceMappingURL=solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.js","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-tool-response-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAoD;AAGpD,oHAA4G;AAC5G,kIAAuH;AAGhH,IAAM,kEAAkE,GAAxE,MAAM,kEAAkE;IAE3E,YACqB,wCAAkF;QAAlF,6CAAwC,GAAxC,wCAAwC,CAA0C;IAEvG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAA4B;QAEpC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QASrD,MAAM,GAAG,GAAG,IAAA,mCAAe,EAAC,6FAA0C,EAAE,iBAAiB,CAAC,CAAC;QAC3F,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAEhD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,wCAAwC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAG9F,OAAO;YACH,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;SACzB,CAAA;IACL,CAAC;CAEJ,CAAA;AA/BY,gJAAkE;6EAAlE,kEAAkE;IAD9E,IAAA,mBAAU,GAAE;qCAIsD,wFAAwC;GAH9F,kEAAkE,CA+B9E","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { plainToInstance } from \"class-transformer\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { IMcpToolResponseHandler } from \"../../interfaces\";\nimport { DashboardQuestionSqlDatasetConfigService } from \"../dashboard-question-sql-dataset-config.service\";\nimport { CreateDashboardQuestionSqlDatasetConfigDto } from \"src/dtos/create-dashboard-question-sql-dataset-config.dto\";\n\n@Injectable()\nexport class SolidCreateDashboardQuestionSqlDatasetConfigMcpToolResponseHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly dashboardQuestionSqlDatasetConfigService: DashboardQuestionSqlDatasetConfigService,\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n // const aiResponse = JSON.parse(aiInteraction.message);\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponseMessage = JSON.parse(escapedMessage);\n\n // FIXME: Replace \\' with ' in the response, since the AI response seems to contain \\' which is invalid JSON.\n // This is a workaround for now, until we find a better solution.\n // const aiResponseMessageReplaced = aiResponse['message'].replace(/\\\\'/g, \"'\");\n // const dashboardUserKey = aiResponseMessageReplaced['dashboardUserKey'];\n // if (!dashboardUserKey) {\n // throw new Error(\"Dashboard User Key is required to create a Dashboard Question.\");\n // }\n const dto = plainToInstance(CreateDashboardQuestionSqlDatasetConfigDto, aiResponseMessage);\n dto['options'] = JSON.stringify(dto['options']);\n\n const dashboardQuestion = await this.dashboardQuestionSqlDatasetConfigService.create(dto, []);\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: false,\n serverRebooting: false,\n }\n }\n\n}"]}
@@ -0,0 +1,12 @@
1
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
2
+ import { IMcpToolResponseHandler } from "../../interfaces";
3
+ import { DashboardQuestionService } from "../dashboard-question.service";
4
+ export declare class SolidCreateDashboardWidgetMcpToolResponseHandler implements IMcpToolResponseHandler {
5
+ private readonly dashboardQuestionService;
6
+ constructor(dashboardQuestionService: DashboardQuestionService);
7
+ apply(aiInteraction: AiInteraction): Promise<{
8
+ seedingRequired: boolean;
9
+ serverRebooting: boolean;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=solid-create-dashboard-widget-mcp-tool-response-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-widget-mcp-tool-response-handler.service.d.ts","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,qBACa,gDAAiD,YAAW,uBAAuB;IAGxF,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAAxB,wBAAwB,EAAE,wBAAwB;IAIjE,KAAK,CAAC,aAAa,EAAE,aAAa;;;;CAuB3C"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SolidCreateDashboardWidgetMcpToolResponseHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const create_dashboard_question_dto_1 = require("../../dtos/create-dashboard-question.dto");
16
+ const dashboard_question_service_1 = require("../dashboard-question.service");
17
+ let SolidCreateDashboardWidgetMcpToolResponseHandler = class SolidCreateDashboardWidgetMcpToolResponseHandler {
18
+ constructor(dashboardQuestionService) {
19
+ this.dashboardQuestionService = dashboardQuestionService;
20
+ }
21
+ async apply(aiInteraction) {
22
+ const escapedMessage = aiInteraction.message.replace(/\\'/g, "'");
23
+ const aiResponseMessage = JSON.parse(escapedMessage);
24
+ const dashboardQuestionDto = (0, class_transformer_1.plainToInstance)(create_dashboard_question_dto_1.CreateDashboardQuestionDto, aiResponseMessage);
25
+ dashboardQuestionDto['questionSqlDatasetConfigsCommand'] = "update";
26
+ const dashboardQuestion = await this.dashboardQuestionService.create(dashboardQuestionDto, []);
27
+ return {
28
+ seedingRequired: false,
29
+ serverRebooting: false,
30
+ };
31
+ }
32
+ };
33
+ exports.SolidCreateDashboardWidgetMcpToolResponseHandler = SolidCreateDashboardWidgetMcpToolResponseHandler;
34
+ exports.SolidCreateDashboardWidgetMcpToolResponseHandler = SolidCreateDashboardWidgetMcpToolResponseHandler = __decorate([
35
+ (0, common_1.Injectable)(),
36
+ __metadata("design:paramtypes", [dashboard_question_service_1.DashboardQuestionService])
37
+ ], SolidCreateDashboardWidgetMcpToolResponseHandler);
38
+ //# sourceMappingURL=solid-create-dashboard-widget-mcp-tool-response-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-dashboard-widget-mcp-tool-response-handler.service.js","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-create-dashboard-widget-mcp-tool-response-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAoD;AACpD,4FAAoF;AAGpF,8EAAyE;AAGlE,IAAM,gDAAgD,GAAtD,MAAM,gDAAgD;IAEzD,YACqB,wBAAkD;QAAlD,6BAAwB,GAAxB,wBAAwB,CAA0B;IAEvE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAA4B;QACpC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QASrD,MAAM,oBAAoB,GAAG,IAAA,mCAAe,EAAC,0DAA0B,EAAE,iBAAiB,CAAC,CAAC;QAC5F,oBAAoB,CAAC,kCAAkC,CAAC,GAAG,QAAQ,CAAC;QAEpE,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAG/F,OAAO;YACH,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;SACzB,CAAA;IACL,CAAC;CAEJ,CAAA;AA9BY,4GAAgD;2DAAhD,gDAAgD;IAD5D,IAAA,mBAAU,GAAE;qCAIsC,qDAAwB;GAH9D,gDAAgD,CA8B5D","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { plainToInstance } from \"class-transformer\";\nimport { CreateDashboardQuestionDto } from \"src/dtos/create-dashboard-question.dto\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { IMcpToolResponseHandler } from \"../../interfaces\";\nimport { DashboardQuestionService } from \"../dashboard-question.service\";\n\n@Injectable()\nexport class SolidCreateDashboardWidgetMcpToolResponseHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly dashboardQuestionService: DashboardQuestionService,\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponseMessage = JSON.parse(escapedMessage);\n\n //FIXME: Replace \\' with ' in the response, since the AI response seems to contain \\' which is invalid JSON.\n // This is a workaround for now, until we find a better solution.\n // const aiResponseMessageReplaced = aiResponseMessage['message'].replace(/\\\\'/g, \"'\");\n // const dashboardUserKey = aiResponseMessageReplaced['dashboardUserKey'];\n // if (!dashboardUserKey) {\n // throw new Error(\"Dashboard User Key is required to create a Dashboard Question.\");\n // }\n const dashboardQuestionDto = plainToInstance(CreateDashboardQuestionDto, aiResponseMessage);\n dashboardQuestionDto['questionSqlDatasetConfigsCommand'] = \"update\";\n\n const dashboardQuestion = await this.dashboardQuestionService.create(dashboardQuestionDto, []);\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: false,\n serverRebooting: false,\n }\n }\n\n}"]}
@@ -0,0 +1,16 @@
1
+ import { IMcpToolResponseHandler } from "../../interfaces";
2
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
3
+ import { SolidRegistry } from "src/helpers/solid-registry";
4
+ import { ModelMetadataService } from "../model-metadata.service";
5
+ import { ModuleMetadataService } from "../module-metadata.service";
6
+ export declare class SolidCreateModelWithFieldsMcpToolResponseHandler implements IMcpToolResponseHandler {
7
+ private readonly moduleMetadataService;
8
+ private readonly modelMetadataService;
9
+ private readonly solidRegistry;
10
+ constructor(moduleMetadataService: ModuleMetadataService, modelMetadataService: ModelMetadataService, solidRegistry: SolidRegistry);
11
+ apply(aiInteraction: AiInteraction): Promise<{
12
+ seedingRequired: boolean;
13
+ serverRebooting: boolean;
14
+ }>;
15
+ }
16
+ //# sourceMappingURL=solid-create-model-with-fields-mcp-tool-response-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-model-with-fields-mcp-tool-response-handler.service.d.ts","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,qBACa,gDAAiD,YAAW,uBAAuB;IAGxF,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,EAAE,oBAAoB,EAC1C,aAAa,EAAE,aAAa;IAI3C,KAAK,CAAC,aAAa,EAAE,aAAa;;;;CA2B3C"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SolidCreateModelWithFieldsMcpToolResponseHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const solid_registry_1 = require("../../helpers/solid-registry");
15
+ const model_metadata_service_1 = require("../model-metadata.service");
16
+ const module_metadata_service_1 = require("../module-metadata.service");
17
+ let SolidCreateModelWithFieldsMcpToolResponseHandler = class SolidCreateModelWithFieldsMcpToolResponseHandler {
18
+ constructor(moduleMetadataService, modelMetadataService, solidRegistry) {
19
+ this.moduleMetadataService = moduleMetadataService;
20
+ this.modelMetadataService = modelMetadataService;
21
+ this.solidRegistry = solidRegistry;
22
+ }
23
+ async apply(aiInteraction) {
24
+ const escapedMessage = aiInteraction.message.replace(/\\'/g, "'");
25
+ const aiResponse = JSON.parse(escapedMessage);
26
+ const { moduleUserKey, modelSchema } = aiResponse;
27
+ const moduleMetadata = await this.moduleMetadataService.findOneByUserKey(moduleUserKey);
28
+ if (!moduleMetadata) {
29
+ throw new Error(`Module with user key ${moduleUserKey} not found.`);
30
+ }
31
+ modelSchema['moduleId'] = moduleMetadata.id;
32
+ const modelObj = await this.modelMetadataService.create(modelSchema);
33
+ await this.modelMetadataService.handleGenerateCode({ modelId: modelObj.id });
34
+ return {
35
+ seedingRequired: true,
36
+ serverRebooting: true,
37
+ };
38
+ }
39
+ };
40
+ exports.SolidCreateModelWithFieldsMcpToolResponseHandler = SolidCreateModelWithFieldsMcpToolResponseHandler;
41
+ exports.SolidCreateModelWithFieldsMcpToolResponseHandler = SolidCreateModelWithFieldsMcpToolResponseHandler = __decorate([
42
+ (0, common_1.Injectable)(),
43
+ __metadata("design:paramtypes", [module_metadata_service_1.ModuleMetadataService,
44
+ model_metadata_service_1.ModelMetadataService,
45
+ solid_registry_1.SolidRegistry])
46
+ ], SolidCreateModelWithFieldsMcpToolResponseHandler);
47
+ //# sourceMappingURL=solid-create-model-with-fields-mcp-tool-response-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-create-model-with-fields-mcp-tool-response-handler.service.js","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-create-model-with-fields-mcp-tool-response-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAG5C,iEAA2D;AAC3D,sEAAiE;AAEjE,wEAAmE;AAG5D,IAAM,gDAAgD,GAAtD,MAAM,gDAAgD;IAEzD,YACqB,qBAA4C,EAC5C,oBAA0C,EAC1C,aAA4B;QAF5B,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,kBAAa,GAAb,aAAa,CAAe;IAEjD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAA4B;QAEpC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAE9C,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;QAClD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACxF,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,aAAa,aAAa,CAAC,CAAC;QACxE,CAAC;QACD,WAAW,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC;QAK5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAqC,CAAC,CAAC;QAG/F,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAG7E,OAAO;YACH,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;SACxB,CAAA;IACL,CAAC;CAEJ,CAAA;AApCY,4GAAgD;2DAAhD,gDAAgD;IAD5D,IAAA,mBAAU,GAAE;qCAImC,+CAAqB;QACtB,6CAAoB;QAC3B,8BAAa;GALxC,gDAAgD,CAoC5D","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { IMcpToolResponseHandler } from \"../../interfaces\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { SolidRegistry } from \"src/helpers/solid-registry\";\nimport { ModelMetadataService } from \"../model-metadata.service\";\nimport { CreateModelMetadataDto } from \"src/dtos/create-model-metadata.dto\";\nimport { ModuleMetadataService } from \"../module-metadata.service\";\n\n@Injectable()\nexport class SolidCreateModelWithFieldsMcpToolResponseHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly moduleMetadataService: ModuleMetadataService,\n private readonly modelMetadataService: ModelMetadataService,\n private readonly solidRegistry: SolidRegistry,\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n // const aiResponse = JSON.parse(aiInteraction.message);\n const escapedMessage = aiInteraction.message.replace(/\\\\'/g, \"'\");\n const aiResponse = JSON.parse(escapedMessage);\n\n const { moduleUserKey, modelSchema } = aiResponse;\n const moduleMetadata = await this.moduleMetadataService.findOneByUserKey(moduleUserKey);\n if (!moduleMetadata) {\n throw new Error(`Module with user key ${moduleUserKey} not found.`);\n }\n modelSchema['moduleId'] = moduleMetadata.id;\n\n // TODO: Validate if another model with same name exists, if it does then raise an error...\n\n // This creates the module-metadata.json file....\n const modelObj = await this.modelMetadataService.create(modelSchema as CreateModelMetadataDto);\n\n // Now we need to run solid seed & then solid refresh-model --name <module-name>\n await this.modelMetadataService.handleGenerateCode({ modelId: modelObj.id });\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: true,\n serverRebooting: true,\n }\n }\n\n}"]}
@@ -0,0 +1,12 @@
1
+ import { AiInteraction } from "src/entities/ai-interaction.entity";
2
+ import { ViewMetadataRepository } from "src/repository/view-metadata.repository";
3
+ import { IMcpToolResponseHandler } from "../../interfaces";
4
+ export declare class SolidCreateModelLayoutMcpToolResponseHandler implements IMcpToolResponseHandler {
5
+ private readonly viewMetadataRepository;
6
+ constructor(viewMetadataRepository: ViewMetadataRepository);
7
+ apply(aiInteraction: AiInteraction): Promise<{
8
+ seedingRequired: boolean;
9
+ serverRebooting: boolean;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=solid-save-model-layout-mcp-tool-response-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-save-model-layout-mcp-tool-response-handler.service.d.ts","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,qBACa,4CAA6C,YAAW,uBAAuB;IAGpF,OAAO,CAAC,QAAQ,CAAC,sBAAsB;gBAAtB,sBAAsB,EAAE,sBAAsB;IAI7D,KAAK,CAAC,aAAa,EAAE,aAAa;;;;CAoB3C"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SolidCreateModelLayoutMcpToolResponseHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const view_metadata_repository_1 = require("../../repository/view-metadata.repository");
15
+ let SolidCreateModelLayoutMcpToolResponseHandler = class SolidCreateModelLayoutMcpToolResponseHandler {
16
+ constructor(viewMetadataRepository) {
17
+ this.viewMetadataRepository = viewMetadataRepository;
18
+ }
19
+ async apply(aiInteraction) {
20
+ const aiResponse = JSON.parse(aiInteraction.message);
21
+ const { name, modelUserKey, moduleUserKey, layout } = aiResponse;
22
+ const viewMetadata = await this.viewMetadataRepository.findByNameAndModelNameAndModuleName(name, modelUserKey, moduleUserKey);
23
+ viewMetadata.layout = JSON.stringify(layout);
24
+ await this.viewMetadataRepository.save(viewMetadata);
25
+ return {
26
+ seedingRequired: false,
27
+ serverRebooting: false,
28
+ };
29
+ }
30
+ };
31
+ exports.SolidCreateModelLayoutMcpToolResponseHandler = SolidCreateModelLayoutMcpToolResponseHandler;
32
+ exports.SolidCreateModelLayoutMcpToolResponseHandler = SolidCreateModelLayoutMcpToolResponseHandler = __decorate([
33
+ (0, common_1.Injectable)(),
34
+ __metadata("design:paramtypes", [view_metadata_repository_1.ViewMetadataRepository])
35
+ ], SolidCreateModelLayoutMcpToolResponseHandler);
36
+ //# sourceMappingURL=solid-save-model-layout-mcp-tool-response-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-save-model-layout-mcp-tool-response-handler.service.js","sourceRoot":"","sources":["../../../src/services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAE5C,wFAAiF;AAI1E,IAAM,4CAA4C,GAAlD,MAAM,4CAA4C;IAErD,YACqB,sBAA8C;QAA9C,2BAAsB,GAAtB,sBAAsB,CAAwB;IAEnE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAA4B;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAGrD,MAAM,EAAC,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAC,GAAG,UAAU,CAAC;QAG/D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,mCAAmC,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QAE9H,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAGrD,OAAO;YACH,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;SACzB,CAAA;IACL,CAAC;CAEJ,CAAA;AA3BY,oGAA4C;uDAA5C,4CAA4C;IADxD,IAAA,mBAAU,GAAE;qCAIoC,iDAAsB;GAH1D,4CAA4C,CA2BxD","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { AiInteraction } from \"src/entities/ai-interaction.entity\";\nimport { ViewMetadataRepository } from \"src/repository/view-metadata.repository\";\nimport { IMcpToolResponseHandler } from \"../../interfaces\";\n\n@Injectable()\nexport class SolidCreateModelLayoutMcpToolResponseHandler implements IMcpToolResponseHandler {\n\n constructor(\n private readonly viewMetadataRepository: ViewMetadataRepository,\n ) {\n }\n\n async apply(aiInteraction: AiInteraction) {\n const aiResponse = JSON.parse(aiInteraction.message);\n\n // Get the data for resolving the view metadata\n const {name, modelUserKey, moduleUserKey, layout} = aiResponse;\n\n // Fetch the view metadata for the given model and module and the view name\n const viewMetadata = await this.viewMetadataRepository.findByNameAndModelNameAndModuleName(name, modelUserKey, moduleUserKey);\n\n viewMetadata.layout = JSON.stringify(layout);\n // Save the updated view metadata\n await this.viewMetadataRepository.save(viewMetadata);\n\n // TODO: decide on some shape to return hre...\n return {\n seedingRequired: false,\n serverRebooting: false,\n }\n }\n\n}"]}
@@ -13,6 +13,7 @@ import { ViewMetadata } from '../entities/view-metadata.entity';
13
13
  import { ActionMetadataService } from './action-metadata.service';
14
14
  import { SolidIntrospectService } from './solid-introspect.service';
15
15
  import { UserViewMetadataService } from './user-view-metadata.service';
16
+ import { ViewMetadataRepository } from 'src/repository/view-metadata.repository';
16
17
  export declare class ViewMetadataService extends CRUDService<ViewMetadata> {
17
18
  readonly modelMetadataService: ModelMetadataService;
18
19
  readonly moduleMetadataService: ModuleMetadataService;
@@ -24,11 +25,11 @@ export declare class ViewMetadataService extends CRUDService<ViewMetadata> {
24
25
  readonly introspectService: SolidIntrospectService;
25
26
  readonly userViewMetadataService: UserViewMetadataService;
26
27
  readonly entityManager: EntityManager;
27
- readonly repo: Repository<ViewMetadata>;
28
+ readonly repo: ViewMetadataRepository;
28
29
  private readonly fieldMetadataRepo;
29
30
  private readonly modelMetadataRepo;
30
31
  readonly moduleRef: ModuleRef;
31
- constructor(modelMetadataService: ModelMetadataService, moduleMetadataService: ModuleMetadataService, configService: ConfigService, fileService: FileService, discoveryService: DiscoveryService, crudHelperService: CrudHelperService, actionMetadataService: ActionMetadataService, introspectService: SolidIntrospectService, userViewMetadataService: UserViewMetadataService, entityManager: EntityManager, repo: Repository<ViewMetadata>, fieldMetadataRepo: Repository<FieldMetadata>, modelMetadataRepo: Repository<ModelMetadata>, moduleRef: ModuleRef);
32
+ constructor(modelMetadataService: ModelMetadataService, moduleMetadataService: ModuleMetadataService, configService: ConfigService, fileService: FileService, discoveryService: DiscoveryService, crudHelperService: CrudHelperService, actionMetadataService: ActionMetadataService, introspectService: SolidIntrospectService, userViewMetadataService: UserViewMetadataService, entityManager: EntityManager, repo: ViewMetadataRepository, fieldMetadataRepo: Repository<FieldMetadata>, modelMetadataRepo: Repository<ModelMetadata>, moduleRef: ModuleRef);
32
33
  private readonly logger;
33
34
  private getEntityRecordsInAllLocales;
34
35
  getLayout(query: any, activeUser: any): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"view-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/view-metadata.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,qBACa,mBAAoB,SAAQ,WAAW,CAAC,YAAY,CAAC;IAE9D,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAC7C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,iBAAiB,EAAE,sBAAsB;IAClD,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB;IAEzD,QAAQ,CAAC,aAAa,EAAE,aAAa;IAErC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC;IAEvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS;gBAjBpB,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,sBAAsB,EACzC,uBAAuB,EAAE,uBAAuB,EAEhD,aAAa,EAAE,aAAa,EAE5B,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,EAEtB,iBAAiB,EAAE,UAAU,CAAC,aAAa,CAAC,EAE5C,iBAAiB,EAAE,UAAU,CAAC,aAAa,CAAC,EACpD,SAAS,EAAE,SAAS;IAK/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;YAGjD,4BAA4B;IA8DpC,SAAS,CAAC,KAAK,KAAA,EAAE,UAAU,KAAA;;;;;;;;YAiOnB,kBAAkB;IAyB1B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,KAAK;IAU7C,MAAM,CAAC,kBAAkB,EAAE,qBAAqB;IAgBhD,kBAAkB,CAAC,kBAAkB,EAAE,qBAAqB;CAgBnE"}
1
+ {"version":3,"file":"view-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/view-metadata.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,qBACa,mBAAoB,SAAQ,WAAW,CAAC,YAAY,CAAC;IAE9D,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAC7C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,iBAAiB,EAAE,sBAAsB;IAClD,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB;IAEzD,QAAQ,CAAC,aAAa,EAAE,aAAa;IAErC,QAAQ,CAAC,IAAI,EAAE,sBAAsB;IAErC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS;gBAjBpB,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,sBAAsB,EACzC,uBAAuB,EAAE,uBAAuB,EAEhD,aAAa,EAAE,aAAa,EAE5B,IAAI,EAAE,sBAAsB,EAEpB,iBAAiB,EAAE,UAAU,CAAC,aAAa,CAAC,EAE5C,iBAAiB,EAAE,UAAU,CAAC,aAAa,CAAC,EACpD,SAAS,EAAE,SAAS;IAK/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;YAGjD,4BAA4B;IA8DpC,SAAS,CAAC,KAAK,KAAA,EAAE,UAAU,KAAA;;;;;;;;YAiOnB,kBAAkB;IAyB1B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,KAAK;IAU7C,MAAM,CAAC,kBAAkB,EAAE,qBAAqB;IAgBhD,kBAAkB,CAAC,kBAAkB,EAAE,qBAAqB;CAgBnE"}
@@ -29,10 +29,10 @@ const locale_entity_1 = require("../entities/locale.entity");
29
29
  const solid_registry_1 = require("../helpers/solid-registry");
30
30
  const field_metadata_entity_1 = require("../entities/field-metadata.entity");
31
31
  const model_metadata_entity_1 = require("../entities/model-metadata.entity");
32
- const view_metadata_entity_1 = require("../entities/view-metadata.entity");
33
32
  const action_metadata_service_1 = require("./action-metadata.service");
34
33
  const solid_introspect_service_1 = require("./solid-introspect.service");
35
34
  const user_view_metadata_service_1 = require("./user-view-metadata.service");
35
+ const view_metadata_repository_1 = require("../repository/view-metadata.repository");
36
36
  let ViewMetadataService = ViewMetadataService_1 = class ViewMetadataService extends crud_service_1.CRUDService {
37
37
  constructor(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, actionMetadataService, introspectService, userViewMetadataService, entityManager, repo, fieldMetadataRepo, modelMetadataRepo, moduleRef) {
38
38
  super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'viewMetadata', 'solid-core', moduleRef);
@@ -260,7 +260,6 @@ exports.ViewMetadataService = ViewMetadataService;
260
260
  exports.ViewMetadataService = ViewMetadataService = ViewMetadataService_1 = __decorate([
261
261
  (0, common_1.Injectable)(),
262
262
  __param(9, (0, typeorm_1.InjectEntityManager)()),
263
- __param(10, (0, typeorm_1.InjectRepository)(view_metadata_entity_1.ViewMetadata, 'default')),
264
263
  __param(11, (0, typeorm_1.InjectRepository)(field_metadata_entity_1.FieldMetadata)),
265
264
  __param(12, (0, typeorm_1.InjectRepository)(model_metadata_entity_1.ModelMetadata)),
266
265
  __metadata("design:paramtypes", [model_metadata_service_1.ModelMetadataService,
@@ -273,7 +272,7 @@ exports.ViewMetadataService = ViewMetadataService = ViewMetadataService_1 = __de
273
272
  solid_introspect_service_1.SolidIntrospectService,
274
273
  user_view_metadata_service_1.UserViewMetadataService,
275
274
  typeorm_2.EntityManager,
276
- typeorm_2.Repository,
275
+ view_metadata_repository_1.ViewMetadataRepository,
277
276
  typeorm_2.Repository,
278
277
  typeorm_2.Repository,
279
278
  core_1.ModuleRef])