@solidxai/core 0.1.10-beta.25 → 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.
Files changed (225) hide show
  1. package/dist/controllers/action-metadata.controller.d.ts +1 -20
  2. package/dist/controllers/action-metadata.controller.d.ts.map +1 -1
  3. package/dist/controllers/agent-event.controller.d.ts +1 -20
  4. package/dist/controllers/agent-event.controller.d.ts.map +1 -1
  5. package/dist/controllers/agent-session.controller.d.ts +1 -20
  6. package/dist/controllers/agent-session.controller.d.ts.map +1 -1
  7. package/dist/controllers/ai-interaction.controller.d.ts +1 -20
  8. package/dist/controllers/ai-interaction.controller.d.ts.map +1 -1
  9. package/dist/controllers/chatter-message-details.controller.d.ts +1 -20
  10. package/dist/controllers/chatter-message-details.controller.d.ts.map +1 -1
  11. package/dist/controllers/chatter-message.controller.d.ts +1 -20
  12. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  13. package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -20
  14. package/dist/controllers/dashboard-user-layout.controller.d.ts.map +1 -1
  15. package/dist/controllers/email-template.controller.d.ts +1 -20
  16. package/dist/controllers/email-template.controller.d.ts.map +1 -1
  17. package/dist/controllers/export-template.controller.d.ts +1 -20
  18. package/dist/controllers/export-template.controller.d.ts.map +1 -1
  19. package/dist/controllers/export-transaction.controller.d.ts +1 -20
  20. package/dist/controllers/export-transaction.controller.d.ts.map +1 -1
  21. package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -20
  22. package/dist/controllers/import-transaction-error-log.controller.d.ts.map +1 -1
  23. package/dist/controllers/import-transaction.controller.d.ts +1 -20
  24. package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
  25. package/dist/controllers/list-of-values.controller.d.ts +1 -20
  26. package/dist/controllers/list-of-values.controller.d.ts.map +1 -1
  27. package/dist/controllers/locale.controller.d.ts +1 -20
  28. package/dist/controllers/locale.controller.d.ts.map +1 -1
  29. package/dist/controllers/mcp-audit-log.controller.d.ts +1 -20
  30. package/dist/controllers/mcp-audit-log.controller.d.ts.map +1 -1
  31. package/dist/controllers/media.controller.d.ts +1 -20
  32. package/dist/controllers/media.controller.d.ts.map +1 -1
  33. package/dist/controllers/menu-item-metadata.controller.d.ts +1 -20
  34. package/dist/controllers/menu-item-metadata.controller.d.ts.map +1 -1
  35. package/dist/controllers/model-metadata.controller.d.ts +10 -30
  36. package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
  37. package/dist/controllers/model-metadata.controller.js +2 -2
  38. package/dist/controllers/model-sequence.controller.d.ts +1 -20
  39. package/dist/controllers/model-sequence.controller.d.ts.map +1 -1
  40. package/dist/controllers/module-metadata-explorer.controller.d.ts +171 -0
  41. package/dist/controllers/module-metadata-explorer.controller.d.ts.map +1 -0
  42. package/dist/controllers/module-metadata-explorer.controller.js +143 -0
  43. package/dist/controllers/module-metadata-explorer.controller.js.map +1 -0
  44. package/dist/controllers/module-metadata.controller.d.ts +5 -0
  45. package/dist/controllers/module-metadata.controller.d.ts.map +1 -1
  46. package/dist/controllers/module-metadata.controller.js +12 -0
  47. package/dist/controllers/module-metadata.controller.js.map +1 -1
  48. package/dist/controllers/module-package.controller.d.ts +622 -0
  49. package/dist/controllers/module-package.controller.d.ts.map +1 -0
  50. package/dist/controllers/module-package.controller.js +150 -0
  51. package/dist/controllers/module-package.controller.js.map +1 -0
  52. package/dist/controllers/mq-message-queue.controller.d.ts +1 -20
  53. package/dist/controllers/mq-message-queue.controller.d.ts.map +1 -1
  54. package/dist/controllers/mq-message.controller.d.ts +1 -20
  55. package/dist/controllers/mq-message.controller.d.ts.map +1 -1
  56. package/dist/controllers/permission-metadata.controller.d.ts +1 -20
  57. package/dist/controllers/permission-metadata.controller.d.ts.map +1 -1
  58. package/dist/controllers/role-metadata.controller.d.ts +1 -20
  59. package/dist/controllers/role-metadata.controller.d.ts.map +1 -1
  60. package/dist/controllers/saved-filters.controller.d.ts +1 -20
  61. package/dist/controllers/saved-filters.controller.d.ts.map +1 -1
  62. package/dist/controllers/scheduled-job.controller.d.ts +1 -20
  63. package/dist/controllers/scheduled-job.controller.d.ts.map +1 -1
  64. package/dist/controllers/security-rule.controller.d.ts +1 -20
  65. package/dist/controllers/security-rule.controller.d.ts.map +1 -1
  66. package/dist/controllers/sms-template.controller.d.ts +1 -20
  67. package/dist/controllers/sms-template.controller.d.ts.map +1 -1
  68. package/dist/controllers/user-activity-history.controller.d.ts +1 -20
  69. package/dist/controllers/user-activity-history.controller.d.ts.map +1 -1
  70. package/dist/controllers/user-view-metadata.controller.d.ts +1 -20
  71. package/dist/controllers/user-view-metadata.controller.d.ts.map +1 -1
  72. package/dist/controllers/user.controller.d.ts +1 -20
  73. package/dist/controllers/user.controller.d.ts.map +1 -1
  74. package/dist/controllers/view-metadata.controller.d.ts +1 -20
  75. package/dist/controllers/view-metadata.controller.d.ts.map +1 -1
  76. package/dist/dtos/confirm-module-package-import.dto.d.ts +4 -0
  77. package/dist/dtos/confirm-module-package-import.dto.d.ts.map +1 -0
  78. package/dist/dtos/confirm-module-package-import.dto.js +34 -0
  79. package/dist/dtos/confirm-module-package-import.dto.js.map +1 -0
  80. package/dist/dtos/metadata-explorer-references-query.dto.d.ts +10 -0
  81. package/dist/dtos/metadata-explorer-references-query.dto.d.ts.map +1 -0
  82. package/dist/dtos/metadata-explorer-references-query.dto.js +69 -0
  83. package/dist/dtos/metadata-explorer-references-query.dto.js.map +1 -0
  84. package/dist/dtos/metadata-explorer-search-query.dto.d.ts +8 -0
  85. package/dist/dtos/metadata-explorer-search-query.dto.d.ts.map +1 -0
  86. package/dist/dtos/metadata-explorer-search-query.dto.js +55 -0
  87. package/dist/dtos/metadata-explorer-search-query.dto.js.map +1 -0
  88. package/dist/dtos/metadata-explorer-write.dto.d.ts +4 -0
  89. package/dist/dtos/metadata-explorer-write.dto.d.ts.map +1 -0
  90. package/dist/dtos/metadata-explorer-write.dto.js +30 -0
  91. package/dist/dtos/metadata-explorer-write.dto.js.map +1 -0
  92. package/dist/dtos/run-module-package-build.dto.d.ts +5 -0
  93. package/dist/dtos/run-module-package-build.dto.d.ts.map +1 -0
  94. package/dist/dtos/run-module-package-build.dto.js +38 -0
  95. package/dist/dtos/run-module-package-build.dto.js.map +1 -0
  96. package/dist/dtos/run-module-package-seed.dto.d.ts +4 -0
  97. package/dist/dtos/run-module-package-seed.dto.d.ts.map +1 -0
  98. package/dist/dtos/run-module-package-seed.dto.js +34 -0
  99. package/dist/dtos/run-module-package-seed.dto.js.map +1 -0
  100. package/dist/helpers/command.service.js +1 -1
  101. package/dist/helpers/command.service.js.map +1 -1
  102. package/dist/helpers/module-metadata-helper.service.d.ts +2 -0
  103. package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
  104. package/dist/helpers/module-metadata-helper.service.js +14 -12
  105. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  106. package/dist/helpers/module.helper.d.ts.map +1 -1
  107. package/dist/helpers/module.helper.js +11 -6
  108. package/dist/helpers/module.helper.js.map +1 -1
  109. package/dist/helpers/typeorm-migration-helpers.d.ts +12 -0
  110. package/dist/helpers/typeorm-migration-helpers.d.ts.map +1 -0
  111. package/dist/helpers/typeorm-migration-helpers.js +119 -0
  112. package/dist/helpers/typeorm-migration-helpers.js.map +1 -0
  113. package/dist/index.d.ts +8 -0
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +8 -0
  116. package/dist/index.js.map +1 -1
  117. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -0
  118. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  119. package/dist/seeders/module-metadata-seeder.service.js +57 -38
  120. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  121. package/dist/seeders/module-test-data.service.js +1 -1
  122. package/dist/seeders/module-test-data.service.js.map +1 -1
  123. package/dist/seeders/seed-data/solid-core-metadata.json +2364 -1106
  124. package/dist/services/crud-helper.service.d.ts +18 -0
  125. package/dist/services/crud-helper.service.d.ts.map +1 -1
  126. package/dist/services/crud-helper.service.js +59 -0
  127. package/dist/services/crud-helper.service.js.map +1 -1
  128. package/dist/services/crud.service.d.ts +1 -21
  129. package/dist/services/crud.service.d.ts.map +1 -1
  130. package/dist/services/crud.service.js +9 -75
  131. package/dist/services/crud.service.js.map +1 -1
  132. package/dist/services/genai/ingest-metadata.service.js +2 -2
  133. package/dist/services/genai/ingest-metadata.service.js.map +1 -1
  134. package/dist/services/media.service.d.ts +1 -20
  135. package/dist/services/media.service.d.ts.map +1 -1
  136. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  137. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +31 -2
  138. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  139. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  140. package/dist/services/mediaStorageProviders/file-storage-provider.js +5 -1
  141. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  142. package/dist/services/model-metadata.service.d.ts +15 -30
  143. package/dist/services/model-metadata.service.d.ts.map +1 -1
  144. package/dist/services/model-metadata.service.js +249 -29
  145. package/dist/services/model-metadata.service.js.map +1 -1
  146. package/dist/services/module-metadata-explorer.service.d.ts +161 -0
  147. package/dist/services/module-metadata-explorer.service.d.ts.map +1 -0
  148. package/dist/services/module-metadata-explorer.service.js +485 -0
  149. package/dist/services/module-metadata-explorer.service.js.map +1 -0
  150. package/dist/services/module-metadata.service.d.ts +7 -0
  151. package/dist/services/module-metadata.service.d.ts.map +1 -1
  152. package/dist/services/module-metadata.service.js +121 -2
  153. package/dist/services/module-metadata.service.js.map +1 -1
  154. package/dist/services/module-package.service.d.ts +266 -0
  155. package/dist/services/module-package.service.d.ts.map +1 -0
  156. package/dist/services/module-package.service.js +980 -0
  157. package/dist/services/module-package.service.js.map +1 -0
  158. package/dist/solid-core.module.d.ts.map +1 -1
  159. package/dist/solid-core.module.js +10 -2
  160. package/dist/solid-core.module.js.map +1 -1
  161. package/dist-tests/api/authenticate.spec.js +119 -0
  162. package/dist-tests/api/authenticate.spec.js.map +1 -0
  163. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
  164. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
  165. package/dist-tests/api/ping.spec.js +21 -0
  166. package/dist-tests/api/ping.spec.js.map +1 -0
  167. package/dist-tests/helpers/auth.js +41 -0
  168. package/dist-tests/helpers/auth.js.map +1 -0
  169. package/dist-tests/helpers/env.js +11 -0
  170. package/dist-tests/helpers/env.js.map +1 -0
  171. package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +438 -0
  172. package/docs/dashboards/dashboard-curl-smoke-tests.txt +146 -0
  173. package/docs/dashboards/delete-legacy-dashboard-metadata.sql +172 -0
  174. package/docs/grouping-enhancements.md +89 -0
  175. package/docs/java-spring/README.md +3 -0
  176. package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
  177. package/docs/module-package-import-handoff.md +691 -0
  178. package/docs/seed-changes.md +65 -0
  179. package/docs/test-data-workflow.md +200 -0
  180. package/docs/type-declaration-import-issue.md +24 -0
  181. package/package.json +2 -1
  182. package/src/controllers/module-metadata-explorer.controller.ts +83 -0
  183. package/src/controllers/module-metadata.controller.ts +6 -0
  184. package/src/controllers/module-package.controller.ts +102 -0
  185. package/src/dtos/confirm-module-package-import.dto.ts +12 -0
  186. package/src/dtos/metadata-explorer-references-query.dto.ts +39 -0
  187. package/src/dtos/metadata-explorer-search-query.dto.ts +28 -0
  188. package/src/dtos/metadata-explorer-write.dto.ts +11 -0
  189. package/src/dtos/run-module-package-build.dto.ts +14 -0
  190. package/src/dtos/run-module-package-seed.dto.ts +12 -0
  191. package/src/helpers/command.service.ts +1 -1
  192. package/src/helpers/module-metadata-helper.service.ts +19 -21
  193. package/src/helpers/module.helper.ts +12 -9
  194. package/src/helpers/typeorm-migration-helpers.ts +163 -0
  195. package/src/index.ts +8 -0
  196. package/src/seeders/module-metadata-seeder.service.ts +63 -38
  197. package/src/seeders/module-test-data.service.ts +1 -1
  198. package/src/seeders/seed-data/solid-core-metadata.json +2365 -1107
  199. package/src/services/crud-helper.service.ts +72 -0
  200. package/src/services/crud.service.ts +11 -104
  201. package/src/services/dashboard-providers/README.md +1 -1
  202. package/src/services/genai/ingest-metadata.service.ts +3 -3
  203. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +37 -2
  204. package/src/services/mediaStorageProviders/file-storage-provider.ts +5 -1
  205. package/src/services/model-metadata.service.ts +302 -98
  206. package/src/services/module-metadata-explorer.service.ts +670 -0
  207. package/src/services/module-metadata.service.ts +136 -10
  208. package/src/services/module-package.service.ts +1171 -0
  209. package/src/solid-core.module.ts +10 -2
  210. package/.claude/settings.local.json +0 -15
  211. package/CLAUDE.md +0 -26
  212. package/dist/services/database/database-bootstrap.service.d.ts +0 -12
  213. package/dist/services/database/database-bootstrap.service.d.ts.map +0 -1
  214. package/dist/services/database/database-bootstrap.service.js +0 -115
  215. package/dist/services/database/database-bootstrap.service.js.map +0 -1
  216. package/sql/default/mariadb/proc_CleanupModelMetadata.sql +0 -153
  217. package/sql/default/mariadb/proc_CleanupModuleMetadata.sql +0 -56
  218. package/sql/default/mssql/proc_CleanupModuleMetadata.sql +0 -78
  219. package/sql/default/mysql/proc_CleanupModelMetadata.sql +0 -153
  220. package/sql/default/mysql/proc_CleanupModuleMetadata.sql +0 -56
  221. package/sql/default/postgres/proc_CleanupModelMetadata.sql +0 -148
  222. package/sql/default/postgres/proc_CleanupModuleMetadata.sql +0 -50
  223. package/sql/default/postgres/scratchpad.sql.txt +0 -12
  224. package/src/services/1.js +0 -6
  225. package/src/services/database/database-bootstrap.service.ts +0 -91
