sonamu 0.5.7 → 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 +13 -2
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +71 -2
- 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 +258 -2
- package/dist/api/config.d.ts +90 -0
- package/dist/api/config.d.ts.map +1 -0
- package/dist/api/config.js +25 -0
- package/dist/api/context.d.ts +4 -2
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +3 -2
- package/dist/api/decorators.d.ts +20 -6
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +235 -2
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +9 -2
- package/dist/api/sonamu.d.ts +10 -24
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +514 -2
- 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 +6 -1
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +15 -2
- package/dist/bin/cli.js +519 -2
- package/dist/bin/hot-hook-register.d.ts +11 -0
- package/dist/bin/hot-hook-register.d.ts.map +1 -0
- package/dist/bin/hot-hook-register.js +21 -0
- 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 +95 -2
- 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 +390 -2
- 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 +54 -2
- package/dist/database/db.d.ts +6 -21
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +129 -2
- 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 +109 -2
- package/dist/database/puri.d.ts +41 -23
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +601 -2
- package/dist/database/puri.types.d.ts +25 -6
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +6 -2
- 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 +14 -2
- 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 +365 -2
- package/dist/entity/entity-manager.d.ts +167 -2
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +130 -2
- package/dist/entity/entity.d.ts +5 -3
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +750 -2
- 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 +29 -2
- 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 +85 -2
- 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 +79 -2
- package/dist/file-storage/file-storage.js +75 -2
- package/dist/index.d.ts +18 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -2
- 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 +614 -2
- 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 +213 -2
- package/dist/migration/migrator.d.ts +24 -82
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +330 -2
- 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 +3 -2
- 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 +95 -0
- package/dist/naite/naite.d.ts.map +1 -0
- package/dist/naite/naite.js +316 -0
- package/dist/stream/index.js +3 -2
- package/dist/stream/sse.d.ts +2 -2
- package/dist/stream/sse.d.ts.map +1 -1
- package/dist/stream/sse.js +38 -2
- package/dist/syncer/api-parser.d.ts +10 -0
- package/dist/syncer/api-parser.d.ts.map +1 -0
- package/dist/syncer/api-parser.js +240 -0
- package/dist/syncer/checksum.d.ts +21 -0
- package/dist/syncer/checksum.d.ts.map +1 -0
- package/dist/syncer/checksum.js +98 -0
- package/dist/syncer/code-generator.d.ts +20 -0
- package/dist/syncer/code-generator.d.ts.map +1 -0
- package/dist/syncer/code-generator.js +161 -0
- package/dist/syncer/entity-operations.d.ts +17 -0
- package/dist/syncer/entity-operations.d.ts.map +1 -0
- package/dist/syncer/entity-operations.js +59 -0
- package/dist/syncer/file-patterns.d.ts +29 -0
- package/dist/syncer/file-patterns.d.ts.map +1 -0
- package/dist/syncer/file-patterns.js +38 -0
- package/dist/syncer/index.d.ts +6 -0
- package/dist/syncer/index.d.ts.map +1 -1
- package/dist/syncer/index.js +9 -2
- package/dist/syncer/module-loader.d.ts +35 -0
- package/dist/syncer/module-loader.d.ts.map +1 -0
- package/dist/syncer/module-loader.js +87 -0
- package/dist/syncer/syncer.d.ts +98 -106
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +422 -2
- package/dist/template/entity-converter.d.ts +14 -0
- package/dist/template/entity-converter.d.ts.map +1 -0
- package/dist/template/entity-converter.js +108 -0
- package/dist/template/helpers.d.ts +23 -0
- package/dist/template/helpers.d.ts.map +1 -0
- package/dist/template/helpers.js +64 -0
- package/dist/{templates → template/implementations}/entity.template.d.ts +3 -3
- package/dist/template/implementations/entity.template.d.ts.map +1 -0
- package/dist/template/implementations/entity.template.js +86 -0
- package/dist/{templates → template/implementations}/generated.template.d.ts +3 -4
- package/dist/template/implementations/generated.template.d.ts.map +1 -0
- package/dist/template/implementations/generated.template.js +249 -0
- package/dist/{templates → template/implementations}/generated_http.template.d.ts +3 -4
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -0
- package/dist/template/implementations/generated_http.template.js +131 -0
- package/dist/{templates → template/implementations}/generated_sso.template.d.ts +4 -5
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -0
- package/dist/template/implementations/generated_sso.template.js +134 -0
- package/dist/{templates → template/implementations}/init_types.template.d.ts +3 -3
- package/dist/template/implementations/init_types.template.d.ts.map +1 -0
- package/dist/template/implementations/init_types.template.js +38 -0
- package/dist/template/implementations/model.template.d.ts +17 -0
- package/dist/template/implementations/model.template.d.ts.map +1 -0
- package/dist/template/implementations/model.template.js +181 -0
- package/dist/{templates → template/implementations}/model_test.template.d.ts +3 -3
- package/dist/template/implementations/model_test.template.d.ts.map +1 -0
- package/dist/template/implementations/model_test.template.js +35 -0
- package/dist/{templates → template/implementations}/service.template.d.ts +6 -6
- package/dist/template/implementations/service.template.d.ts.map +1 -0
- package/dist/template/implementations/service.template.js +201 -0
- package/dist/{templates → template/implementations}/view_enums_buttonset.template.d.ts +3 -3
- package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_buttonset.template.js +31 -0
- package/dist/{templates → template/implementations}/view_enums_dropdown.template.d.ts +3 -4
- package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_dropdown.template.js +50 -0
- package/dist/{templates → template/implementations}/view_enums_select.template.d.ts +3 -3
- package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_select.template.js +55 -0
- package/dist/{templates → template/implementations}/view_form.template.d.ts +5 -5
- package/dist/template/implementations/view_form.template.d.ts.map +1 -0
- package/dist/template/implementations/view_form.template.js +337 -0
- package/dist/{templates → template/implementations}/view_id_all_select.template.d.ts +3 -3
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_id_all_select.template.js +31 -0
- package/dist/{templates → template/implementations}/view_id_async_select.template.d.ts +3 -3
- package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_id_async_select.template.js +105 -0
- package/dist/{templates → template/implementations}/view_list.template.d.ts +5 -13
- package/dist/template/implementations/view_list.template.d.ts.map +1 -0
- package/dist/template/implementations/view_list.template.js +475 -0
- package/dist/template/implementations/view_list_columns.template.d.ts +17 -0
- package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -0
- package/dist/template/implementations/view_list_columns.template.js +49 -0
- package/dist/{templates → template/implementations}/view_search_input.template.d.ts +3 -3
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -0
- package/dist/template/implementations/view_search_input.template.js +64 -0
- package/dist/template/index.d.ts +7 -0
- package/dist/template/index.d.ts.map +1 -0
- package/dist/template/index.js +8 -0
- 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 +49 -0
- package/dist/template/template.d.ts.map +1 -0
- package/dist/template/template.js +60 -0
- package/dist/template/zod-converter.d.ts +51 -0
- package/dist/template/zod-converter.d.ts.map +1 -0
- package/dist/template/zod-converter.js +449 -0
- 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 +89 -2
- 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 +623 -2
- package/dist/types/types.d.ts +747 -143
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +546 -2
- package/dist/typings/knex.d.js +3 -2
- package/dist/utils/async-utils.d.ts +7 -0
- package/dist/utils/async-utils.d.ts.map +1 -1
- package/dist/utils/async-utils.js +57 -2
- package/dist/utils/console-util.d.ts +2 -0
- package/dist/utils/console-util.d.ts.map +1 -0
- package/dist/utils/console-util.js +6 -0
- package/dist/utils/controller.d.ts +1 -0
- package/dist/utils/controller.d.ts.map +1 -1
- package/dist/utils/controller.js +29 -2
- package/dist/utils/esm-utils.d.ts +39 -0
- package/dist/utils/esm-utils.d.ts.map +1 -0
- package/dist/utils/esm-utils.js +49 -0
- 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 +17 -2
- package/dist/utils/lodash-able.d.ts.map +1 -1
- package/dist/utils/lodash-able.js +6 -2
- package/dist/utils/model.js +22 -2
- 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 +89 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +60 -0
- package/dist/utils/process-utils.d.ts +13 -0
- package/dist/utils/process-utils.d.ts.map +1 -0
- package/dist/utils/process-utils.js +36 -0
- 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 +46 -2
- 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 +10 -7
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +72 -2
- 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 +19 -2
- package/package.json +65 -27
- 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 +178 -535
- package/src/api/config.ts +125 -0
- package/src/api/context.ts +7 -17
- package/src/api/decorators.ts +176 -46
- package/src/api/index.ts +2 -2
- package/src/api/sonamu.ts +190 -167
- package/src/api/validator.ts +83 -0
- package/src/bin/build-config.ts +8 -1
- package/src/bin/cli.ts +258 -124
- package/src/bin/hot-hook-register.ts +22 -0
- 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 +40 -96
- 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 +229 -148
- package/src/database/puri.types.ts +76 -30
- package/src/database/transaction-context.ts +1 -1
- package/src/database/upsert-builder.ts +262 -132
- package/src/entity/entity-manager.ts +48 -36
- package/src/entity/entity.ts +330 -248
- 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 -10
- package/src/migration/code-generation.ts +185 -172
- package/src/migration/migration-set.ts +80 -293
- package/src/migration/migrator.ts +199 -571
- 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 +415 -0
- package/src/shared/web.shared.ts.txt +20 -24
- package/src/stream/sse.ts +5 -5
- package/src/syncer/api-parser.ts +282 -0
- package/src/syncer/checksum.ts +140 -0
- package/src/syncer/code-generator.ts +198 -0
- package/src/syncer/entity-operations.ts +65 -0
- package/src/syncer/file-patterns.ts +56 -0
- package/src/syncer/index.ts +6 -0
- package/src/syncer/module-loader.ts +128 -0
- package/src/syncer/syncer.ts +389 -1453
- package/src/template/entity-converter.ts +114 -0
- package/src/template/helpers.ts +81 -0
- package/src/{templates → template/implementations}/entity.template.ts +7 -7
- package/src/{templates → template/implementations}/generated.template.ts +101 -101
- package/src/{templates → template/implementations}/generated_http.template.ts +27 -57
- package/src/template/implementations/generated_sso.template.ts +151 -0
- package/src/{templates → template/implementations}/init_types.template.ts +5 -7
- package/src/{templates → template/implementations}/model.template.ts +52 -43
- package/src/{templates → template/implementations}/model_test.template.ts +5 -5
- package/src/{templates → template/implementations}/service.template.ts +66 -82
- package/src/{templates → template/implementations}/view_enums_buttonset.template.ts +3 -3
- package/src/{templates → template/implementations}/view_enums_dropdown.template.ts +4 -20
- package/src/{templates → template/implementations}/view_enums_select.template.ts +4 -4
- package/src/{templates → template/implementations}/view_form.template.ts +40 -83
- package/src/{templates → template/implementations}/view_id_all_select.template.ts +3 -3
- package/src/{templates → template/implementations}/view_id_async_select.template.ts +10 -24
- package/src/{templates → template/implementations}/view_list.template.ts +60 -152
- package/src/{templates → template/implementations}/view_list_columns.template.ts +5 -11
- package/src/{templates → template/implementations}/view_search_input.template.ts +3 -3
- package/src/template/index.ts +6 -0
- package/src/template/template-manager.ts +166 -0
- package/src/template/template-types.ts +16 -0
- package/src/template/template.ts +105 -0
- package/src/template/zod-converter.ts +525 -0
- package/src/testing/_relation-graph.ts +18 -11
- package/src/testing/fixture-manager.ts +472 -359
- package/src/types/types.ts +553 -308
- package/src/typings/knex.d.ts +7 -9
- package/src/utils/async-utils.ts +23 -10
- package/src/utils/console-util.ts +4 -0
- package/src/utils/controller.ts +3 -0
- package/src/utils/esm-utils.ts +59 -0
- 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 +99 -0
- package/src/utils/process-utils.ts +46 -0
- package/src/utils/sql-parser.ts +23 -5
- package/src/utils/type-utils.ts +83 -0
- package/src/utils/utils.ts +66 -43
- package/src/utils/zod-error.ts +3 -4
- package/dist/api/base-frame.js.map +0 -1
- package/dist/api/caster.js.map +0 -1
- package/dist/api/code-converters.js.map +0 -1
- package/dist/api/context.js.map +0 -1
- package/dist/api/decorators.js.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/sonamu.js.map +0 -1
- package/dist/bin/build-config.js.map +0 -1
- 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 -3
- package/dist/bin/cli-wrapper.js.map +0 -1
- package/dist/bin/cli.js.map +0 -1
- package/dist/database/_batch_update.js.map +0 -1
- package/dist/database/base-model.js.map +0 -1
- package/dist/database/code-generator.js.map +0 -1
- package/dist/database/db.js.map +0 -1
- 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 -2
- package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +0 -1
- package/dist/database/puri-wrapper.js.map +0 -1
- package/dist/database/puri.js.map +0 -1
- package/dist/database/puri.types.js.map +0 -1
- package/dist/database/transaction-context.js.map +0 -1
- package/dist/database/upsert-builder.js.map +0 -1
- package/dist/entity/entity-manager.js.map +0 -1
- 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 -2
- package/dist/entity/entity-utils.js.map +0 -1
- package/dist/entity/entity.js.map +0 -1
- package/dist/exceptions/error-handler.js.map +0 -1
- package/dist/exceptions/so-exceptions.js.map +0 -1
- package/dist/file-storage/driver.js.map +0 -1
- package/dist/file-storage/file-storage.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/migration/code-generation.js.map +0 -1
- package/dist/migration/migration-set.js.map +0 -1
- package/dist/migration/migrator.js.map +0 -1
- package/dist/migration/types.js.map +0 -1
- package/dist/stream/index.js.map +0 -1
- package/dist/stream/sse.js.map +0 -1
- package/dist/syncer/index.js.map +0 -1
- package/dist/syncer/syncer.js.map +0 -1
- package/dist/templates/base-template.d.ts +0 -13
- package/dist/templates/base-template.d.ts.map +0 -1
- package/dist/templates/base-template.js +0 -2
- package/dist/templates/base-template.js.map +0 -1
- package/dist/templates/entity.template.d.ts.map +0 -1
- package/dist/templates/entity.template.js +0 -2
- package/dist/templates/entity.template.js.map +0 -1
- package/dist/templates/generated.template.d.ts.map +0 -1
- package/dist/templates/generated.template.js +0 -2
- package/dist/templates/generated.template.js.map +0 -1
- package/dist/templates/generated_http.template.d.ts.map +0 -1
- package/dist/templates/generated_http.template.js +0 -2
- package/dist/templates/generated_http.template.js.map +0 -1
- package/dist/templates/generated_sso.template.d.ts.map +0 -1
- package/dist/templates/generated_sso.template.js +0 -2
- package/dist/templates/generated_sso.template.js.map +0 -1
- package/dist/templates/index.d.ts +0 -2
- package/dist/templates/index.d.ts.map +0 -1
- package/dist/templates/index.js +0 -2
- package/dist/templates/index.js.map +0 -1
- package/dist/templates/init_types.template.d.ts.map +0 -1
- package/dist/templates/init_types.template.js +0 -2
- package/dist/templates/init_types.template.js.map +0 -1
- package/dist/templates/model.template.d.ts +0 -17
- package/dist/templates/model.template.d.ts.map +0 -1
- package/dist/templates/model.template.js +0 -2
- package/dist/templates/model.template.js.map +0 -1
- package/dist/templates/model_test.template.d.ts.map +0 -1
- package/dist/templates/model_test.template.js +0 -2
- package/dist/templates/model_test.template.js.map +0 -1
- package/dist/templates/service.template.d.ts.map +0 -1
- package/dist/templates/service.template.js +0 -2
- package/dist/templates/service.template.js.map +0 -1
- package/dist/templates/view_enums_buttonset.template.d.ts.map +0 -1
- package/dist/templates/view_enums_buttonset.template.js +0 -2
- package/dist/templates/view_enums_buttonset.template.js.map +0 -1
- package/dist/templates/view_enums_dropdown.template.d.ts.map +0 -1
- package/dist/templates/view_enums_dropdown.template.js +0 -2
- package/dist/templates/view_enums_dropdown.template.js.map +0 -1
- package/dist/templates/view_enums_select.template.d.ts.map +0 -1
- package/dist/templates/view_enums_select.template.js +0 -2
- package/dist/templates/view_enums_select.template.js.map +0 -1
- package/dist/templates/view_form.template.d.ts.map +0 -1
- package/dist/templates/view_form.template.js +0 -2
- package/dist/templates/view_form.template.js.map +0 -1
- package/dist/templates/view_id_all_select.template.d.ts.map +0 -1
- package/dist/templates/view_id_all_select.template.js +0 -2
- package/dist/templates/view_id_all_select.template.js.map +0 -1
- package/dist/templates/view_id_async_select.template.d.ts.map +0 -1
- package/dist/templates/view_id_async_select.template.js +0 -2
- package/dist/templates/view_id_async_select.template.js.map +0 -1
- package/dist/templates/view_list.template.d.ts.map +0 -1
- package/dist/templates/view_list.template.js +0 -2
- package/dist/templates/view_list.template.js.map +0 -1
- package/dist/templates/view_list_columns.template.d.ts +0 -17
- package/dist/templates/view_list_columns.template.d.ts.map +0 -1
- package/dist/templates/view_list_columns.template.js +0 -2
- package/dist/templates/view_list_columns.template.js.map +0 -1
- package/dist/templates/view_search_input.template.d.ts.map +0 -1
- package/dist/templates/view_search_input.template.js +0 -2
- package/dist/templates/view_search_input.template.js.map +0 -1
- package/dist/testing/_relation-graph.js.map +0 -1
- package/dist/testing/fixture-manager.js.map +0 -1
- package/dist/types/types.js.map +0 -1
- package/dist/typings/knex.d.js.map +0 -1
- package/dist/utils/async-utils.js.map +0 -1
- package/dist/utils/controller.js.map +0 -1
- package/dist/utils/fs-utils.js.map +0 -1
- package/dist/utils/lodash-able.js.map +0 -1
- package/dist/utils/model.js.map +0 -1
- package/dist/utils/sql-parser.js.map +0 -1
- package/dist/utils/utils.js.map +0 -1
- package/dist/utils/zod-error.js.map +0 -1
- package/src/bin/cli-wrapper.ts +0 -75
- package/src/database/knex-plugins/knex-on-duplicate-update.ts +0 -45
- package/src/entity/entity-utils.ts +0 -291
- package/src/templates/base-template.ts +0 -19
- package/src/templates/generated_sso.template.ts +0 -138
- package/src/templates/index.ts +0 -1
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import qs from "qs";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { Template } from "
|
|
7
|
-
import prettier from "prettier";
|
|
8
|
-
import { Sonamu } from "../api/sonamu";
|
|
3
|
+
import { getZodObjectFromApi } from "../../api/code-converters";
|
|
4
|
+
import type { ExtendedApi } from "../../api/decorators";
|
|
5
|
+
import { Sonamu } from "../../api/sonamu";
|
|
6
|
+
import { Template } from "../template";
|
|
9
7
|
|
|
10
8
|
export class Template__generated_http extends Template {
|
|
11
9
|
constructor() {
|
|
@@ -21,11 +19,13 @@ export class Template__generated_http extends Template {
|
|
|
21
19
|
};
|
|
22
20
|
}
|
|
23
21
|
|
|
24
|
-
async render(
|
|
22
|
+
async render() {
|
|
25
23
|
const {
|
|
26
24
|
syncer: { types, apis },
|
|
27
25
|
config: {
|
|
28
|
-
|
|
26
|
+
api: {
|
|
27
|
+
route: { prefix },
|
|
28
|
+
},
|
|
29
29
|
},
|
|
30
30
|
} = Sonamu;
|
|
31
31
|
|
|
@@ -36,23 +36,13 @@ export class Template__generated_http extends Template {
|
|
|
36
36
|
const dataLines = await (async () => {
|
|
37
37
|
if ((api.options.httpMethod ?? "GET") === "GET") {
|
|
38
38
|
return {
|
|
39
|
-
querystring: [
|
|
40
|
-
qs
|
|
41
|
-
.stringify(reqObject, { encode: false })
|
|
42
|
-
.split("&")
|
|
43
|
-
.join("\n\t&"),
|
|
44
|
-
],
|
|
39
|
+
querystring: [qs.stringify(reqObject, { encode: false }).split("&").join("\n\t&")],
|
|
45
40
|
body: [],
|
|
46
41
|
};
|
|
47
42
|
} else {
|
|
48
43
|
return {
|
|
49
44
|
querystring: [],
|
|
50
|
-
body: [
|
|
51
|
-
"",
|
|
52
|
-
await prettier.format(JSON.stringify(reqObject), {
|
|
53
|
-
parser: "json",
|
|
54
|
-
}),
|
|
55
|
-
],
|
|
45
|
+
body: ["", JSON.stringify(reqObject, null, 2)],
|
|
56
46
|
};
|
|
57
47
|
}
|
|
58
48
|
})();
|
|
@@ -65,7 +55,7 @@ export class Template__generated_http extends Template {
|
|
|
65
55
|
`Content-Type: ${api.options.contentType ?? "application/json"}`,
|
|
66
56
|
...dataLines.body,
|
|
67
57
|
].join("\n");
|
|
68
|
-
})
|
|
58
|
+
}),
|
|
69
59
|
);
|
|
70
60
|
|
|
71
61
|
return {
|
|
@@ -81,15 +71,10 @@ export class Template__generated_http extends Template {
|
|
|
81
71
|
Object.keys(zodType.shape).map((key) => [
|
|
82
72
|
key,
|
|
83
73
|
this.zodTypeToReqDefault(zodType.shape[key], key),
|
|
84
|
-
])
|
|
74
|
+
]),
|
|
85
75
|
);
|
|
86
76
|
} else if (zodType instanceof z.ZodArray) {
|
|
87
|
-
return [
|
|
88
|
-
this.zodTypeToReqDefault(
|
|
89
|
-
(zodType as z.ZodArray<z.ZodType>).element,
|
|
90
|
-
name
|
|
91
|
-
),
|
|
92
|
-
];
|
|
77
|
+
return [this.zodTypeToReqDefault((zodType as z.ZodArray<z.ZodType>).element, name)];
|
|
93
78
|
} else if (zodType instanceof z.ZodString) {
|
|
94
79
|
if (name.endsWith("_at") || name.endsWith("_date") || name === "range") {
|
|
95
80
|
return "2000-01-01";
|
|
@@ -108,51 +93,36 @@ export class Template__generated_http extends Template {
|
|
|
108
93
|
} else if (zodType instanceof z.ZodEnum) {
|
|
109
94
|
return zodType.options[0];
|
|
110
95
|
} else if (zodType instanceof z.ZodOptional) {
|
|
111
|
-
return this.zodTypeToReqDefault(
|
|
112
|
-
(zodType as z.ZodOptional<z.ZodType>).def.innerType,
|
|
113
|
-
name
|
|
114
|
-
);
|
|
96
|
+
return this.zodTypeToReqDefault((zodType as z.ZodOptional<z.ZodType>).def.innerType, name);
|
|
115
97
|
} else if (zodType instanceof z.ZodNullable) {
|
|
116
98
|
return null;
|
|
117
99
|
} else if (zodType instanceof z.ZodUnion) {
|
|
118
|
-
return this.zodTypeToReqDefault(
|
|
119
|
-
(zodType as z.ZodUnion<z.ZodType[]>).def.options[0],
|
|
120
|
-
name
|
|
121
|
-
);
|
|
100
|
+
return this.zodTypeToReqDefault((zodType as z.ZodUnion<z.ZodType[]>).def.options[0], name);
|
|
122
101
|
} else if (zodType instanceof z.ZodUnknown) {
|
|
123
102
|
return "unknown";
|
|
124
103
|
} else if (zodType instanceof z.ZodTuple) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
);
|
|
104
|
+
/** biome-ignore lint/suspicious/noExplicitAny: ZodTuple 타입 사용 */
|
|
105
|
+
return zodType.def.items.map((item: any) => this.zodTypeToReqDefault(item, name));
|
|
128
106
|
} else if (zodType instanceof z.ZodDate) {
|
|
129
107
|
return "2000-01-01";
|
|
130
108
|
} else if (zodType instanceof z.ZodLiteral) {
|
|
131
109
|
return zodType.value;
|
|
132
110
|
} else if (zodType instanceof z.ZodRecord || zodType instanceof z.ZodMap) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
111
|
+
// biome-ignore lint/suspicious/noExplicitAny: ZodRecord 타입 사용
|
|
112
|
+
const kvDef = (zodType as z.ZodRecord<any, z.ZodType> | z.ZodMap<z.ZodType, z.ZodType>).def;
|
|
113
|
+
// biome-ignore lint/suspicious/noExplicitAny: ZodIntersection 타입 사용
|
|
136
114
|
const key = this.zodTypeToReqDefault(kvDef.keyType, name) as any;
|
|
137
115
|
const value = this.zodTypeToReqDefault(kvDef.valueType, name);
|
|
138
116
|
return { [key]: value };
|
|
139
117
|
} else if (zodType instanceof z.ZodSet) {
|
|
140
|
-
return [
|
|
141
|
-
this.zodTypeToReqDefault(
|
|
142
|
-
(zodType as z.ZodSet<z.ZodType>).def.valueType,
|
|
143
|
-
name
|
|
144
|
-
),
|
|
145
|
-
];
|
|
118
|
+
return [this.zodTypeToReqDefault((zodType as z.ZodSet<z.ZodType>).def.valueType, name)];
|
|
146
119
|
} else if (zodType instanceof z.ZodIntersection) {
|
|
147
120
|
return this.zodTypeToReqDefault(
|
|
148
121
|
(zodType as z.ZodIntersection<z.ZodType, z.ZodType>).def.right,
|
|
149
|
-
name
|
|
122
|
+
name,
|
|
150
123
|
);
|
|
151
124
|
} else if (zodType instanceof z.ZodDefault) {
|
|
152
|
-
return this.zodTypeToReqDefault(
|
|
153
|
-
(zodType as z.ZodDefault<z.ZodType>).def.innerType,
|
|
154
|
-
name
|
|
155
|
-
);
|
|
125
|
+
return this.zodTypeToReqDefault((zodType as z.ZodDefault<z.ZodType>).def.innerType, name);
|
|
156
126
|
} else {
|
|
157
127
|
// console.log(zodType);
|
|
158
128
|
return `unknown-${zodType.type}`;
|
|
@@ -161,7 +131,8 @@ export class Template__generated_http extends Template {
|
|
|
161
131
|
|
|
162
132
|
resolveApiParams(
|
|
163
133
|
api: ExtendedApi,
|
|
164
|
-
|
|
134
|
+
// biome-ignore lint/suspicious/noExplicitAny: ZodObject 타입 사용
|
|
135
|
+
references: { [typeName: string]: z.ZodObject<any> },
|
|
165
136
|
): { [key: string]: unknown } {
|
|
166
137
|
const reqType = getZodObjectFromApi(api, references);
|
|
167
138
|
try {
|
|
@@ -170,9 +141,8 @@ export class Template__generated_http extends Template {
|
|
|
170
141
|
};
|
|
171
142
|
return def;
|
|
172
143
|
} catch (error) {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
);
|
|
144
|
+
console.error(error);
|
|
145
|
+
throw new Error(`Invalid zod type detected on ${api.modelName}:${api.methodName}`);
|
|
176
146
|
}
|
|
177
147
|
}
|
|
178
148
|
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import assert from "assert";
|
|
2
|
+
import inflection from "inflection";
|
|
3
|
+
import { unique } from "radashi";
|
|
4
|
+
import { Sonamu } from "../../api";
|
|
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";
|
|
10
|
+
|
|
11
|
+
export class Template__generated_sso extends Template {
|
|
12
|
+
constructor() {
|
|
13
|
+
super("generated_sso");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
getTargetAndPath() {
|
|
17
|
+
const { dir } = Sonamu.config.api;
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
target: `${dir}/src/application`,
|
|
21
|
+
path: `sonamu.generated.sso.ts`,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
render() {
|
|
26
|
+
const entityIds = EntityManager.getAllIds();
|
|
27
|
+
const entities = entityIds.map((id) => EntityManager.get(id));
|
|
28
|
+
|
|
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
|
+
});
|
|
73
|
+
|
|
74
|
+
// DatabaseSchema 생성
|
|
75
|
+
const dbSchemaSourceCode = this.getDatabaseSchemaSourceCode(entities);
|
|
76
|
+
if (dbSchemaSourceCode) {
|
|
77
|
+
sourceCodes.push(dbSchemaSourceCode);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const sourceCode = sourceCodes.reduce(
|
|
81
|
+
(result, ts) => {
|
|
82
|
+
if (ts === null) {
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
assert(result);
|
|
86
|
+
return {
|
|
87
|
+
lines: [...result.lines, `// ${ts.label}`, ...ts.lines, ""],
|
|
88
|
+
importKeys: unique([...result.importKeys, ...ts.importKeys]),
|
|
89
|
+
};
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
lines: [],
|
|
93
|
+
importKeys: [],
|
|
94
|
+
} as Omit<SourceCode, "label">,
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
const body = sourceCode.lines.join("\n");
|
|
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
|
+
|
|
109
|
+
return {
|
|
110
|
+
...this.getTargetAndPath(),
|
|
111
|
+
body: sourceCode.lines.join("\n"),
|
|
112
|
+
importKeys: sourceCode.importKeys,
|
|
113
|
+
customHeaders: [`import { ${sonamuImports} } from "sonamu";`],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
getDatabaseSchemaSourceCode(entities: Entity[]): SourceCode | null {
|
|
118
|
+
if (entities.length === 0) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const entitySchemaLines = entities.map((entity) => `${entity.table}: ${entity.id}BaseSchema;`);
|
|
123
|
+
|
|
124
|
+
const joinTables = unique(
|
|
125
|
+
entities.flatMap((entity) =>
|
|
126
|
+
entity.props.filter(isManyToManyRelationProp).map((prop) => {
|
|
127
|
+
const fromTableKey = inflection.singularize(entity.table);
|
|
128
|
+
const toTableKey = inflection.singularize(EntityManager.get(prop.with).table);
|
|
129
|
+
return { table: prop.joinTable, fromTableKey, toTableKey };
|
|
130
|
+
}),
|
|
131
|
+
),
|
|
132
|
+
(joinTable) => joinTable.table,
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
return {
|
|
136
|
+
label: `DatabaseSchema`,
|
|
137
|
+
lines: [
|
|
138
|
+
`declare module "sonamu" {`,
|
|
139
|
+
` export interface DatabaseSchemaExtend {`,
|
|
140
|
+
...entitySchemaLines,
|
|
141
|
+
...joinTables.map(
|
|
142
|
+
(joinTable) =>
|
|
143
|
+
`${joinTable.table}: ManyToManyBaseSchema<"${joinTable.fromTableKey}", "${joinTable.toTableKey}">;`,
|
|
144
|
+
),
|
|
145
|
+
` }`,
|
|
146
|
+
`}`,
|
|
147
|
+
],
|
|
148
|
+
importKeys: entities.map((entity) => `${entity.id}BaseSchema`),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { EntityManager, EntityNamesRecord } from "
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { EntityManager, EntityNamesRecord } from "
|
|
3
|
-
import {
|
|
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
|
+
import { getZodTypeById, zodTypeToRenderingNode } from "../zod-converter";
|
|
4
7
|
import { Template__view_list } from "./view_list.template";
|
|
5
|
-
import { Sonamu } from "../api";
|
|
6
8
|
|
|
7
9
|
export class Template__model extends Template {
|
|
8
10
|
constructor() {
|
|
@@ -18,11 +20,12 @@ export class Template__model extends Template {
|
|
|
18
20
|
};
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
render(
|
|
22
|
-
{ entityId }
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
async render({ entityId }: TemplateOptions["model"]) {
|
|
24
|
+
Naite.t("render", { entityId });
|
|
25
|
+
|
|
26
|
+
const listParamsZodType = await getZodTypeById(`${entityId}ListParams`);
|
|
27
|
+
const listParamsNode = zodTypeToRenderingNode(listParamsZodType);
|
|
28
|
+
|
|
26
29
|
const names = EntityManager.getNamesFromId(entityId);
|
|
27
30
|
const entity = EntityManager.get(entityId);
|
|
28
31
|
|
|
@@ -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 {
|
|
2
|
-
import { EntityManager, EntityNamesRecord } from "
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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() {
|
|
@@ -26,7 +26,7 @@ export class Template__model_test extends Template {
|
|
|
26
26
|
import { describe, test, expect } from "vitest";
|
|
27
27
|
import { bootstrap } from '../../testing/bootstrap';
|
|
28
28
|
|
|
29
|
-
bootstrap(
|
|
29
|
+
bootstrap();
|
|
30
30
|
describe.skip("${entityId}ModelTest", () => {
|
|
31
31
|
test("Query", async () => {
|
|
32
32
|
expect(true).toBe(true);
|