generator-jhipster-orchestrator 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +391 -0
- package/cli/cli.cjs +36 -0
- package/generators/angular/__snapshots__/generator.spec.js.snap +969 -0
- package/generators/angular/command.js +8 -0
- package/generators/angular/generator.js +168 -0
- package/generators/angular/generator.spec.js +26 -0
- package/generators/angular/index.js +2 -0
- package/generators/angular/templates/template-file-angular.ejs +0 -0
- package/generators/cassandra-angular/__snapshots__/generator.spec.js.snap +162 -0
- package/generators/cassandra-angular/cassandra-angular-utils.js +244 -0
- package/generators/cassandra-angular/command.js +8 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +76 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.routes.ts.ejs +110 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.test-samples.ts.ejs +50 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.html.ejs +59 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.spec.ts.ejs +64 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.ts.ejs +100 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.html.ejs +218 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.spec.ts.ejs +61 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.ts.ejs +89 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.html.ejs +740 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.spec.ts.ejs +135 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.ts.ejs +1140 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +102 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.ts.ejs +60 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +260 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.ts.ejs +550 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.spec.ts.ejs +101 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +448 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.html.ejs +561 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.spec.ts.ejs +128 -0
- package/generators/cassandra-angular/entity-templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.ts.ejs +492 -0
- package/generators/cassandra-angular/generator.js +608 -0
- package/generators/cassandra-angular/generator.spec.js +26 -0
- package/generators/cassandra-angular/index.js +2 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/date-time/date-time.component.css.ejs +45 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/date-time/date-time.component.html.ejs +96 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/date-time/date-time.component.spec.ts.ejs +24 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/date-time/date-time.component.ts.ejs +243 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-boolean-component/map-boolean-component.component.css.ejs +40 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-boolean-component/map-boolean-component.component.html.ejs +64 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-boolean-component/map-boolean-component.component.spec.ts.ejs +24 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-boolean-component/map-boolean-component.component.ts.ejs +152 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-boolean-edit-dialog-component/map-boolean-edit-dialog-component.component.css.ejs +42 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-boolean-edit-dialog-component/map-boolean-edit-dialog-component.component.html.ejs +24 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-boolean-edit-dialog-component/map-boolean-edit-dialog-component.component.spec.ts.ejs +29 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-boolean-edit-dialog-component/map-boolean-edit-dialog-component.component.ts.ejs +40 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-dayjs-component/map-dayjs-component.component.css.ejs +32 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-dayjs-component/map-dayjs-component.component.html.ejs +57 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-dayjs-component/map-dayjs-component.component.spec.ts.ejs +24 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-dayjs-component/map-dayjs-component.component.ts.ejs +102 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-dayjs-edit-dialog-component/map-dayjs-edit-dialog-component.component.css.ejs +29 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-dayjs-edit-dialog-component/map-dayjs-edit-dialog-component.component.html.ejs +25 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-dayjs-edit-dialog-component/map-dayjs-edit-dialog-component.component.spec.ts.ejs +31 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-dayjs-edit-dialog-component/map-dayjs-edit-dialog-component.component.ts.ejs +55 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-number-component/map-number-component.component.css.ejs +32 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-number-component/map-number-component.component.html.ejs +58 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-number-component/map-number-component.component.spec.ts.ejs +24 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-number-component/map-number-component.component.ts.ejs +80 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-number-edit-dialog-component/map-number-edit-dialog-component.component.css.ejs +29 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-number-edit-dialog-component/map-number-edit-dialog-component.component.html.ejs +23 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-number-edit-dialog-component/map-number-edit-dialog-component.component.spec.ts.ejs +29 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-number-edit-dialog-component/map-number-edit-dialog-component.component.ts.ejs +39 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-string-component/map-string-component.component.css.ejs +32 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-string-component/map-string-component.component.html.ejs +55 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-string-component/map-string-component.component.spec.ts.ejs +24 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-string-component/map-string-component.component.ts.ejs +76 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-string-edit-dialog-component/map-string-edit-dialog-component.component.css.ejs +29 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-string-edit-dialog-component/map-string-edit-dialog-component.component.html.ejs +24 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-string-edit-dialog-component/map-string-edit-dialog-component.component.spec.ts.ejs +29 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/map-string-edit-dialog-component/map-string-edit-dialog-component.component.ts.ejs +34 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/set-string-component/set-string-component.component.css.ejs +29 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/set-string-component/set-string-component.component.html.ejs +42 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/set-string-component/set-string-component.component.spec.ts.ejs +24 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/set-string-component/set-string-component.component.ts.ejs +91 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/set-string-edit-dialog-component/set-string-edit-dialog-component.component.css.ejs +29 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/set-string-edit-dialog-component/set-string-edit-dialog-component.component.html.ejs +18 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/set-string-edit-dialog-component/set-string-edit-dialog-component.component.spec.ts.ejs +29 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/components/set-string-edit-dialog-component/set-string-edit-dialog-component.component.ts.ejs +32 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/shared/date/convert-from-date-long-to-dayjs.pipe.ts.ejs +25 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/shared/date/convert-from-dayjs-to-date-long.pipe.ts.ejs +34 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/shared/date/dayjs-date-adapter.ts.ejs +120 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/shared/date/format-utc-date.pipe.ts.ejs +41 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/shared/date/saathratri-local-dayjs-and-utc-unix-utils.ts.ejs +140 -0
- package/generators/cassandra-angular/templates/src/main/webapp/app/shared/material.module.ts.ejs +47 -0
- package/generators/cassandra-angular/templates/template-file-cassandra-angular.ejs +0 -0
- package/generators/cassandra-client/__snapshots__/generator.spec.js.snap +12 -0
- package/generators/cassandra-client/cassandra-client-utils.js +12 -0
- package/generators/cassandra-client/command.js +8 -0
- package/generators/cassandra-client/generator.js +169 -0
- package/generators/cassandra-client/generator.spec.js +26 -0
- package/generators/cassandra-client/generators/i18n/command.js +8 -0
- package/generators/cassandra-client/generators/i18n/generator.js +73 -0
- package/generators/cassandra-client/generators/i18n/index.js +2 -0
- package/generators/cassandra-client/generators/i18n/templates/entity/i18n/entity_en.json.ejs +105 -0
- package/generators/cassandra-client/generators/i18n/templates/src/main/webapp/i18n/en/global.json.ejs +178 -0
- package/generators/cassandra-client/generators/i18n/templates/template-file-cassandra-client-i18n.ejs +0 -0
- package/generators/cassandra-client/index.js +2 -0
- package/generators/cassandra-client/templates/template-file-cassandra-client.ejs +0 -0
- package/generators/cassandra-docker/__snapshots__/generator.spec.js.snap +12 -0
- package/generators/cassandra-docker/command.js +10 -0
- package/generators/cassandra-docker/generator.js +188 -0
- package/generators/cassandra-docker/generator.spec.js +26 -0
- package/generators/cassandra-docker/index.js +20 -0
- package/generators/cassandra-docker/templates/docker/cassandra.yml.ejs +61 -0
- package/generators/cassandra-docker/templates/template-file-cassandra-docker.ejs +0 -0
- package/generators/cassandra-java/command.js +8 -0
- package/generators/cassandra-java/generator.js +147 -0
- package/generators/cassandra-java/generators/domain/cassandra-java-domain-utils.js +40 -0
- package/generators/cassandra-java/generators/domain/command.js +8 -0
- package/generators/cassandra-java/generators/domain/generator.js +79 -0
- package/generators/cassandra-java/generators/domain/index.js +2 -0
- package/generators/cassandra-java/generators/domain/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +369 -0
- package/generators/cassandra-java/generators/domain/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_Id.java.ejs +109 -0
- package/generators/cassandra-java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Asserts.java.ejs +120 -0
- package/generators/cassandra-java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +82 -0
- package/generators/cassandra-java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_TestSamples.java.ejs +97 -0
- package/generators/cassandra-java/generators/domain/templates/template-file-cassandra-java-domain.ejs +0 -0
- package/generators/cassandra-java/index.js +2 -0
- package/generators/cassandra-java/templates/template-file-cassandra-java.ejs +0 -0
- package/generators/cassandra-spring-boot/__snapshots__/generator.spec.js.snap +12 -0
- package/generators/cassandra-spring-boot/cassandra-spring-boot-utils.js +799 -0
- package/generators/cassandra-spring-boot/command.js +8 -0
- package/generators/cassandra-spring-boot/generator.js +436 -0
- package/generators/cassandra-spring-boot/generator.spec.js +26 -0
- package/generators/cassandra-spring-boot/generators/data-cassandra/__snapshots__/generator.spec.js.snap +12 -0
- package/generators/cassandra-spring-boot/generators/data-cassandra/cassandra-spring-data-cassandra-utils.js +699 -0
- package/generators/cassandra-spring-boot/generators/data-cassandra/command.js +8 -0
- package/generators/cassandra-spring-boot/generators/data-cassandra/generator.js +190 -0
- package/generators/cassandra-spring-boot/generators/data-cassandra/generator.spec.js +26 -0
- package/generators/cassandra-spring-boot/generators/data-cassandra/index.js +2 -0
- package/generators/cassandra-spring-boot/generators/data-cassandra/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_cassandra.ejs +92 -0
- package/generators/cassandra-spring-boot/generators/data-cassandra/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +71 -0
- package/generators/cassandra-spring-boot/generators/data-cassandra/templates/src/main/resources/config/cql/changelog/added_entity.cql.ejs +90 -0
- package/generators/cassandra-spring-boot/generators/data-cassandra/templates/template-file-cassandra-spring-data-cassandra.ejs +0 -0
- package/generators/cassandra-spring-boot/index.js +2 -0
- package/generators/cassandra-spring-boot/templates/_global_partials_entity_/it_patch_update.partial.java.ejs +70 -0
- package/generators/cassandra-spring-boot/templates/_global_partials_entity_/save_template.ejs +62 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/delete_template.ejs +32 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_stream_template.ejs +33 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_template.ejs +113 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_filtered_template.ejs +24 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_template.ejs +31 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/inject_template.ejs +72 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/patch_template.ejs +97 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_stream_template.ejs +0 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_template.ejs +0 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_Service.java.ejs +216 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_.java.ejs +309 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_Id.java.ejs +131 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/service/impl/_entityClass_ServiceImpl.java.ejs +420 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/service/mapper/_entityClass_Mapper.java.ejs +113 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +888 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/config/EmbeddingConfiguration.java.ejs +47 -0
- package/generators/cassandra-spring-boot/templates/src/main/java/_package_/service/embedding/EmbeddingService.java.ejs +55 -0
- package/generators/cassandra-spring-boot/templates/src/main/resources/config/application-dev.yml.ejs +354 -0
- package/generators/cassandra-spring-boot/templates/src/test/java/_package_/_entityPackage_/service/dto/_dtoClass_Test.java.ejs +96 -0
- package/generators/cassandra-spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +2147 -0
- package/generators/cassandra-spring-boot/templates/src/test/java/_package_/service/embedding/EmbeddingServiceTest.java.ejs +81 -0
- package/generators/cassandra-spring-boot/templates/template-file-cassandra-spring-boot.ejs +0 -0
- package/generators/cleanup.sh +25 -0
- package/generators/client/__snapshots__/generator.spec.js.snap +969 -0
- package/generators/client/command.js +8 -0
- package/generators/client/generator.js +157 -0
- package/generators/client/generator.spec.js +26 -0
- package/generators/client/index.js +2 -0
- package/generators/client/templates/template-file-client.ejs +0 -0
- package/generators/cypress/__snapshots__/generator.spec.js.snap +72 -0
- package/generators/cypress/command.js +8 -0
- package/generators/cypress/generator.js +1050 -0
- package/generators/cypress/generator.spec.js +26 -0
- package/generators/cypress/index.js +2 -0
- package/generators/docker/__snapshots__/generator.spec.js.snap +48 -0
- package/generators/docker/command.js +10 -0
- package/generators/docker/generator.js +160 -0
- package/generators/docker/generator.spec.js +26 -0
- package/generators/docker/index.js +20 -0
- package/generators/docker/templates/template-file-docker.ejs +0 -0
- package/generators/docker-orchestrator/command.js +10 -0
- package/generators/docker-orchestrator/generator.js +202 -0
- package/generators/docker-orchestrator/generator.spec.js +66 -0
- package/generators/docker-orchestrator/index.js +2 -0
- package/generators/docker-orchestrator/templates/docker/realm-config/jhipster-realm.json.ejs +2787 -0
- package/generators/docker-orchestrator/templates/template-file-docker-orchestrator.ejs +0 -0
- package/generators/heroku-orchestrator/command.js +10 -0
- package/generators/heroku-orchestrator/generator.js +211 -0
- package/generators/heroku-orchestrator/generator.spec.js +99 -0
- package/generators/heroku-orchestrator/heroku-saathratri-utils.js +25 -0
- package/generators/heroku-orchestrator/index.js +20 -0
- package/generators/heroku-orchestrator/templates/.slugignore.ejs +11 -0
- package/generators/heroku-orchestrator/templates/Procfile.ejs +19 -0
- package/generators/heroku-orchestrator/templates/src/main/resources/config/application-heroku.yml.ejs +73 -0
- package/generators/heroku-orchestrator/templates/src/main/resources/config/bootstrap-heroku.yml.ejs +25 -0
- package/generators/heroku-orchestrator/templates/system.properties.ejs +1 -0
- package/generators/heroku-orchestrator/templates/template-file-heroku-orchestrator.ejs +0 -0
- package/generators/java/__snapshots__/generator.spec.js.snap +15 -0
- package/generators/java/command.js +9 -0
- package/generators/java/generator.js +168 -0
- package/generators/java/generator.spec.js +26 -0
- package/generators/java/generators/domain/__snapshots__/generator.spec.js.snap +15 -0
- package/generators/java/generators/domain/command.js +9 -0
- package/generators/java/generators/domain/generator.js +178 -0
- package/generators/java/generators/domain/generator.spec.js +26 -0
- package/generators/java/generators/domain/index.js +2 -0
- package/generators/java/generators/domain/templates/template-file-java.ejs +0 -0
- package/generators/java/index.js +2 -0
- package/generators/liquibase/command.js +10 -0
- package/generators/liquibase/generator.js +150 -0
- package/generators/liquibase/index.js +20 -0
- package/generators/liquibase/templates/template-file-liquibase.ejs +0 -0
- package/generators/liquibase-orchestrator/command.js +10 -0
- package/generators/liquibase-orchestrator/generator.js +414 -0
- package/generators/liquibase-orchestrator/generator.spec.js +146 -0
- package/generators/liquibase-orchestrator/index.js +2 -0
- package/generators/liquibase-orchestrator/templates/src/main/resources/config/liquibase/changelog/added_custom_query_indexes.xml.ejs +17 -0
- package/generators/liquibase-orchestrator/templates/src/main/resources/config/liquibase/changelog/added_vector_column_and_index.xml.ejs +44 -0
- package/generators/liquibase-orchestrator/templates/src/main/resources/config/liquibase/master.xml.ejs +91 -0
- package/generators/liquibase-orchestrator/templates/template-file-liquibase-orchestrator.ejs +0 -0
- package/generators/maven/command.js +10 -0
- package/generators/maven/generator.js +150 -0
- package/generators/maven/index.js +2 -0
- package/generators/maven/templates/template-file-maven.ejs +0 -0
- package/generators/maven-orchestrator/command.js +10 -0
- package/generators/maven-orchestrator/generator.js +151 -0
- package/generators/maven-orchestrator/generator.spec.js +38 -0
- package/generators/maven-orchestrator/index.js +2 -0
- package/generators/maven-orchestrator/templates/template-file-maven-orchestrator.ejs +0 -0
- package/generators/server/__snapshots__/generator.spec.js.snap +540 -0
- package/generators/server/command.js +8 -0
- package/generators/server/generator.js +158 -0
- package/generators/server/generator.spec.js +82 -0
- package/generators/server/index.js +2 -0
- package/generators/server/templates/template-file-server.ejs +0 -0
- package/generators/spring-boot/__snapshots__/generator.spec.js.snap +504 -0
- package/generators/spring-boot/command.js +8 -0
- package/generators/spring-boot/generator.js +141 -0
- package/generators/spring-boot/generator.spec.js +26 -0
- package/generators/spring-boot/index.js +2 -0
- package/generators/spring-boot/templates/template-file-spring-boot.ejs +0 -0
- package/generators/spring-boot-orchestrator/command.js +10 -0
- package/generators/spring-boot-orchestrator/generator.js +594 -0
- package/generators/spring-boot-orchestrator/generator.spec.js +123 -0
- package/generators/spring-boot-orchestrator/index.js +2 -0
- package/generators/spring-boot-orchestrator/templates/maven/.mvn/wrapper/maven-wrapper.properties +2 -0
- package/generators/spring-boot-orchestrator/templates/maven/README.md +2 -0
- package/generators/spring-boot-orchestrator/templates/maven/mvnw +295 -0
- package/generators/spring-boot-orchestrator/templates/maven/mvnw.cmd +189 -0
- package/generators/spring-boot-orchestrator/templates/maven/pom.xml.ejs +58 -0
- package/generators/spring-boot-orchestrator/templates/src/main/java/_package_/Application.java.ejs +260 -0
- package/generators/spring-boot-orchestrator/templates/src/main/java/_package_/config/ApplicationProperties.java.ejs +146 -0
- package/generators/spring-boot-orchestrator/templates/src/main/resources/config/application-prod.yml.ejs +434 -0
- package/generators/spring-boot-orchestrator/templates/src/main/resources/config/application.yml.ejs +467 -0
- package/generators/spring-boot-orchestrator/templates/src/main/resources/config/bootstrap-prod.yml.ejs +55 -0
- package/generators/spring-boot-orchestrator/templates/src/main/resources/config/bootstrap.yml.ejs +73 -0
- package/generators/spring-boot-orchestrator/templates/template-file-spring-boot-orchestrator.ejs +0 -0
- package/generators/sql-angular/__snapshots__/generator.spec.js.snap +15 -0
- package/generators/sql-angular/command.js +8 -0
- package/generators/sql-angular/entity-files.js +46 -0
- package/generators/sql-angular/generator.js +1863 -0
- package/generators/sql-angular/generator.spec.js +26 -0
- package/generators/sql-angular/index.js +2 -0
- package/generators/sql-angular/sql-angular-utils.js +191 -0
- package/generators/sql-angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +58 -0
- package/generators/sql-angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.html.ejs +187 -0
- package/generators/sql-angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.html.ejs +364 -0
- package/generators/sql-angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.html.ejs +324 -0
- package/generators/sql-angular/templates/template-file-sql-angular.ejs +0 -0
- package/generators/sql-docker/__snapshots__/generator.spec.js.snap +12 -0
- package/generators/sql-docker/command.js +10 -0
- package/generators/sql-docker/generator.js +189 -0
- package/generators/sql-docker/generator.spec.js +26 -0
- package/generators/sql-docker/index.js +2 -0
- package/generators/sql-docker/templates/docker/postgresql/Dockerfile.ejs +6 -0
- package/generators/sql-docker/templates/docker/postgresql-init-scripts/init-vector-extension.sql.ejs +2 -0
- package/generators/sql-docker/templates/docker/postgresql.yml.ejs +47 -0
- package/generators/sql-docker/templates/template-file-sql-docker.ejs +0 -0
- package/generators/sql-spring-boot/__snapshots__/generator.spec.js.snap +18 -0
- package/generators/sql-spring-boot/command.js +10 -0
- package/generators/sql-spring-boot/generator.js +1279 -0
- package/generators/sql-spring-boot/generator.spec.js +26 -0
- package/generators/sql-spring-boot/generators/data-relational/__snapshots__/generator.spec.js.snap +12 -0
- package/generators/sql-spring-boot/generators/data-relational/command.js +10 -0
- package/generators/sql-spring-boot/generators/data-relational/generator.js +173 -0
- package/generators/sql-spring-boot/generators/data-relational/generator.spec.js +26 -0
- package/generators/sql-spring-boot/generators/data-relational/index.js +2 -0
- package/generators/sql-spring-boot/generators/data-relational/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jakarta_persistence.ejs +151 -0
- package/generators/sql-spring-boot/generators/data-relational/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.pgvector_type.ejs +19 -0
- package/generators/sql-spring-boot/generators/data-relational/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +319 -0
- package/generators/sql-spring-boot/generators/data-relational/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_RepositoryWithBagRelationships.java.ejs +37 -0
- package/generators/sql-spring-boot/generators/data-relational/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_RepositoryWithBagRelationshipsImpl.java.ejs +102 -0
- package/generators/sql-spring-boot/generators/data-relational/templates/template-file-sql-spring-data-relational.ejs +0 -0
- package/generators/sql-spring-boot/index.js +2 -0
- package/generators/sql-spring-boot/lazy-relationship-utils.js +217 -0
- package/generators/sql-spring-boot/saathratri-constants.js +22 -0
- package/generators/sql-spring-boot/sql-spring-boot-utils.js +118 -0
- package/generators/sql-spring-boot/templates/_global_partials_entity_/it_patch_update.partial.java.ejs +59 -0
- package/generators/sql-spring-boot/templates/_global_partials_entity_/save_template_imperative.ejs +37 -0
- package/generators/sql-spring-boot/templates/_global_partials_entity_/save_template_reactive.ejs +31 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/delete_template.ejs +32 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_stream_template.ejs +75 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_template.ejs +129 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_filtered_template.ejs +57 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_template.ejs +83 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/inject_template.ejs +75 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/patch_template.ejs +65 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_stream_template.ejs +50 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_template.ejs +57 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.pgvector_type.ejs +19 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_QueryService.java.ejs +159 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_Service.java.ejs +398 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_.java.ejs +195 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/service/impl/_entityClass_ServiceImpl.java.ejs +701 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/service/mapper/_entityClass_Mapper.java.ejs +318 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +887 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/config/EmbeddingConfiguration.java.ejs +61 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/domain/converter/PgVectorType.java.ejs +102 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/service/embedding/EmbeddingMigrationService.java.ejs +160 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/service/embedding/EmbeddingService.java.ejs +182 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/service/embedding/EmbeddingStartupMigrationRunner.java.ejs +153 -0
- package/generators/sql-spring-boot/templates/src/main/java/_package_/web/rest/EmbeddingMigrationResource.java.ejs +112 -0
- package/generators/sql-spring-boot/templates/src/main/resources/config/application-dev.yml.ejs +372 -0
- package/generators/sql-spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +2117 -0
- package/generators/sql-spring-boot/templates/src/test/java/_package_/service/embedding/EmbeddingServiceTest.java.ejs +165 -0
- package/generators/sql-spring-boot/templates/template-file-sql-spring-boot.ejs +0 -0
- package/package.json +65 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Amar Premsaran Patel
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
# generator-jhipster-orchestrator
|
|
2
|
+
|
|
3
|
+
> The master JHipster blueprint for the Saathratri microservices platform. It orchestrates two specialized blueprints โ [`generator-jhipster-ai-postgresql`](https://github.com/amarpatel-xx/generator-jhipster-ai-postgresql) (SQL / pgvector) and [`generator-jhipster-cassandra`](https://github.com/amarpatel-xx/generator-jhipster-cassandra) (Cassandra) โ into a single pipeline that generates a full multi-database microservices stack with DTO modularization and Heroku deployment. Compatible with JHipster v9.0.0.
|
|
4
|
+
|
|
5
|
+
## Introduction
|
|
6
|
+
|
|
7
|
+
This is a [JHipster](https://www.jhipster.tech/) blueprint, designed to generate an entire **microservices platform** that mixes **PostgreSQL (with pgvector)** and **Apache Cassandra** services side by side in the same monorepo.
|
|
8
|
+
|
|
9
|
+
Rather than reimplementing entity generation, the `generator-jhipster-orchestrator` blueprint **composes** the two upstream Saathratri blueprints and adds the cross-cutting concerns a real microservices deployment needs: a separate Maven DTO JAR per service, Heroku deployment artifacts, Angular Material theming for Cassandra date/time widgets, dual-gateway CORS deduplication, and a single JDL โ multi-app generation flow.
|
|
10
|
+
|
|
11
|
+
It is a **Side-by-Side (SBS) blueprint** (`sbsBlueprint: true`): it complements JHipster's core generators rather than replacing them, and it routes each generation phase to the correct database-specific implementation based on each microservice's `databaseType`.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## ๐ Key Features
|
|
16
|
+
|
|
17
|
+
- **Multi-Database Microservices in One Monorepo**
|
|
18
|
+
- PostgreSQL (with `pgvector` for AI search) and Apache Cassandra services generated from a single JDL.
|
|
19
|
+
- Each service routes to the correct backend, frontend, Docker, and Liquibase generators automatically based on its `databaseType`.
|
|
20
|
+
|
|
21
|
+
- **DTO Modularization**
|
|
22
|
+
- Automatically emits a **separate Maven DTO JAR project** (`${baseName}dto/`) for every microservice.
|
|
23
|
+
- Lets the orchestrator service (and any other consumer) depend on a service's DTOs without pulling in the whole microservice.
|
|
24
|
+
- Handles Cassandra composite-key `DTOId` classes alongside the regular DTOs.
|
|
25
|
+
|
|
26
|
+
- **Composed Upstream Capabilities**
|
|
27
|
+
- **AI semantic vector search** and **human-readable foreign keys** flow in from `generator-jhipster-ai-postgresql`.
|
|
28
|
+
- **Cassandra composite primary keys**, `SET`/`MAP` collection widgets, and UTC date handling flow in from `generator-jhipster-cassandra`.
|
|
29
|
+
|
|
30
|
+
- **Deployment & Platform Concerns**
|
|
31
|
+
- **Heroku**: generates `Procfile`, `system.properties`, `bootstrap-heroku.yml`, and a `heroku` Maven profile.
|
|
32
|
+
- **Angular Material**: injects `@angular/material` / `@angular/cdk` and the Material theme for Cassandra date/time widgets.
|
|
33
|
+
- **CORS deduplication**: resolves dual-gateway CORS header conflicts via a `DedupeResponseHeader` patch.
|
|
34
|
+
- **Astra DB ready**: production templates wire a `CqlSession` bean, AWS S3 SDK, and env-var credentials for Cassandra services.
|
|
35
|
+
|
|
36
|
+
- **Patching Philosophy**
|
|
37
|
+
- Overrides only the templates that need Saathratri-specific changes, letting JHipster's base templates handle everything else.
|
|
38
|
+
- Every customization is marked with a `SAATHRATRI CHANGE:` comment so it is easy to audit and rebase onto new JHipster versions.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## ๐๏ธ Architecture Overview
|
|
43
|
+
|
|
44
|
+
The orchestrator composes multiple specialized blueprints into a single generation pipeline. It does **not** replace JHipster's base generators โ it enhances them.
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
jhipster --blueprints orchestrator jdl saathratri-apps-orchestrator-mf.jdl
|
|
48
|
+
|
|
|
49
|
+
v
|
|
50
|
+
generator-jhipster-orchestrator (this blueprint)
|
|
51
|
+
|
|
|
52
|
+
+-- Own sub-generators
|
|
53
|
+
| server, client, docker, spring-boot, java, liquibase, maven, angular,
|
|
54
|
+
| spring-boot-orchestrator, liquibase-orchestrator, maven-orchestrator,
|
|
55
|
+
| docker-orchestrator, heroku-orchestrator
|
|
56
|
+
|
|
|
57
|
+
+-- SQL sub-generators (copied from generator-jhipster-ai-postgresql)
|
|
58
|
+
| +-- sql-spring-boot (backend: Resource, Service, ServiceImpl, DTO, Mapper)
|
|
59
|
+
| +-- sql-angular (frontend: entity CRUD pages + AI search)
|
|
60
|
+
| +-- sql-docker (Docker Compose: PostgreSQL with pgvector)
|
|
61
|
+
|
|
|
62
|
+
+-- Cassandra sub-generators (copied from generator-jhipster-cassandra)
|
|
63
|
+
+-- cassandra-spring-boot (backend: Resource, Service, ServiceImpl, DTO/DTOId, Mapper)
|
|
64
|
+
+-- cassandra-angular (frontend: entity CRUD pages + UTC date handling)
|
|
65
|
+
+-- cassandra-docker (Docker Compose: Cassandra)
|
|
66
|
+
+-- cassandra-java (domain entities with composite keys)
|
|
67
|
+
+-- cassandra-client (i18n support)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The `sql-*` and `cassandra-*` sub-generators are **not stored in this repo** โ they are copied in fresh from the two base blueprints on every regeneration (see [Code Generation Workflow](#-code-generation-workflow)). **Fix template bugs in the base repos, never in this repo's copies.**
|
|
71
|
+
|
|
72
|
+
### Composition Flow
|
|
73
|
+
|
|
74
|
+
JHipster invokes the orchestrator's sub-generators via the SBS pattern; each routes to the correct database-specific generator during the `COMPOSING` phase:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
JHipster base:server โ orchestrator:server โ [SQL] sql-spring-boot / [Cassandra] cassandra-spring-boot (+ heroku-orchestrator)
|
|
78
|
+
JHipster base:client โ orchestrator:client โ [SQL] sql-angular / [Cassandra] cassandra-angular
|
|
79
|
+
JHipster base:spring-boot โ orchestrator:spring-boot โ [SQL] sql-spring-boot / [Cassandra] cassandra-spring-boot
|
|
80
|
+
JHipster base:java:domain โ orchestrator:java:domain โ [Cassandra] cassandra-java:domain
|
|
81
|
+
JHipster base:docker โ orchestrator:docker โ [SQL] sql-docker / [Cassandra] cassandra-docker
|
|
82
|
+
JHipster base:liquibase โ orchestrator:liquibase โ [SQL] liquibase-orchestrator
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## ๐ Quick Start
|
|
88
|
+
|
|
89
|
+
### Prerequisites
|
|
90
|
+
|
|
91
|
+
As this is a [JHipster](https://www.jhipster.tech/) blueprint, JHipster and its related tools must already be installed โ see [Installing JHipster](https://www.jhipster.tech/installation/).
|
|
92
|
+
|
|
93
|
+
- **Node.js** ^18.13.0 or >= 20.6.1
|
|
94
|
+
- **JHipster** 9.0.0 โ `npm install -g generator-jhipster@9.0.0`
|
|
95
|
+
- **generator-jhipster-ai-postgresql** โ `npm install -g generator-jhipster-ai-postgresql`
|
|
96
|
+
- **generator-jhipster-cassandra** โ `npm install -g generator-jhipster-cassandra`
|
|
97
|
+
- **Java 21+** and **Docker Desktop** (to build/run the generated apps)
|
|
98
|
+
|
|
99
|
+
> The two upstream blueprints are required because the orchestrator copies their `sql-*` and `cassandra-*` sub-generators in during its prepare phase.
|
|
100
|
+
|
|
101
|
+
### Installation
|
|
102
|
+
|
|
103
|
+
For development (recommended โ allows live editing):
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
cd generator-jhipster-orchestrator
|
|
107
|
+
npm install
|
|
108
|
+
npm link
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Or install the published package:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
npm install -g generator-jhipster-orchestrator
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Usage
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
jhipster --blueprints orchestrator jdl saathratri-apps-orchestrator-mf.jdl
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Look for orchestrator-specific options with:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
jhipster app --blueprints orchestrator --help
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### AI Semantic Search (Optional)
|
|
130
|
+
|
|
131
|
+
Services with vector fields (`@customAnnotation("VECTOR")`) generate AI-powered semantic search. To enable it, provide an OpenAI API key before running the service:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
export OPENAI_API_KEY=sk-your-key-here
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Or add it to the microservice's `application-dev.yml`:
|
|
138
|
+
|
|
139
|
+
```yaml
|
|
140
|
+
openai:
|
|
141
|
+
api-key: sk-your-key-here
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Without the key, the app runs normally โ embedding generation and AI search are simply disabled.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## ๐งฉ Code Generation Workflow
|
|
149
|
+
|
|
150
|
+
The full Saathratri codebase is generated by running, from the `saathratri-main/` (production) or `jhipster-orchestrator/` (example) workspace:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
sh saathratri-generate-code-dev-main.sh
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
This master script runs five phases in order:
|
|
157
|
+
|
|
158
|
+
1. **Cleanup** (`saathratri-cleanup-dev-main.sh`) โ deletes previously generated microservices and DTO projects, `node_modules/`, `docker-compose/`, etc.
|
|
159
|
+
2. **Prepare** (`saathratri-generator-code-prepare.sh` / `.bat`) โ removes the old `sql-*` / `cassandra-*` folders from the installed orchestrator and copies fresh ones from the two base blueprints, then rewrites their compose namespace (`jhipster-cassandra:` / `jhipster-ai-postgresql:` โ `jhipster-orchestrator:`). The rewrite is **scoped to each subtree** (cassandra refs only under `cassandra-*/`, SQL refs only under `sql-*/`) so orchestrator-native generators are never silently corrupted.
|
|
160
|
+
3. **Generate** (`saathratri-generate-code-dev-main-mf.sh`) โ runs `jhipster --blueprints orchestrator jdl ... --skip-jhipster-dependencies`.
|
|
161
|
+
4. **Sync** (`copy-files.sh`) โ copies Liquibase seed data, config overrides, and entity TypeScript models from `saathratri-data/custom-files/` into the generated services.
|
|
162
|
+
5. **Post-generation** โ copies each microservice's Angular entity models into the gateway client (`orchestratorgateway/` in the example, `jaiashirwaadclient/` in `saathratri-main/`).
|
|
163
|
+
|
|
164
|
+
### Bundled Example Apps
|
|
165
|
+
|
|
166
|
+
The example JDL (`saathratri-apps-orchestrator-mf.jdl`) merges the two upstream example JDLs โ SQL entities prefixed `Psql`, Cassandra entities prefixed `Cass` โ and generates:
|
|
167
|
+
|
|
168
|
+
| App | Database | Notes |
|
|
169
|
+
|---|---|---|
|
|
170
|
+
| `orchestratorgateway` | PostgreSQL | Spring Cloud Gateway with microfrontends to all four services |
|
|
171
|
+
| `psqlblog` | SQL / pgvector | `PsqlBlog`, `PsqlPost`, `PsqlTag` (vector fields), `PsqlTajUser` |
|
|
172
|
+
| `psqlstore` | SQL | `PsqlProduct`, `PsqlReport` |
|
|
173
|
+
| `cassandrablog` | Cassandra | Composite-key `CassBlog`/`CassPost`, `CassTag` (vectors), `Cass*` Set/Map entities |
|
|
174
|
+
| `cassandrastore` | Cassandra | `CassProduct`, `CassReport` |
|
|
175
|
+
|
|
176
|
+
Plus `docker-compose/` and a `${service}dto/` DTO Maven project per service.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## ๐ฆ Sub-Generator Reference
|
|
181
|
+
|
|
182
|
+
### Orchestrator-owned sub-generators
|
|
183
|
+
|
|
184
|
+
| Sub-generator | Purpose |
|
|
185
|
+
|---|---|
|
|
186
|
+
| `server` | Creates the DTO Maven project skeleton (`pom.xml`, `mvnw`, `README.md`) in `../../${appname}dto/` |
|
|
187
|
+
| `client` | Routes to `sql-angular` or `cassandra-angular` by `databaseType` |
|
|
188
|
+
| `spring-boot` | Routes to `sql-spring-boot` or `cassandra-spring-boot`; overrides core config templates |
|
|
189
|
+
| `java` / `java:domain` | SBS passthrough; routes Cassandra entities to `cassandra-java:domain` |
|
|
190
|
+
| `docker` | Routes to `sql-docker` or `cassandra-docker`; patches the Keycloak realm |
|
|
191
|
+
| `liquibase` | Composes `liquibase-orchestrator` |
|
|
192
|
+
| `maven` | Overrides `jhipster:maven` (no-op in JHipster 8 โ see note below) |
|
|
193
|
+
| `angular` | Injects Angular Material theme + `@angular/material` / `@angular/cdk` deps |
|
|
194
|
+
| `spring-boot-orchestrator` | SQL/Cassandra server customizations: CORS/logback/pom patches, DTO module scaffolding, `.mvn/jvm.config` (8 GB heap) |
|
|
195
|
+
| `liquibase-orchestrator` | pgvector column changelogs and `@customQueryAnnotation` / `eager` / `@entityGraph*` index changelogs, needled into `master.xml` |
|
|
196
|
+
| `maven-orchestrator` | No-op (see note) |
|
|
197
|
+
| `docker-orchestrator` | Docker Compose customizations |
|
|
198
|
+
| `heroku-orchestrator` | Heroku `Procfile`, `system.properties`, `bootstrap-heroku.yml` + `heroku` Maven profile |
|
|
199
|
+
|
|
200
|
+
### SQL sub-generators (from `generator-jhipster-ai-postgresql`)
|
|
201
|
+
|
|
202
|
+
| Sub-generator | Purpose |
|
|
203
|
+
|---|---|
|
|
204
|
+
| `sql-spring-boot` | Entity Resource, Service, ServiceImpl, DTO (copied to DTO project), Mapper, integration tests |
|
|
205
|
+
| `sql-angular` | Entity pages with human-readable FK display and AI search |
|
|
206
|
+
| `sql-docker` | PostgreSQL Docker Compose with pgvector and dynamic port management |
|
|
207
|
+
|
|
208
|
+
### Cassandra sub-generators (from `generator-jhipster-cassandra`)
|
|
209
|
+
|
|
210
|
+
| Sub-generator | Purpose |
|
|
211
|
+
|---|---|
|
|
212
|
+
| `cassandra-spring-boot` | Entity Resource, Service, ServiceImpl, DTO/DTOId (copied to DTO project), Mapper |
|
|
213
|
+
| `cassandra-angular` | Entity pages with UTC date handling and Material date pickers |
|
|
214
|
+
| `cassandra-docker` | Cassandra Docker Compose with dynamic port management |
|
|
215
|
+
| `cassandra-java` | Domain entities with composite primary keys and type codecs |
|
|
216
|
+
| `cassandra-client` | i18n translations for Cassandra entities |
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## ๐๏ธ DTO Modularization
|
|
221
|
+
|
|
222
|
+
The orchestrator emits a **separate Maven DTO JAR project** for every microservice so other services can depend on the DTOs without pulling in the whole service.
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
jhipster-orchestrator/ <-- example workspace (same layout in saathratri-main/)
|
|
226
|
+
psqlblog/ <-- Generated SQL microservice
|
|
227
|
+
psqlblogdto/ <-- Generated DTO JAR
|
|
228
|
+
pom.xml
|
|
229
|
+
src/main/java/com/saathratri/developer/psql/blog/service/dto/
|
|
230
|
+
PsqlBlogDTO.java
|
|
231
|
+
PsqlPostDTO.java
|
|
232
|
+
...
|
|
233
|
+
cassandrablogdto/ <-- Generated DTO JAR (Cassandra)
|
|
234
|
+
src/main/java/com/saathratri/developer/cassandra/blog/service/dto/
|
|
235
|
+
CassBlogDTO.java
|
|
236
|
+
CassBlogDTOId.java <-- Composite key
|
|
237
|
+
...
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
**How it works:** `server/generator.js` (WRITING) scaffolds the DTO project skeleton; the `sql-spring-boot` / `cassandra-spring-boot` generators (WRITING_ENTITIES) write each entity's DTO into both the service and the DTO project; for Cassandra composite keys a matching `DTOId` class is copied too.
|
|
241
|
+
|
|
242
|
+
Consume a DTO module with coordinates `<packageName>.dto : <baseName>dto : 2.0.0`:
|
|
243
|
+
|
|
244
|
+
```xml
|
|
245
|
+
<dependency>
|
|
246
|
+
<groupId>com.saathratri.developer.psql.blog.dto</groupId>
|
|
247
|
+
<artifactId>psqlblogdto</artifactId>
|
|
248
|
+
<version>2.0.0</version>
|
|
249
|
+
</dependency>
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## ๐งช JDL โ Custom Annotations
|
|
255
|
+
|
|
256
|
+
The orchestrator and its composed blueprints process several custom annotation types in the JDL.
|
|
257
|
+
|
|
258
|
+
### `DISPLAY_IN_GUI_RELATIONSHIP_LINK` โ Human-Readable Foreign Keys
|
|
259
|
+
|
|
260
|
+
Controls which fields are shown in relationship dropdowns and links in the Angular UI. The second annotation value is the **separator** used when concatenating multiple display fields (`""`, `" "`, `", "`, `"-"`).
|
|
261
|
+
|
|
262
|
+
```jdl
|
|
263
|
+
entity PsqlBlog {
|
|
264
|
+
@customAnnotation("DISPLAY_IN_GUI_RELATIONSHIP_LINK") @customAnnotation("-") name String required minlength(3)
|
|
265
|
+
@customAnnotation("DISPLAY_IN_GUI_RELATIONSHIP_LINK") @customAnnotation("-") handle String required minlength(2)
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### `VECTOR` โ AI Semantic Search (pgvector)
|
|
270
|
+
|
|
271
|
+
Marks fields for pgvector embedding storage and AI-powered search. The field name must follow the `<sourceField>Embedding` pattern; dimension `1536` matches OpenAI's `text-embedding-3-small`.
|
|
272
|
+
|
|
273
|
+
```jdl
|
|
274
|
+
entity PsqlTag {
|
|
275
|
+
@customAnnotation("VECTOR") @customAnnotation("1536") nameEmbedding Blob
|
|
276
|
+
@customAnnotation("VECTOR") @customAnnotation("1536") descriptionEmbedding Blob
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Generates a `vector(1536)` column, an HNSW index, embedding generation on save, and a cosine-similarity search API.
|
|
281
|
+
|
|
282
|
+
### Cassandra Primary Keys & Column Types
|
|
283
|
+
|
|
284
|
+
```jdl
|
|
285
|
+
@Id @customAnnotation("PrimaryKeyType.PARTITIONED") @customAnnotation("CassandraType.Name.UUID") organizationId UUID
|
|
286
|
+
@customAnnotation("PrimaryKeyType.CLUSTERED") @customAnnotation("CassandraType.Name.TEXT") accountNumber String
|
|
287
|
+
@customAnnotation("CassandraType.Name.MAP") @customAnnotation("CassandraType.Name.TEXT") detailsText String
|
|
288
|
+
@customAnnotation("CassandraType.Name.BIGINT") @customAnnotation("UTC_DATETIME") createdDate Long
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
For the full Cassandra composite-key / `SET` / `MAP` / vector JDL catalogue, see the [`generator-jhipster-cassandra` README](https://github.com/amarpatel-xx/generator-jhipster-cassandra#-jdl-examples).
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## ๐ ๏ธ Template Override Strategy
|
|
296
|
+
|
|
297
|
+
The orchestrator overrides only the templates that need Saathratri-specific changes:
|
|
298
|
+
|
|
299
|
+
| Area | Template(s) | Saathratri Change |
|
|
300
|
+
|---|---|---|
|
|
301
|
+
| Backend config | `application.yml`, `application-dev.yml`, `application-prod.yml`, `bootstrap*.yml` | CORS `DedupeResponseHeader`, Keycloak/Auth0 OIDC, Astra DB + S3, Eureka/JWT secrets |
|
|
302
|
+
| Backend code | `Application.java`, `ApplicationProperties.java`, `pom.xml` | `CqlSession` bean, AWS S3 + Astra DB properties, S3 SDK dependency |
|
|
303
|
+
| Frontend | `package.json`, `global.scss` | `@angular/material` / `@angular/cdk`, Material theme CSS import |
|
|
304
|
+
| Docker | `jhipster-realm.json` | `saathratri-client-id` service account, `spa_app` client, `organizationIds` mapper, `read:users` scope |
|
|
305
|
+
|
|
306
|
+
Every change is marked: `<%# --- SAATHRATRI CHANGE: ... --- %>` (EJS), `# --- SAATHRATRI CHANGE: ... ---` (YAML), `// --- SAATHRATRI CHANGE: ... ---` (Java).
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## ๐ฌ Testing
|
|
311
|
+
|
|
312
|
+
There are two layers of tests: the **blueprint's own unit tests**, and the **generated application's tests** (backend + frontend, produced by the two composed blueprints and covered by their guides).
|
|
313
|
+
|
|
314
|
+
### Generator unit tests
|
|
315
|
+
|
|
316
|
+
The Vitest suite (`generators/*/generator.spec.js`) mixes snapshot specs inherited from the composed `sql-*` / `cassandra-*` sub-generators with **behavioral content specs** for the orchestrator's own sub-generators (Heroku profile, CORS/logback patches, DTO module, pgvector changelogs, Keycloak service-account client, db dispatch).
|
|
317
|
+
|
|
318
|
+
Run **in this repo** (Node 22+):
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
npx vitest run
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Expected: **Test Files 21 passed (21) / Tests 52 passed (52)**.
|
|
325
|
+
|
|
326
|
+
> **Use `npx vitest run`, not `npm test`.** `npm test` runs a `pretest` = `prettier-check && eslint .` gate first, which is pre-existing red across the repo, so `npm test` aborts before Vitest. After an intended change to which files a sub-generator writes, refresh snapshots with `npm run update-snapshot` and inspect `git diff generators/*/__snapshots__/`.
|
|
327
|
+
|
|
328
|
+
> **`maven-orchestrator` is a no-op.** It overrides `jhipster:maven`, but JHipster 8 runs `java-simple-application:maven`, so it never executes. The 8 GB `.mvn/jvm.config` heap override it was meant to write now lives in `spring-boot-orchestrator` POST_WRITING. See [`TESTING.md`](TESTING.md) ยง2.4.
|
|
329
|
+
|
|
330
|
+
The suite stays green across regenerations because the prepare phase rewrites the namespace prefix of the copied specs (`jhipster-ai-postgresql:` / `jhipster-cassandra:` โ `jhipster-orchestrator:`). When adding a spec: custom-named sub-generators use `jhipster-orchestrator:<name>`; core-name overrides (`server`, `client`, `angular`, `docker`, `java`, `spring-boot`) use `jhipster:<name>`.
|
|
331
|
+
|
|
332
|
+
### Debugging test failures
|
|
333
|
+
|
|
334
|
+
The golden rule is **fix the templates, never the generated app** (it is overwritten on every regeneration) โ and for this *assembled* blueprint, fix `sql-*` / `cassandra-*` template bugs in the **base repos**, not in this repo's copies. The full runbook is in **[`TESTING.md`](TESTING.md)**. For the generated-app backend/frontend bug catalogues, see the companion [`generator-jhipster-cassandra/TESTING.md`](https://github.com/amarpatel-xx/generator-jhipster-cassandra/blob/main/TESTING.md) and [`generator-jhipster-ai-postgresql/TESTING.md`](https://github.com/amarpatel-xx/generator-jhipster-ai-postgresql/blob/main/TESTING.md).
|
|
335
|
+
|
|
336
|
+
### E2E (Cypress) & custom widgets
|
|
337
|
+
|
|
338
|
+
The orchestrator does **not** own a Cypress sub-generator โ the `cypress` test passes flow in automatically from each base blueprint on every regen. Fix Cypress codegen bugs in the base repos. The SET / MAP / date-time `data-cy` widget hooks are owned by `cassandra-angular`; see the cassandra blueprint's [README ยงE2E Testing with Cypress](https://github.com/amarpatel-xx/generator-jhipster-cassandra#e2e-testing-with-cypress).
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## ๐ Identity Providers
|
|
343
|
+
|
|
344
|
+
The generated platform uses **Keycloak** by default (the orchestrator patches `jhipster-realm.json` with the `saathratri-client-id` service account, `spa_app` client, and an `organizationIds` protocol mapper). Production templates switch to **Auth0** OIDC. You can also switch to Okta with:
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
okta apps create jhipster
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## ๐งฏ Troubleshooting
|
|
353
|
+
|
|
354
|
+
| Symptom | Fix |
|
|
355
|
+
|---|---|
|
|
356
|
+
| `"Could not retrieve version of blueprint"` | Cosmetic warning โ sub-generators don't export version info. Generation proceeds normally. |
|
|
357
|
+
| `"Generator xyz was not found"` | Run the prepare script after `npm link` โ it copies the `sql-*` / `cassandra-*` generators in. |
|
|
358
|
+
| `this.parseJHipsterArguments is not a function` | Removed in JHipster 9 โ delete the call. |
|
|
359
|
+
| `method: 'copy'` template errors | Removed in JHipster 9 โ use `binary: true` (binary) or `noEjs: true` (text). |
|
|
360
|
+
| `jhipsterConfigWithDefaults.packageFolder` is undefined | Use `(data) => data.packageFolder` in `renameTo` callbacks. |
|
|
361
|
+
| `this.dateFormatForLiquibase is not a function` | Removed in JHipster 9 โ format the timestamp inline. |
|
|
362
|
+
| XML comment errors in `pom.xml` | Use EJS comments `<%# ... %>`, not XML `<!-- ... -->` (XML disallows `--` inside comments). |
|
|
363
|
+
| DTO projects not generated | Ensure `server` exists in the global install (`npm link`), the prepare script ran, and `renameTo` uses `(data) => data.packageFolder`. |
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## ๐ง Learn More
|
|
368
|
+
|
|
369
|
+
- ๐ [JHipster Blueprints](https://www.jhipster.tech/modules/creating-a-blueprint/)
|
|
370
|
+
- ๐ [Cassandra Data Modeling](https://cassandra.apache.org/doc/latest/data-modeling/)
|
|
371
|
+
- ๐ [pgvector](https://github.com/pgvector/pgvector)
|
|
372
|
+
- ๐ง [Matt Raible on Micro Frontends](https://auth0.com/blog/micro-frontends-for-java-microservices/)
|
|
373
|
+
- โ๏ธ Companion blueprint: [generator-jhipster-ai-postgresql](https://github.com/amarpatel-xx/generator-jhipster-ai-postgresql)
|
|
374
|
+
- โ๏ธ Companion blueprint: [generator-jhipster-cassandra](https://github.com/amarpatel-xx/generator-jhipster-cassandra)
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## ๐ Acknowledgements
|
|
379
|
+
|
|
380
|
+
Huge thanks to:
|
|
381
|
+
|
|
382
|
+
- [yelhouti](https://github.com/yelhouti)
|
|
383
|
+
- [Jeremy Artero](https://www.linkedin.com/in/jeremyartero/)
|
|
384
|
+
- [Matt Raible](https://github.com/mraible)
|
|
385
|
+
- [Gaรซl Marziou](https://github.com/gmarziou)
|
|
386
|
+
- [Cedrick Lunven](https://www.linkedin.com/in/clunven/)
|
|
387
|
+
- [Christophe Bornet](https://www.linkedin.com/in/christophe-bornet-bab1193/)
|
|
388
|
+
- [Disha Patel](https://www.linkedin.com/in/dishapatel860/)
|
|
389
|
+
- [Catherine Guevara](https://www.linkedin.com/in/catherine-guevara-1a5375b1/)
|
|
390
|
+
|
|
391
|
+
---
|
package/cli/cli.cjs
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { dirname, basename, join } = require('path');
|
|
4
|
+
const { version, bin } = require('../package.json');
|
|
5
|
+
|
|
6
|
+
// Get package name to use as namespace.
|
|
7
|
+
// Allows blueprints to be aliased.
|
|
8
|
+
const packagePath = dirname(__dirname);
|
|
9
|
+
const packageFolderName = basename(packagePath);
|
|
10
|
+
const devBlueprintPath = join(packagePath, '.blueprint');
|
|
11
|
+
const blueprint = packageFolderName.startsWith('jhipster-') ? `generator-${packageFolderName}` : packageFolderName;
|
|
12
|
+
|
|
13
|
+
(async () => {
|
|
14
|
+
const { runJHipster, done, logger } = await import('generator-jhipster/cli');
|
|
15
|
+
const executableName = Object.keys(bin)[0];
|
|
16
|
+
|
|
17
|
+
runJHipster({
|
|
18
|
+
executableName,
|
|
19
|
+
executableVersion: version,
|
|
20
|
+
defaultCommand: 'app',
|
|
21
|
+
devBlueprintPath,
|
|
22
|
+
blueprints: {
|
|
23
|
+
[blueprint]: version,
|
|
24
|
+
},
|
|
25
|
+
printBlueprintLogo: () => {
|
|
26
|
+
console.log('===================== JHipster orchestrator =====================');
|
|
27
|
+
console.log('');
|
|
28
|
+
},
|
|
29
|
+
lookups: [{ packagePaths: [packagePath] }],
|
|
30
|
+
}).catch(done);
|
|
31
|
+
|
|
32
|
+
process.on('unhandledRejection', up => {
|
|
33
|
+
logger.error('Unhandled promise rejection at:');
|
|
34
|
+
logger.fatal(up);
|
|
35
|
+
});
|
|
36
|
+
})();
|