@@ -17,7 +17,9 @@ import { FieldMetadataController } from "./controllers/field-metadata.controller
17
17
  import { DashboardController } from "./controllers/dashboard.controller";
18
18
  import { MediaStorageProviderMetadataController } from "./controllers/media-storage-provider-metadata.controller";
19
19
  import { ModelMetadataController } from "./controllers/model-metadata.controller";
20
+ import { ModuleMetadataExplorerController } from "./controllers/module-metadata-explorer.controller";
20
21
  import { ModuleMetadataController } from "./controllers/module-metadata.controller";
22
+ import { ModulePackageController } from "./controllers/module-package.controller";
21
23
  import { TestController } from "./controllers/test.controller";
22
24
  import { FieldMetadata } from "./entities/field-metadata.entity";
23
25
  import { ListOfValues } from "./entities/list-of-values.entity";
@@ -41,7 +43,9 @@ import { ListOfValuesService } from "./services/list-of-values.service";
41
43
  import { MediaStorageProviderMetadataService } from "./services/media-storage-provider-metadata.service";
42
44
  import { MediaService } from "./services/media.service";
43
45
  import { ModelMetadataService } from "./services/model-metadata.service";
46
+ import { ModuleMetadataExplorerService } from "./services/module-metadata-explorer.service";
44
47
  import { ModuleMetadataService } from "./services/module-metadata.service";
