sonamu 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.swcrc.project-default +18 -0
- package/bin/cli.js +24 -0
- package/dist/ai/agents/agent.d.ts +11 -0
- package/dist/ai/agents/agent.d.ts.map +1 -0
- package/dist/ai/agents/agent.js +65 -0
- package/dist/ai/agents/index.d.ts +3 -0
- package/dist/ai/agents/index.d.ts.map +1 -0
- package/dist/ai/agents/index.js +4 -0
- package/dist/ai/agents/types.d.ts +43 -0
- package/dist/ai/agents/types.d.ts.map +1 -0
- package/dist/ai/agents/types.js +3 -0
- package/dist/ai/index.d.ts +2 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +3 -0
- package/dist/ai/providers/rtzr/api.d.ts +22 -0
- package/dist/ai/providers/rtzr/api.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/api.js +28 -0
- package/dist/ai/providers/rtzr/error.d.ts +18 -0
- package/dist/ai/providers/rtzr/error.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/error.js +29 -0
- package/dist/ai/providers/rtzr/index.d.ts +5 -0
- package/dist/ai/providers/rtzr/index.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/index.js +6 -0
- package/dist/ai/providers/rtzr/model.d.ts +52 -0
- package/dist/ai/providers/rtzr/model.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/model.js +137 -0
- package/dist/ai/providers/rtzr/options.d.ts +7 -0
- package/dist/ai/providers/rtzr/options.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/options.js +47 -0
- package/dist/ai/providers/rtzr/provider.d.ts +18 -0
- package/dist/ai/providers/rtzr/provider.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/provider.js +54 -0
- package/dist/ai/providers/rtzr/utils.d.ts +19 -0
- package/dist/ai/providers/rtzr/utils.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/utils.js +88 -0
- package/dist/api/base-frame.d.ts +2 -2
- package/dist/api/base-frame.d.ts.map +1 -1
- package/dist/api/base-frame.js +2 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +6 -1
- package/dist/api/code-converters.d.ts +58 -14
- package/dist/api/code-converters.d.ts.map +1 -1
- package/dist/api/code-converters.js +178 -409
- package/dist/api/config.d.ts +27 -13
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +19 -26
- package/dist/api/context.d.ts +4 -3
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +1 -1
- package/dist/api/decorators.d.ts +20 -6
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +111 -18
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +3 -3
- package/dist/api/sonamu.d.ts +7 -7
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +83 -51
- package/dist/api/validator.d.ts +6 -0
- package/dist/api/validator.d.ts.map +1 -0
- package/dist/api/validator.js +81 -0
- package/dist/bin/build-config.d.ts +5 -1
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +5 -2
- package/dist/bin/cli.js +165 -64
- package/dist/bin/loader-register.d.ts +2 -0
- package/dist/bin/loader-register.d.ts.map +1 -0
- package/dist/bin/loader-register.js +34 -0
- package/dist/database/_batch_update.d.ts +5 -3
- package/dist/database/_batch_update.d.ts.map +1 -1
- package/dist/database/_batch_update.js +30 -13
- package/dist/database/base-model.d.ts +96 -10
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +232 -89
- package/dist/database/base-model.types.d.ts +93 -0
- package/dist/database/base-model.types.d.ts.map +1 -0
- package/dist/database/base-model.types.js +10 -0
- package/dist/database/code-generator.d.ts +1 -1
- package/dist/database/code-generator.d.ts.map +1 -1
- package/dist/database/code-generator.js +11 -10
- package/dist/database/db.d.ts +5 -6
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +22 -25
- package/dist/database/puri-subset.test-d.js +81 -0
- package/dist/database/puri-subset.types.d.ts +123 -0
- package/dist/database/puri-subset.types.d.ts.map +1 -0
- package/dist/database/puri-subset.types.js +16 -0
- package/dist/database/puri-wrapper.d.ts +13 -11
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri-wrapper.js +2 -2
- package/dist/database/puri.d.ts +25 -14
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +83 -21
- package/dist/database/puri.types.d.ts +21 -7
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +4 -1
- package/dist/database/transaction-context.d.ts +1 -1
- package/dist/database/transaction-context.d.ts.map +1 -1
- package/dist/database/transaction-context.js +1 -1
- package/dist/database/upsert-builder.d.ts +9 -3
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +228 -78
- package/dist/entity/entity-manager.d.ts +165 -2
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +26 -10
- package/dist/entity/entity.d.ts +5 -3
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +153 -54
- package/dist/exceptions/error-handler.d.ts +1 -1
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +1 -1
- package/dist/exceptions/so-exceptions.d.ts +1 -1
- package/dist/exceptions/so-exceptions.d.ts.map +1 -1
- package/dist/exceptions/so-exceptions.js +1 -1
- package/dist/file-storage/driver.d.ts +1 -1
- package/dist/file-storage/driver.d.ts.map +1 -1
- package/dist/file-storage/driver.js +1 -1
- package/dist/file-storage/file-storage.js +2 -2
- package/dist/index.d.ts +18 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -13
- package/dist/migration/code-generation.d.ts +1 -1
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +123 -67
- package/dist/migration/migration-set.d.ts +2 -10
- package/dist/migration/migration-set.d.ts.map +1 -1
- package/dist/migration/migration-set.js +67 -218
- package/dist/migration/migrator.d.ts +24 -73
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +121 -301
- package/dist/migration/postgresql-schema-reader.d.ts +51 -0
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -0
- package/dist/migration/postgresql-schema-reader.js +245 -0
- package/dist/migration/types.d.ts +6 -38
- package/dist/migration/types.d.ts.map +1 -1
- package/dist/migration/types.js +1 -1
- package/dist/naite/messaging-types.d.ts +43 -0
- package/dist/naite/messaging-types.d.ts.map +1 -0
- package/dist/naite/messaging-types.js +7 -0
- package/dist/naite/naite-reporter.d.ts +41 -0
- package/dist/naite/naite-reporter.d.ts.map +1 -0
- package/dist/naite/naite-reporter.js +102 -0
- package/dist/naite/naite.d.ts +91 -8
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/naite/naite.js +285 -41
- package/dist/stream/sse.d.ts +2 -2
- package/dist/stream/sse.d.ts.map +1 -1
- package/dist/stream/sse.js +1 -1
- package/dist/syncer/api-parser.d.ts +3 -13
- package/dist/syncer/api-parser.d.ts.map +1 -1
- package/dist/syncer/api-parser.js +67 -56
- package/dist/syncer/checksum.d.ts +2 -2
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +11 -11
- package/dist/syncer/code-generator.d.ts +3 -3
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +37 -17
- package/dist/syncer/entity-operations.d.ts +2 -2
- package/dist/syncer/entity-operations.d.ts.map +1 -1
- package/dist/syncer/entity-operations.js +9 -8
- package/dist/syncer/file-patterns.d.ts +1 -1
- package/dist/syncer/file-patterns.d.ts.map +1 -1
- package/dist/syncer/file-patterns.js +1 -1
- package/dist/syncer/index.d.ts +4 -4
- package/dist/syncer/index.d.ts.map +1 -1
- package/dist/syncer/index.js +5 -5
- package/dist/syncer/module-loader.d.ts +4 -4
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +17 -12
- package/dist/syncer/syncer.d.ts +31 -24
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +92 -45
- package/dist/template/entity-converter.d.ts +1 -1
- package/dist/template/entity-converter.d.ts.map +1 -1
- package/dist/template/entity-converter.js +15 -8
- package/dist/template/helpers.d.ts +2 -2
- package/dist/template/helpers.d.ts.map +1 -1
- package/dist/template/helpers.js +3 -3
- package/dist/template/implementations/entity.template.d.ts +2 -2
- package/dist/template/implementations/entity.template.d.ts.map +1 -1
- package/dist/template/implementations/entity.template.js +4 -5
- package/dist/template/implementations/generated.template.d.ts +2 -3
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +46 -29
- package/dist/template/implementations/generated_http.template.d.ts +2 -3
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.js +9 -9
- package/dist/template/implementations/generated_sso.template.d.ts +3 -4
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +54 -25
- package/dist/template/implementations/init_types.template.d.ts +2 -2
- package/dist/template/implementations/init_types.template.d.ts.map +1 -1
- package/dist/template/implementations/init_types.template.js +2 -2
- package/dist/template/implementations/model.template.d.ts +2 -2
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.js +47 -37
- package/dist/template/implementations/model_test.template.d.ts +2 -2
- package/dist/template/implementations/model_test.template.d.ts.map +1 -1
- package/dist/template/implementations/model_test.template.js +2 -2
- package/dist/template/implementations/service.template.d.ts +4 -4
- package/dist/template/implementations/service.template.d.ts.map +1 -1
- package/dist/template/implementations/service.template.js +24 -16
- package/dist/template/implementations/view_enums_buttonset.template.d.ts +2 -2
- package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -1
- package/dist/template/implementations/view_enums_buttonset.template.js +1 -1
- package/dist/template/implementations/view_enums_dropdown.template.d.ts +2 -2
- package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -1
- package/dist/template/implementations/view_enums_dropdown.template.js +2 -2
- package/dist/template/implementations/view_enums_select.template.d.ts +2 -2
- package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_enums_select.template.js +2 -2
- package/dist/template/implementations/view_form.template.d.ts +2 -2
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +4 -4
- package/dist/template/implementations/view_id_all_select.template.d.ts +2 -2
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_all_select.template.js +1 -1
- package/dist/template/implementations/view_id_async_select.template.d.ts +2 -2
- package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_async_select.template.js +1 -1
- package/dist/template/implementations/view_list.template.d.ts +2 -2
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +29 -19
- package/dist/template/implementations/view_list_columns.template.d.ts +3 -3
- package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list_columns.template.js +1 -1
- package/dist/template/implementations/view_search_input.template.d.ts +2 -2
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
- package/dist/template/implementations/view_search_input.template.js +1 -1
- package/dist/template/index.d.ts +4 -2
- package/dist/template/index.d.ts.map +1 -1
- package/dist/template/index.js +5 -3
- package/dist/template/template-manager.d.ts +56 -0
- package/dist/template/template-manager.d.ts.map +1 -0
- package/dist/template/template-manager.js +125 -0
- package/dist/template/template-types.d.ts +16 -0
- package/dist/template/template-types.d.ts.map +1 -0
- package/dist/template/template-types.js +7 -0
- package/dist/template/template.d.ts +12 -2
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/template.js +19 -6
- package/dist/template/zod-converter.d.ts +40 -7
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +341 -58
- package/dist/testing/_relation-graph.d.ts +1 -1
- package/dist/testing/_relation-graph.d.ts.map +1 -1
- package/dist/testing/_relation-graph.js +12 -3
- package/dist/testing/fixture-manager.d.ts +42 -11
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +338 -236
- package/dist/types/types.d.ts +709 -104
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +309 -52
- package/dist/typings/knex.d.js +2 -2
- package/dist/utils/async-utils.d.ts.map +1 -1
- package/dist/utils/async-utils.js +3 -3
- package/dist/utils/console-util.js +1 -1
- package/dist/utils/controller.d.ts +1 -0
- package/dist/utils/controller.d.ts.map +1 -1
- package/dist/utils/controller.js +4 -1
- package/dist/utils/esm-utils.d.ts +0 -6
- package/dist/utils/esm-utils.d.ts.map +1 -1
- package/dist/utils/esm-utils.js +2 -9
- package/dist/utils/formatter.d.ts +3 -0
- package/dist/utils/formatter.d.ts.map +1 -0
- package/dist/utils/formatter.js +110 -0
- package/dist/utils/fs-utils.d.ts +1 -1
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +1 -1
- package/dist/utils/lodash-able.d.ts.map +1 -1
- package/dist/utils/lodash-able.js +1 -1
- package/dist/utils/object-utils.d.ts +44 -0
- package/dist/utils/object-utils.d.ts.map +1 -0
- package/dist/utils/object-utils.js +191 -0
- package/dist/utils/path-utils.d.ts +1 -1
- package/dist/utils/path-utils.d.ts.map +1 -1
- package/dist/utils/path-utils.js +3 -3
- package/dist/utils/process-utils.js +1 -1
- package/dist/utils/sql-parser.d.ts +5 -1
- package/dist/utils/sql-parser.d.ts.map +1 -1
- package/dist/utils/sql-parser.js +14 -3
- package/dist/utils/type-utils.d.ts +23 -0
- package/dist/utils/type-utils.d.ts.map +1 -0
- package/dist/utils/type-utils.js +45 -0
- package/dist/utils/utils.d.ts +7 -1
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +44 -5
- package/dist/utils/zod-error.d.ts +1 -1
- package/dist/utils/zod-error.d.ts.map +1 -1
- package/dist/utils/zod-error.js +1 -1
- package/package.json +54 -29
- package/src/ai/agents/agent.ts +87 -0
- package/src/ai/agents/index.ts +2 -0
- package/src/ai/agents/types.ts +47 -0
- package/src/ai/index.ts +1 -0
- package/src/ai/providers/rtzr/api.ts +37 -0
- package/src/ai/providers/rtzr/error.ts +34 -0
- package/src/ai/providers/rtzr/index.ts +4 -0
- package/src/ai/providers/rtzr/model.ts +201 -0
- package/src/ai/providers/rtzr/options.ts +49 -0
- package/src/ai/providers/rtzr/provider.ts +91 -0
- package/src/ai/providers/rtzr/utils.ts +127 -0
- package/src/api/base-frame.ts +4 -2
- package/src/api/caster.ts +17 -23
- package/src/api/code-converters.ts +176 -533
- package/src/api/config.ts +39 -56
- package/src/api/context.ts +7 -18
- package/src/api/decorators.ts +175 -46
- package/src/api/index.ts +2 -2
- package/src/api/sonamu.ts +133 -124
- package/src/api/validator.ts +83 -0
- package/src/bin/build-config.ts +7 -1
- package/src/bin/cli.ts +192 -110
- package/src/bin/loader-register.ts +38 -0
- package/src/database/_batch_update.ts +46 -31
- package/src/database/base-model.ts +390 -182
- package/src/database/base-model.types.ts +155 -0
- package/src/database/code-generator.ts +13 -32
- package/src/database/db.ts +36 -50
- package/src/database/puri-subset.test-d.ts +471 -0
- package/src/database/puri-subset.types.ts +195 -0
- package/src/database/puri-wrapper.ts +58 -67
- package/src/database/puri.ts +182 -126
- package/src/database/puri.types.ts +64 -31
- package/src/database/transaction-context.ts +1 -1
- package/src/database/upsert-builder.ts +262 -132
- package/src/entity/entity-manager.ts +36 -28
- package/src/entity/entity.ts +330 -249
- package/src/exceptions/error-handler.ts +3 -3
- package/src/exceptions/so-exceptions.ts +11 -11
- package/src/file-storage/driver.ts +5 -5
- package/src/file-storage/file-storage.ts +2 -2
- package/src/index.ts +18 -12
- package/src/migration/code-generation.ts +185 -172
- package/src/migration/migration-set.ts +80 -293
- package/src/migration/migrator.ts +182 -425
- package/src/migration/mysql-schema-reader.ts.txt +272 -0
- package/src/migration/postgresql-schema-reader.ts +310 -0
- package/src/migration/types.ts +6 -39
- package/src/naite/messaging-types.ts +51 -0
- package/src/naite/naite-reporter.ts +128 -0
- package/src/naite/naite.ts +378 -33
- package/src/shared/web.shared.ts.txt +20 -24
- package/src/stream/sse.ts +5 -5
- package/src/syncer/api-parser.ts +52 -69
- package/src/syncer/checksum.ts +25 -37
- package/src/syncer/code-generator.ts +58 -62
- package/src/syncer/entity-operations.ts +12 -15
- package/src/syncer/file-patterns.ts +2 -2
- package/src/syncer/index.ts +4 -4
- package/src/syncer/module-loader.ts +28 -25
- package/src/syncer/syncer.ts +155 -162
- package/src/template/entity-converter.ts +18 -27
- package/src/template/helpers.ts +8 -11
- package/src/template/implementations/entity.template.ts +6 -6
- package/src/template/implementations/generated.template.ts +99 -99
- package/src/template/implementations/generated_http.template.ts +21 -54
- package/src/template/implementations/generated_sso.template.ts +78 -65
- package/src/template/implementations/init_types.template.ts +4 -6
- package/src/template/implementations/model.template.ts +47 -38
- package/src/template/implementations/model_test.template.ts +3 -3
- package/src/template/implementations/service.template.ts +56 -80
- package/src/template/implementations/view_enums_buttonset.template.ts +2 -2
- package/src/template/implementations/view_enums_dropdown.template.ts +4 -4
- package/src/template/implementations/view_enums_select.template.ts +3 -3
- package/src/template/implementations/view_form.template.ts +34 -75
- package/src/template/implementations/view_id_all_select.template.ts +2 -2
- package/src/template/implementations/view_id_async_select.template.ts +9 -23
- package/src/template/implementations/view_list.template.ts +54 -95
- package/src/template/implementations/view_list_columns.template.ts +4 -10
- package/src/template/implementations/view_search_input.template.ts +2 -2
- package/src/template/index.ts +4 -2
- package/src/template/template-manager.ts +166 -0
- package/src/template/template-types.ts +16 -0
- package/src/template/template.ts +29 -10
- package/src/template/zod-converter.ts +407 -101
- package/src/testing/_relation-graph.ts +18 -11
- package/src/testing/fixture-manager.ts +468 -362
- package/src/types/types.ts +516 -248
- package/src/typings/knex.d.ts +7 -9
- package/src/utils/async-utils.ts +8 -12
- package/src/utils/console-util.ts +1 -1
- package/src/utils/controller.ts +3 -0
- package/src/utils/esm-utils.ts +8 -18
- package/src/utils/formatter.ts +109 -0
- package/src/utils/fs-utils.ts +1 -1
- package/src/utils/lodash-able.ts +1 -4
- package/src/utils/object-utils.ts +217 -0
- package/src/utils/path-utils.ts +3 -6
- package/src/utils/process-utils.ts +1 -1
- package/src/utils/sql-parser.ts +23 -5
- package/src/utils/type-utils.ts +83 -0
- package/src/utils/utils.ts +58 -9
- package/src/utils/zod-error.ts +3 -3
- package/dist/bin/cli-wrapper.d.ts +0 -3
- package/dist/bin/cli-wrapper.d.ts.map +0 -1
- package/dist/bin/cli-wrapper.js +0 -72
- package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts +0 -2
- package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts.map +0 -1
- package/dist/database/knex-plugins/knex-on-duplicate-update.js +0 -39
- package/dist/entity/entity-utils.d.ts +0 -61
- package/dist/entity/entity-utils.d.ts.map +0 -1
- package/dist/entity/entity-utils.js +0 -210
- package/src/bin/cli-wrapper.ts +0 -82
- package/src/database/knex-plugins/knex-on-duplicate-update.ts +0 -45
- package/src/entity/entity-utils.ts +0 -291
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
isManyToManyRelationProp,
|
|
3
|
-
SubsetQuery,
|
|
4
|
-
TemplateOptions,
|
|
5
|
-
} from "../../types/types";
|
|
6
|
-
import { EntityManager } from "../../entity/entity-manager";
|
|
7
|
-
import { Template } from "../template";
|
|
1
|
+
import assert from "assert";
|
|
8
2
|
import inflection from "inflection";
|
|
9
|
-
import {
|
|
10
|
-
import * as _ from "lodash-es";
|
|
11
|
-
import { nonNullable } from "../../utils/utils";
|
|
3
|
+
import { unique } from "radashi";
|
|
12
4
|
import { Sonamu } from "../../api";
|
|
13
|
-
import { Entity } from "../../entity/entity";
|
|
5
|
+
import type { Entity } from "../../entity/entity";
|
|
6
|
+
import { EntityManager } from "../../entity/entity-manager";
|
|
7
|
+
import { isManyToManyRelationProp } from "../../types/types";
|
|
8
|
+
import { Template } from "../template";
|
|
9
|
+
import type { SourceCode } from "./generated.template";
|
|
14
10
|
|
|
15
11
|
export class Template__generated_sso extends Template {
|
|
16
12
|
constructor() {
|
|
@@ -26,46 +22,54 @@ export class Template__generated_sso extends Template {
|
|
|
26
22
|
};
|
|
27
23
|
}
|
|
28
24
|
|
|
29
|
-
render(
|
|
25
|
+
render() {
|
|
30
26
|
const entityIds = EntityManager.getAllIds();
|
|
31
27
|
const entities = entityIds.map((id) => EntityManager.get(id));
|
|
32
28
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
29
|
+
// SubsetQueries 생성 대상: 부모 엔티티가 없고 서브셋이 존재
|
|
30
|
+
const targetEntities = entities.filter(
|
|
31
|
+
(entity) => entity.parentId === undefined && Object.keys(entity.subsets).length > 0,
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// SubsetQueries 생성
|
|
35
|
+
const sourceCodes: SourceCode[] = targetEntities.flatMap((entity) => {
|
|
36
|
+
const subsetKeys = Object.keys(entity.subsets);
|
|
37
|
+
|
|
38
|
+
const subsetKeyTypeName = `${entity.names.module}SubsetKey`;
|
|
39
|
+
const entityCamelName = inflection.camelize(entity.id, true);
|
|
40
|
+
|
|
41
|
+
// Puri 기반 SubsetQuery
|
|
42
|
+
const puriSubsetQuery: SourceCode = {
|
|
43
|
+
label: `SubsetQuery: ${entity.id}`,
|
|
44
|
+
lines: [
|
|
45
|
+
`export const ${entityCamelName}SubsetQueries = {`,
|
|
46
|
+
...subsetKeys.map(
|
|
47
|
+
(subsetKey) => `${subsetKey}: (qbWrapper: PuriWrapper<DatabaseSchemaExtend>) => {
|
|
48
|
+
${entity.getPuriSubsetQuery(subsetKey)};
|
|
49
|
+
},`,
|
|
50
|
+
),
|
|
51
|
+
`};`,
|
|
52
|
+
"",
|
|
53
|
+
],
|
|
54
|
+
importKeys: [],
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// Puri 기반 SubsetLoadersQuery
|
|
58
|
+
const puriLoaderQuery: SourceCode = {
|
|
59
|
+
label: `LoaderQuery: ${entity.id}`,
|
|
60
|
+
lines: [
|
|
61
|
+
`export const ${entityCamelName}LoaderQueries = {`,
|
|
62
|
+
...subsetKeys.map((subsetKey) => {
|
|
63
|
+
return `${subsetKey}: ${entity.getPuriLoaderQuery(subsetKey)},`;
|
|
64
|
+
}),
|
|
65
|
+
`} as const satisfies PuriLoaderQueries<${subsetKeyTypeName}>;`,
|
|
66
|
+
"",
|
|
67
|
+
],
|
|
68
|
+
importKeys: [subsetKeyTypeName],
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
return [puriSubsetQuery, puriLoaderQuery];
|
|
72
|
+
});
|
|
69
73
|
|
|
70
74
|
// DatabaseSchema 생성
|
|
71
75
|
const dbSchemaSourceCode = this.getDatabaseSchemaSourceCode(entities);
|
|
@@ -78,26 +82,35 @@ export class Template__generated_sso extends Template {
|
|
|
78
82
|
if (ts === null) {
|
|
79
83
|
return result;
|
|
80
84
|
}
|
|
85
|
+
assert(result);
|
|
81
86
|
return {
|
|
82
|
-
lines: [...result
|
|
83
|
-
importKeys:
|
|
87
|
+
lines: [...result.lines, `// ${ts.label}`, ...ts.lines, ""],
|
|
88
|
+
importKeys: unique([...result.importKeys, ...ts.importKeys]),
|
|
84
89
|
};
|
|
85
90
|
},
|
|
86
91
|
{
|
|
87
92
|
lines: [],
|
|
88
93
|
importKeys: [],
|
|
89
|
-
} as Omit<SourceCode, "label"
|
|
94
|
+
} as Omit<SourceCode, "label">,
|
|
90
95
|
);
|
|
91
96
|
|
|
92
97
|
const body = sourceCode.lines.join("\n");
|
|
93
98
|
const isUsingManyToManyBaseSchema = body.includes("ManyToManyBaseSchema");
|
|
99
|
+
|
|
100
|
+
const sonamuImports = [
|
|
101
|
+
"PuriWrapper",
|
|
102
|
+
"DatabaseSchemaExtend",
|
|
103
|
+
"PuriLoaderQueries",
|
|
104
|
+
isUsingManyToManyBaseSchema ? "ManyToManyBaseSchema" : "",
|
|
105
|
+
]
|
|
106
|
+
.filter(Boolean)
|
|
107
|
+
.join(", ");
|
|
108
|
+
|
|
94
109
|
return {
|
|
95
110
|
...this.getTargetAndPath(),
|
|
96
111
|
body: sourceCode.lines.join("\n"),
|
|
97
112
|
importKeys: sourceCode.importKeys,
|
|
98
|
-
customHeaders: [
|
|
99
|
-
`import { SubsetQuery, ${isUsingManyToManyBaseSchema ? "ManyToManyBaseSchema" : ""} } from "sonamu";`,
|
|
100
|
-
],
|
|
113
|
+
customHeaders: [`import { ${sonamuImports} } from "sonamu";`],
|
|
101
114
|
};
|
|
102
115
|
}
|
|
103
116
|
|
|
@@ -106,20 +119,17 @@ export class Template__generated_sso extends Template {
|
|
|
106
119
|
return null;
|
|
107
120
|
}
|
|
108
121
|
|
|
109
|
-
const entitySchemaLines = entities.map(
|
|
110
|
-
(entity) => `${entity.table}: ${entity.id}BaseSchema;`
|
|
111
|
-
);
|
|
122
|
+
const entitySchemaLines = entities.map((entity) => `${entity.table}: ${entity.id}BaseSchema;`);
|
|
112
123
|
|
|
113
|
-
const
|
|
124
|
+
const joinTables = unique(
|
|
114
125
|
entities.flatMap((entity) =>
|
|
115
126
|
entity.props.filter(isManyToManyRelationProp).map((prop) => {
|
|
116
127
|
const fromTableKey = inflection.singularize(entity.table);
|
|
117
|
-
const toTableKey = inflection.singularize(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
)
|
|
128
|
+
const toTableKey = inflection.singularize(EntityManager.get(prop.with).table);
|
|
129
|
+
return { table: prop.joinTable, fromTableKey, toTableKey };
|
|
130
|
+
}),
|
|
131
|
+
),
|
|
132
|
+
(joinTable) => joinTable.table,
|
|
123
133
|
);
|
|
124
134
|
|
|
125
135
|
return {
|
|
@@ -128,7 +138,10 @@ export class Template__generated_sso extends Template {
|
|
|
128
138
|
`declare module "sonamu" {`,
|
|
129
139
|
` export interface DatabaseSchemaExtend {`,
|
|
130
140
|
...entitySchemaLines,
|
|
131
|
-
...
|
|
141
|
+
...joinTables.map(
|
|
142
|
+
(joinTable) =>
|
|
143
|
+
`${joinTable.table}: ManyToManyBaseSchema<"${joinTable.fromTableKey}", "${joinTable.toTableKey}">;`,
|
|
144
|
+
),
|
|
132
145
|
` }`,
|
|
133
146
|
`}`,
|
|
134
147
|
],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { TemplateOptions } from "../../types/types";
|
|
2
|
-
import { EntityManager, EntityNamesRecord } from "../../entity/entity-manager";
|
|
3
|
-
import { Template } from "../template";
|
|
4
1
|
import { Sonamu } from "../../api";
|
|
2
|
+
import { EntityManager, type EntityNamesRecord } from "../../entity/entity-manager";
|
|
3
|
+
import type { TemplateOptions } from "../../types/types";
|
|
4
|
+
import { Template } from "../template";
|
|
5
5
|
|
|
6
6
|
export class Template__init_types extends Template {
|
|
7
7
|
constructor() {
|
|
@@ -21,9 +21,7 @@ export class Template__init_types extends Template {
|
|
|
21
21
|
const names = EntityManager.getNamesFromId(entityId);
|
|
22
22
|
|
|
23
23
|
const hasCreatedAt =
|
|
24
|
-
EntityManager.get(entityId).props.find(
|
|
25
|
-
(prop) => prop.name === "created_at"
|
|
26
|
-
) !== undefined;
|
|
24
|
+
EntityManager.get(entityId).props.find((prop) => prop.name === "created_at") !== undefined;
|
|
27
25
|
|
|
28
26
|
return {
|
|
29
27
|
...this.getTargetAndPath(names),
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { TemplateOptions } from "../../types/types";
|
|
2
|
-
import { EntityManager, EntityNamesRecord } from "../../entity/entity-manager";
|
|
3
|
-
import { Template } from "../template";
|
|
4
|
-
import { Template__view_list } from "./view_list.template";
|
|
5
1
|
import { Sonamu } from "../../api";
|
|
2
|
+
import { EntityManager, type EntityNamesRecord } from "../../entity/entity-manager";
|
|
3
|
+
import { Naite } from "../../naite/naite";
|
|
4
|
+
import type { TemplateOptions } from "../../types/types";
|
|
5
|
+
import { Template } from "../template";
|
|
6
6
|
import { getZodTypeById, zodTypeToRenderingNode } from "../zod-converter";
|
|
7
|
+
import { Template__view_list } from "./view_list.template";
|
|
7
8
|
|
|
8
9
|
export class Template__model extends Template {
|
|
9
10
|
constructor() {
|
|
@@ -20,6 +21,8 @@ export class Template__model extends Template {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
async render({ entityId }: TemplateOptions["model"]) {
|
|
24
|
+
Naite.t("render", { entityId });
|
|
25
|
+
|
|
23
26
|
const listParamsZodType = await getZodTypeById(`${entityId}ListParams`);
|
|
24
27
|
const listParamsNode = zodTypeToRenderingNode(listParamsZodType);
|
|
25
28
|
|
|
@@ -35,20 +38,26 @@ export class Template__model extends Template {
|
|
|
35
38
|
return {
|
|
36
39
|
...this.getTargetAndPath(names),
|
|
37
40
|
body: `
|
|
38
|
-
import { BaseModelClass, ListResult, asArray, NotFoundException, BadRequestException, api } from 'sonamu';
|
|
41
|
+
import { BaseModelClass, type ListResult, asArray, NotFoundException, BadRequestException, api, exhaustive } from 'sonamu';
|
|
39
42
|
import {
|
|
40
43
|
${entityId}SubsetKey,
|
|
41
44
|
${entityId}SubsetMapping,
|
|
42
45
|
} from "../sonamu.generated";
|
|
43
46
|
import {
|
|
44
47
|
${names.camel}SubsetQueries,
|
|
48
|
+
${names.camel}LoaderQueries,
|
|
45
49
|
} from "../sonamu.generated.sso";
|
|
46
50
|
import { ${entityId}ListParams, ${entityId}SaveParams } from "./${names.fs}.types";
|
|
47
51
|
|
|
48
52
|
/*
|
|
49
53
|
${entityId} Model
|
|
50
54
|
*/
|
|
51
|
-
class ${entityId}ModelClass extends BaseModelClass
|
|
55
|
+
class ${entityId}ModelClass extends BaseModelClass<
|
|
56
|
+
${entityId}SubsetKey,
|
|
57
|
+
${entityId}SubsetMapping,
|
|
58
|
+
typeof ${names.camel}SubsetQueries,
|
|
59
|
+
typeof ${names.camel}LoaderQueries
|
|
60
|
+
> {
|
|
52
61
|
modelName = "${entityId}";
|
|
53
62
|
|
|
54
63
|
@api({ httpMethod: "GET", clients: ["axios", "swr"], resourceName: "${entityId}" })
|
|
@@ -96,38 +105,38 @@ class ${entityId}ModelClass extends BaseModelClass {
|
|
|
96
105
|
};
|
|
97
106
|
|
|
98
107
|
// build queries
|
|
99
|
-
|
|
108
|
+
const { qb, onSubset: _ } = this.getSubsetQueries(subset);
|
|
109
|
+
|
|
110
|
+
// id
|
|
111
|
+
if (params.id) {
|
|
112
|
+
qb.whereIn("${entity.table}.id", asArray(params.id));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// search-keyword
|
|
116
|
+
if (params.search && params.keyword && params.keyword.length > 0) {
|
|
117
|
+
if (params.search === "id") {
|
|
118
|
+
qb.where("${entity.table}.id", Number(params.keyword));
|
|
119
|
+
// } else if (params.search === "field") {
|
|
120
|
+
// qb.where("${entity.table}.field", "like", \`%\${params.keyword}%\`);
|
|
121
|
+
} else {
|
|
122
|
+
throw new BadRequestException(\`구현되지 않은 검색 필드 \${params.search}\`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// orderBy
|
|
127
|
+
if (params.orderBy) {
|
|
128
|
+
// default orderBy
|
|
129
|
+
if (params.orderBy === "id-desc") {
|
|
130
|
+
qb.orderBy("${entity.table}.id", "desc");
|
|
131
|
+
} else {
|
|
132
|
+
exhaustive(params.orderBy);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const { rows, total } = await this.executeSubsetQuery({
|
|
100
137
|
subset,
|
|
138
|
+
qb,
|
|
101
139
|
params,
|
|
102
|
-
subsetQuery: ${names.camel}SubsetQueries[subset],
|
|
103
|
-
build: ({ qb }) => {
|
|
104
|
-
// id
|
|
105
|
-
if (params.id) {
|
|
106
|
-
qb.whereIn("${entity.table}.id", asArray(params.id));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// search-keyword
|
|
110
|
-
if (params.search && params.keyword && params.keyword.length > 0) {
|
|
111
|
-
if (params.search === "id") {
|
|
112
|
-
qb.where("${entity.table}.id", params.keyword);
|
|
113
|
-
// } else if (params.search === "field") {
|
|
114
|
-
// qb.where("${entity.table}.field", "like", \`%\${params.keyword}%\`);
|
|
115
|
-
} else {
|
|
116
|
-
throw new BadRequestException(
|
|
117
|
-
\`구현되지 않은 검색 필드 \${params.search}\`
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// orderBy
|
|
123
|
-
if (params.orderBy) {
|
|
124
|
-
// default orderBy
|
|
125
|
-
const [orderByField, orderByDirec] = params.orderBy.split("-");
|
|
126
|
-
qb.orderBy("${entity.table}." + orderByField, orderByDirec);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return qb;
|
|
130
|
-
},
|
|
131
140
|
debug: false,
|
|
132
141
|
});
|
|
133
142
|
|
|
@@ -144,7 +153,7 @@ class ${entityId}ModelClass extends BaseModelClass {
|
|
|
144
153
|
const wdb = this.getPuri("w");
|
|
145
154
|
|
|
146
155
|
// register
|
|
147
|
-
spa.
|
|
156
|
+
spa.forEach((sp) => {
|
|
148
157
|
wdb.ubRegister("${entity.table}", sp);
|
|
149
158
|
});
|
|
150
159
|
|
|
@@ -169,7 +178,7 @@ class ${entityId}ModelClass extends BaseModelClass {
|
|
|
169
178
|
}
|
|
170
179
|
}
|
|
171
180
|
|
|
172
|
-
export const ${entityId}Model = new ${entityId}ModelClass();
|
|
181
|
+
export const ${entityId}Model = new ${entityId}ModelClass(${names.camel}SubsetQueries, ${names.camel}LoaderQueries);
|
|
173
182
|
`.trim(),
|
|
174
183
|
importKeys: [],
|
|
175
184
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { TemplateOptions } from "../../types/types";
|
|
2
|
-
import { EntityManager, EntityNamesRecord } from "../../entity/entity-manager";
|
|
3
|
-
import { Template } from "../template";
|
|
4
1
|
import { Sonamu } from "../../api";
|
|
2
|
+
import { EntityManager, type EntityNamesRecord } from "../../entity/entity-manager";
|
|
3
|
+
import type { TemplateOptions } from "../../types/types";
|
|
4
|
+
import { Template } from "../template";
|
|
5
5
|
|
|
6
6
|
export class Template__model_test extends Template {
|
|
7
7
|
constructor() {
|