48
+ import { ModulePackageService } from "./services/module-package.service";
45
49
  import { SolidIntrospectService } from "./services/solid-introspect.service";
46
50
  // import { ListOfComputedFieldProvider } from './providers/list-of-computed-field-provider.service';
47
51
  import { ServeStaticModule } from "@nestjs/serve-static";
@@ -368,7 +372,6 @@ import { McpCommand } from './commands/mcp.command';
368
372
  import { FixturesService } from './services/fixtures.service';
369
373
  import { FixturesSetupCommand } from './commands/fixtures/fixtures-setup.command';
370
374
  import { FixturesTearDownCommand } from './commands/fixtures/fixtures-tear-down.command';
371
- import { DatabaseBootstrapService } from './services/database/database-bootstrap.service';
372
375
  import { SequenceNumComputedFieldProvider } from './services/computed-fields/entity/sequence-num-computed-field-provider';
373
376
  import { ModelSequence } from './entities/model-sequence.entity';
374
377
  import { ModelSequenceService } from './services/model-sequence.service';
@@ -485,7 +488,9 @@ import { DashboardUserLayoutRepository } from './repositories/dashboard-user-lay
485
488
  MediaStorageProviderMetadataController,
486
489
  MenuItemMetadataController,
487
490
  ModelMetadataController,
491
+ ModuleMetadataExplorerController,
488
492
  ModuleMetadataController,
493
+ ModulePackageController,
489
494
  MqMessageController,
490
495
  MqMessageQueueController,
491
496
  GupshupWebhookController,
@@ -534,7 +539,9 @@ import { DashboardUserLayoutRepository } from './repositories/dashboard-user-lay
534
539
  useClass: HttpExceptionFilter,
535
540
  },
536
541
  ModuleMetadataService,
542
+ ModuleMetadataExplorerService,
537
543
  ModuleMetadataHelperService,
544
+ ModulePackageService,
538
545
  ModelMetadataService,
539
546
  ModelMetadataHelperService,
540
547
  FieldMetadataService,
@@ -800,7 +807,6 @@ import { DashboardUserLayoutRepository } from './repositories/dashboard-user-lay
800
807
  FixturesService,
801
808
  FixturesSetupCommand,
802
809
  FixturesTearDownCommand,
803
- DatabaseBootstrapService,
804
810
  SequenceNumComputedFieldProvider,
805
811
  ModelSequenceService,
806
812
  ModelSequenceRepository,
@@ -844,6 +850,8 @@ import { DashboardUserLayoutRepository } from './repositories/dashboard-user-lay
844
850
  ModelMetadataHelperService,
845
851
  ModelMetadataService,
846
852
  ModuleMetadataService,
853
+ ModuleMetadataExplorerService,
854
+ ModulePackageService,
847
855
  MqMessageQueueService,
848
856
  MqMessageService,
849
857
  Msg91OTPService,
@@ -1,15 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(node -e:*)",
5
- "WebFetch(domain:docs.solidxai.com)",
6
- "WebFetch(domain:github.com)",
7
- "Read(//Users/oswald/projects/Solid_Starters/solidctl/**)",
8
- "Read(//Users/oswald/projects/Solid_Starters/**)",
9
- "Bash(find /Users/oswald/projects/Solid_Starters/solid-core-module -type d -name migration* -o -name *database*)"
10
- ],
11
- "additionalDirectories": [
12
- "/Users/oswald/projects/Solid_Starters/solidctl"
13
- ]
14
- }
15
- }
package/CLAUDE.md DELETED
@@ -1,26 +0,0 @@
1
- # This is the SolidX API project.
2
- This is included as a dependency in consuming projects.
3
-
4
- # SolidX UI
5
- # The corresponding UI project is at the below path:
6
- /Users/oswald/projects/Solid_Starters/solid-core-ui
7
-
8
- # SolidX Docs
9
- # The documentation project is at the below path:
10
- /Users/oswald/projects/solidxai-docs
11
-
12
- # SolidX Agent
13
- # The agent project which has the skills for helping users configure, build and use SolidX is at the below path:
14
- /Users/oswald/projects/Solid_Starters/agent
15
-
16
- # SolidX Control Plane Commands
17
- # The control plane commands for managing SolidX instances are in the below path:
18
- /Users/oswald/projects/Solid_Starters/solidctl
19
-
20
- # Testing reference project
21
- # This is the reference library management project that is used for testing and development of SolidX features. It is located at the below path:
22
- /Users/oswald/projects/Solid_Starters/solid-library-management
23
-
24
- # Code Builder project
25
- # This is the project that contains the code builder which generates code based on user input and templates. It is located at the below path:
26
- /Users/oswald/projects/Solid_Starters/solid-code-builder
@@ -1,12 +0,0 @@
1
- import { OnModuleInit } from '@nestjs/common';
2
- import { DataSource } from 'typeorm';
3
- export declare class DatabaseBootstrapService implements OnModuleInit {
4
- private readonly dataSource;
5
- private readonly logger;
6
- constructor(dataSource: DataSource);
7
- onModuleInit(): Promise<void>;
8
- private resolveSqlDirectory;
9
- private applyAllSqlFiles;
10
- private applySqlFileSafely;
11
- }
12
- //# sourceMappingURL=database-bootstrap.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-bootstrap.service.d.ts","sourceRoot":"","sources":["../../../src/services/database/database-bootstrap.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKrC,qBACa,wBAAyB,YAAW,YAAY;IAKzD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAIjD,UAAU,EAAE,UAAU;IAGnC,YAAY;IAalB,OAAO,CAAC,mBAAmB;YASb,gBAAgB;YAkChB,kBAAkB;CAmBjC"}
@@ -1,115 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- 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;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- var __metadata = (this && this.__metadata) || function (k, v) {
42
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
- };
44
- var __param = (this && this.__param) || function (paramIndex, decorator) {
45
- return function (target, key) { decorator(target, key, paramIndex); }
46
- };
47
- var DatabaseBootstrapService_1;
48
- Object.defineProperty(exports, "__esModule", { value: true });
49
- exports.DatabaseBootstrapService = void 0;
50
- const common_1 = require("@nestjs/common");
51
- const typeorm_1 = require("typeorm");
52
- const promises_1 = require("fs/promises");
53
- const path = __importStar(require("path"));
54
- const typeorm_2 = require("@nestjs/typeorm");
55
- let DatabaseBootstrapService = DatabaseBootstrapService_1 = class DatabaseBootstrapService {
56
- constructor(dataSource) {
57
- this.dataSource = dataSource;
58
- this.logger = new common_1.Logger(DatabaseBootstrapService_1.name);
59
- }
60
- async onModuleInit() {
61
- if (!this.dataSource.isInitialized) {
62
- this.logger.warn(`[${this.dataSource.name}] DataSource not initialized. Skipping SQL bootstrap.`);
63
- return;
64
- }
65
- this.logger.debug(`[${this.dataSource.name}] Bootstrapping stored procedures...`);
66
- await this.applyAllSqlFiles();
67
- this.logger.debug(`[${this.dataSource.name}] SQL bootstrap completed`);
68
- }
69
- resolveSqlDirectory() {
70
- const datasourceName = this.dataSource.name || 'default';
71
- const dbType = this.dataSource.options.type;
72
- const sqlFilePath = path.resolve(__dirname, `../../../sql/${datasourceName}/${dbType}`);
73
- return sqlFilePath;
74
- }
75
- async applyAllSqlFiles() {
76
- const sqlDir = this.resolveSqlDirectory();
77
- this.logger.debug(`[${this.dataSource.name}] SQL directory: ${sqlDir}`);
78
- let files;
79
- try {
80
- files = await (0, promises_1.readdir)(sqlDir);
81
- }
82
- catch {
83
- this.logger.warn(`[${this.dataSource.name}] No SQL directory found. Skipping.`);
84
- return;
85
- }
86
- const sqlFiles = files
87
- .filter(file => file.endsWith('.sql'))
88
- .sort();
89
- if (!sqlFiles.length) {
90
- this.logger.warn(`[${this.dataSource.name}] No SQL files found`);
91
- return;
92
- }
93
- for (const file of sqlFiles) {
94
- await this.applySqlFileSafely(path.join(sqlDir, file), file);
95
- }
96
- }
97
- async applySqlFileSafely(filePath, fileName) {
98
- this.logger.debug(`[${this.dataSource.name}] Applying ${fileName}`);
99
- try {
100
- const sql = await (0, promises_1.readFile)(filePath, 'utf8');
101
- await this.dataSource.query(sql);
102
- this.logger.debug(`[${this.dataSource.name}] Applied ${fileName}`);
103
- }
104
- catch (error) {
105
- this.logger.error(`[${this.dataSource.name}] Failed ${fileName}`, error instanceof Error ? error.stack : String(error));
106
- }
107
- }
108
- };
109
- exports.DatabaseBootstrapService = DatabaseBootstrapService;
110
- exports.DatabaseBootstrapService = DatabaseBootstrapService = DatabaseBootstrapService_1 = __decorate([
111
- (0, common_1.Injectable)(),
112
- __param(0, (0, typeorm_2.InjectDataSource)()),
113
- __metadata("design:paramtypes", [typeorm_1.DataSource])
114
- ], DatabaseBootstrapService);
115
- //# sourceMappingURL=database-bootstrap.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-bootstrap.service.js","sourceRoot":"","sources":["../../../src/services/database/database-bootstrap.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger, OnModuleInit } from '@nestjs/common';\nimport { DataSource } from 'typeorm';\nimport { readdir, readFile } from 'fs/promises';\nimport * as path from 'path';\nimport { InjectDataSource } from '@nestjs/typeorm';\n\n@Injectable()\nexport class DatabaseBootstrapService implements OnModuleInit {\n private readonly logger = new Logger(DatabaseBootstrapService.name);\n\n constructor(\n @InjectDataSource()\n private readonly dataSource: DataSource,\n ) { }\n\n async onModuleInit() {\n if (!this.dataSource.isInitialized) {\n this.logger.warn(`[${this.dataSource.name}] DataSource not initialized. Skipping SQL bootstrap.`);\n return;\n }\n\n this.logger.debug(`[${this.dataSource.name}] Bootstrapping stored procedures...`);\n\n await this.applyAllSqlFiles();\n\n this.logger.debug(`[${this.dataSource.name}] SQL bootstrap completed`);\n }\n\n private resolveSqlDirectory(): string {\n const datasourceName = this.dataSource.name || 'default';\n const dbType = this.dataSource.options.type;\n\n const sqlFilePath = path.resolve(__dirname, `../../../sql/${datasourceName}/${dbType}`);\n\n return sqlFilePath\n }\n\n private async applyAllSqlFiles() {\n const sqlDir = this.resolveSqlDirectory();\n\n this.logger.debug(`[${this.dataSource.name}] SQL directory: ${sqlDir}`);\n\n let files: string[];\n try {\n files = await readdir(sqlDir);\n } catch {\n this.logger.warn(\n `[${this.dataSource.name}] No SQL directory found. Skipping.`,\n );\n return;\n }\n\n const sqlFiles = files\n .filter(file => file.endsWith('.sql'))\n .sort();\n\n if (!sqlFiles.length) {\n this.logger.warn(\n `[${this.dataSource.name}] No SQL files found`,\n );\n return;\n }\n\n for (const file of sqlFiles) {\n await this.applySqlFileSafely(\n path.join(sqlDir, file),\n file,\n );\n }\n }\n\n private async applySqlFileSafely(\n filePath: string,\n fileName: string,\n ) {\n this.logger.debug(`[${this.dataSource.name}] Applying ${fileName}`);\n\n try {\n const sql = await readFile(filePath, 'utf8');\n await this.dataSource.query(sql);\n\n this.logger.debug(`[${this.dataSource.name}] Applied ${fileName}`);\n } catch (error: any) {\n // DO NOT THROW — continue with next file\n this.logger.error(\n `[${this.dataSource.name}] Failed ${fileName}`,\n error instanceof Error ? error.stack : String(error),\n );\n }\n }\n}\n"]}
@@ -1,153 +0,0 @@
1
- DROP PROCEDURE IF EXISTS cleanup_model_metadata;
2
-
3
- DELIMITER $$
4
-
5
- CREATE PROCEDURE cleanup_model_metadata(
6
- IN p_model_singular_name VARCHAR(255),
7
- IN p_also_drop_model TINYINT(1) -- 0 = false, 1 = true (DEFAULT 0)
8
- )
9
- BEGIN
10
- DECLARE v_model_id INT;
11
- DECLARE v_controller_name VARCHAR(512);
12
-
13
- -- Default p_also_drop_model to 0 when NULL is passed
14
- IF p_also_drop_model IS NULL THEN
15
- SET p_also_drop_model = 0;
16
- END IF;
17
-
18
- --------------------------------------------------------------------
19
- -- Derive ControllerName from model singular name
20
- -- e.g. 'city' -> 'CityController'
21
- -- 'bankIfscMaster' -> 'BankIfscMasterController'
22
- --------------------------------------------------------------------
23
- SET v_controller_name = CONCAT(
24
- UPPER(LEFT(p_model_singular_name, 1)),
25
- SUBSTR(p_model_singular_name, 2),
26
- 'Controller'
27
- );
28
-
29
- SELECT m.id
30
- INTO v_model_id
31
- FROM ss_model_metadata AS m
32
- WHERE m.singular_name = p_model_singular_name
33
- LIMIT 1;
34
-
35
- IF v_model_id IS NULL THEN
36
- SIGNAL SQLSTATE '45000'
37
- SET MESSAGE_TEXT = CONCAT('CleanupModelMetadata: Model with singular_name "', p_model_singular_name, '" not found.');
38
- END IF;
39
-
40
- --------------------------------------------------------------------
41
- -- Temp tables for IDs (session-scoped, dropped at end of session)
42
- --------------------------------------------------------------------
43
- DROP TEMPORARY TABLE IF EXISTS tmp_view_ids;
44
- DROP TEMPORARY TABLE IF EXISTS tmp_action_ids;
45
- DROP TEMPORARY TABLE IF EXISTS tmp_permission_ids;
46
-
47
- CREATE TEMPORARY TABLE tmp_view_ids (id INT PRIMARY KEY);
48
- CREATE TEMPORARY TABLE tmp_action_ids (id INT PRIMARY KEY);
49
- CREATE TEMPORARY TABLE tmp_permission_ids (id INT PRIMARY KEY);
50
-
51
- INSERT INTO tmp_view_ids (id)
52
- SELECT v.id
53
- FROM ss_view_metadata AS v
54
- WHERE v.model_id = v_model_id;
55
-
56
- INSERT INTO tmp_action_ids (id)
57
- SELECT a.id
58
- FROM ss_action_metadata AS a
59
- WHERE a.model_id = v_model_id;
60
-
61
- --------------------------------------------------------------------
62
- -- Collect permissions for this controller:
63
- -- e.g. CityController.create, CityController.update, etc.
64
- --------------------------------------------------------------------
65
- INSERT INTO tmp_permission_ids (id)
66
- SELECT p.id
67
- FROM ss_permission_metadata AS p
68
- WHERE p.name LIKE CONCAT(v_controller_name, '.%');
69
-
70
- --------------------------------------------------------------------
71
- -- 1) Delete user-view metadata
72
- --------------------------------------------------------------------
73
- DELETE FROM ss_user_view_metadata
74
- WHERE view_metadata_id IN (SELECT id FROM tmp_view_ids);
75
-
76
- --------------------------------------------------------------------
77
- -- 2) Delete menu items linked via action_id
78
- --------------------------------------------------------------------
79
- DELETE FROM ss_menu_item_metadata
80
- WHERE action_id IN (SELECT id FROM tmp_action_ids);
81
-
82
- --------------------------------------------------------------------
83
- -- 3) Delete actions
84
- --------------------------------------------------------------------
85
- DELETE FROM ss_action_metadata
86
- WHERE id IN (SELECT id FROM tmp_action_ids);
87
-
88
- --------------------------------------------------------------------
89
- -- 4) Delete views
90
- --------------------------------------------------------------------
91
- DELETE FROM ss_view_metadata
92
- WHERE id IN (SELECT id FROM tmp_view_ids);
93
-
94
- --------------------------------------------------------------------
95
- -- 5) Delete import transaction error logs for this model's imports
96
- --------------------------------------------------------------------
97
- DELETE FROM ss_import_transaction_error_log
98
- WHERE import_transaction_id IN (
99
- SELECT it.id
100
- FROM ss_import_transaction AS it
101
- WHERE it.model_metadata_id = v_model_id
102
- );
103
-
104
- --------------------------------------------------------------------
105
- -- 6) Delete import transactions linked to the model
106
- --------------------------------------------------------------------
107
- DELETE FROM ss_import_transaction
108
- WHERE model_metadata_id = v_model_id;
109
-
110
- --------------------------------------------------------------------
111
- -- 7) Delete permissions for this controller
112
- -- a) Delete from role-permission join table
113
- -- b) Delete from permission metadata
114
- --------------------------------------------------------------------
115
- DELETE FROM ss_role_metadata_permissions_ss_permission_metadata
116
- WHERE ss_permission_metadata_id IN (SELECT id FROM tmp_permission_ids);
117
-
118
- DELETE FROM ss_permission_metadata
119
- WHERE id IN (SELECT id FROM tmp_permission_ids);
120
-
121
- --------------------------------------------------------------------
122
- -- 8) Optionally delete the model row itself (+ fields)
123
- --------------------------------------------------------------------
124
- IF p_also_drop_model = 1 THEN
125
-
126
- -- 8a) Null user_key_field_id pointing to fields of this model
127
- UPDATE ss_model_metadata AS mm
128
- SET user_key_field_id = NULL
129
- WHERE user_key_field_id IN (
130
- SELECT f.id
131
- FROM ss_field_metadata AS f
132
- WHERE f.model_id = v_model_id
133
- );
134
-
135
- -- 8b) Null parent_model_id pointing to this model
136
- UPDATE ss_model_metadata
137
- SET parent_model_id = NULL
138
- WHERE parent_model_id = v_model_id;
139
-
140
- -- 8c) Delete model (fields deleted via ON DELETE CASCADE)
141
- DELETE FROM ss_model_metadata
142
- WHERE id = v_model_id;
143
-
144
- END IF;
145
-
146
- -- Cleanup temp tables
147
- DROP TEMPORARY TABLE IF EXISTS tmp_view_ids;
148
- DROP TEMPORARY TABLE IF EXISTS tmp_action_ids;
149
- DROP TEMPORARY TABLE IF EXISTS tmp_permission_ids;
150
-
151
- END$$
152
-
153
- DELIMITER ;
@@ -1,56 +0,0 @@
1
- DROP PROCEDURE IF EXISTS cleanup_module_metadata;
2
-
3
- DELIMITER $$
4
-
5
- CREATE PROCEDURE cleanup_module_metadata(
6
- IN p_module_name VARCHAR(255),
7
- IN p_also_drop_module TINYINT(1) -- 0 = false, 1 = true (DEFAULT 0)
8
- )
9
- BEGIN
10
- DECLARE v_module_id INT;
11
-
12
- -- Default p_also_drop_module to 0 when NULL is passed
13
- IF p_also_drop_module IS NULL THEN
14
- SET p_also_drop_module = 0;
15
- END IF;
16
-
17
- SELECT m.id
18
- INTO v_module_id
19
- FROM ss_module_metadata AS m
20
- WHERE m.name = p_module_name
21
- LIMIT 1;
22
-
23
- IF v_module_id IS NULL THEN
24
- SIGNAL SQLSTATE '45000'
25
- SET MESSAGE_TEXT = CONCAT('CleanupModuleMetadata: Module "', p_module_name, '" not found.');
26
- END IF;
27
-
28
- ----------------------------------------------------------------
29
- -- 1) Delete menus for this module (children first, then roots)
30
- ----------------------------------------------------------------
31
- DELETE FROM ss_menu_item_metadata
32
- WHERE module_id = v_module_id
33
- AND parent_menu_item_id IS NOT NULL;
34
-
35
- DELETE FROM ss_menu_item_metadata
36
- WHERE module_id = v_module_id
37
- AND parent_menu_item_id IS NULL;
38
-
39
- ----------------------------------------------------------------
40
- -- 2) Delete actions for this module
41
- ----------------------------------------------------------------
42
- DELETE FROM ss_action_metadata
43
- WHERE module_id = v_module_id;
44
-
45
- ----------------------------------------------------------------
46
- -- 3) Optionally delete the module row itself
47
- -- (assumes ss_model_metadata.module_id has ON DELETE SET NULL)
48
- ----------------------------------------------------------------
49
- IF p_also_drop_module = 1 THEN
50
- DELETE FROM ss_module_metadata
51
- WHERE id = v_module_id;
52
- END IF;
53
-
54
- END$$
55
-
56
- DELIMITER ;
@@ -1,78 +0,0 @@
1
- CREATE PROCEDURE [dbo].[CleanupModuleMetadata]
2
- @ModuleName NVARCHAR(255),
3
- @AlsoDropModule BIT = 0 -- 0 = only menus + actions, 1 = also delete module row
4
- AS
5
- BEGIN
6
- SET NOCOUNT ON;
7
-
8
- DECLARE @ModuleId INT;
9
-
10
- SELECT @ModuleId = m.id
11
- FROM dbo.ss_module_metadata AS m
12
- WHERE m.name = @ModuleName;
13
-
14
- IF @ModuleId IS NULL
15
- BEGIN
16
- RAISERROR ('CleanupModuleMetadata: Module "%s" not found.', 16, 1, @ModuleName);
17
- RETURN;
18
- END
19
-
20
- BEGIN TRY
21
- BEGIN TRAN;
22
-
23
- ----------------------------------------------------------------
24
- -- 1) Delete menu items for this module
25
- -- (children first because parent FK has NO cascade)
26
- ----------------------------------------------------------------
27
- -- Children
28
- DELETE mi
29
- FROM dbo.ss_menu_item_metadata AS mi
30
- WHERE mi.module_id = @ModuleId
31
- AND mi.parent_menu_item_id IS NOT NULL;
32
-
33
- -- Roots
34
- DELETE mi
35
- FROM dbo.ss_menu_item_metadata AS mi
36
- WHERE mi.module_id = @ModuleId
37
- AND mi.parent_menu_item_id IS NULL;
38
-
39
- -- Note: Role join table
40
- -- dbo.ss_menu_item_metadata_roles_ss_role_metadata
41
- -- is cleaned automatically via ON DELETE CASCADE from menu items.
42
-
43
- ----------------------------------------------------------------
44
- -- 2) Delete actions for this module
45
- ----------------------------------------------------------------
46
- DELETE a
47
- FROM dbo.ss_action_metadata AS a
48
- WHERE a.module_id = @ModuleId;
49
-
50
- ----------------------------------------------------------------
51
- -- 3) Optionally delete the module row itself
52
- -- Models keep their rows; module_id is set to NULL on delete
53
- -- because of ON DELETE SET NULL in ss_model_metadata.
54
- ----------------------------------------------------------------
55
- IF @AlsoDropModule = 1
56
- BEGIN
57
- DELETE m
58
- FROM dbo.ss_module_metadata AS m
59
- WHERE m.id = @ModuleId;
60
- END
61
-
62
- COMMIT TRAN;
63
- END TRY
64
- BEGIN CATCH
65
- IF @@TRANCOUNT > 0
66
- ROLLBACK TRAN;
67
-
68
- DECLARE @ErrorMessage NVARCHAR(4000),
69
- @ErrorSeverity INT,
70
- @ErrorState INT;
71
-
72
- SELECT @ErrorMessage = ERROR_MESSAGE(),
73
- @ErrorSeverity = ERROR_SEVERITY(),
74
- @ErrorState = ERROR_STATE();
75
-
76
- RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState);
77
- END CATCH
78
- END