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,2 +1,89 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { EntityManager } from "../entity/entity-manager.js";
|
|
2
|
+
import { isBelongsToOneRelationProp, isManyToManyRelationProp, isOneToOneRelationProp, isRelationProp } from "../types/types.js";
|
|
3
|
+
// 관계 그래프 처리를 별도 클래스로 분리
|
|
4
|
+
export class RelationGraph {
|
|
5
|
+
graph = new Map();
|
|
6
|
+
buildGraph(fixtures) {
|
|
7
|
+
this.graph.clear();
|
|
8
|
+
// 1. 노드 추가
|
|
9
|
+
for (const fixture of fixtures){
|
|
10
|
+
this.graph.set(fixture.fixtureId, {
|
|
11
|
+
fixtureId: fixture.fixtureId,
|
|
12
|
+
entityId: fixture.entityId,
|
|
13
|
+
related: new Set()
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
// 2. 의존성 추가
|
|
17
|
+
for (const fixture of fixtures){
|
|
18
|
+
const node = this.graph.get(fixture.fixtureId);
|
|
19
|
+
if (node === undefined) {
|
|
20
|
+
throw new Error(`Node not found for fixture ${fixture.fixtureId}`);
|
|
21
|
+
}
|
|
22
|
+
for (const [, column] of Object.entries(fixture.columns)){
|
|
23
|
+
const prop = column.prop;
|
|
24
|
+
if (isRelationProp(prop)) {
|
|
25
|
+
if (isBelongsToOneRelationProp(prop) || isOneToOneRelationProp(prop) && prop.hasJoinColumn) {
|
|
26
|
+
const relatedFixtureId = `${prop.with}#${column.value}`;
|
|
27
|
+
if (this.graph.has(relatedFixtureId)) {
|
|
28
|
+
node.related.add(relatedFixtureId);
|
|
29
|
+
}
|
|
30
|
+
} else if (isManyToManyRelationProp(prop)) {
|
|
31
|
+
// ManyToMany 관계의 경우 양방향 의존성 추가
|
|
32
|
+
const relatedIds = column.value;
|
|
33
|
+
for (const relatedId of relatedIds){
|
|
34
|
+
const relatedFixtureId = `${prop.with}#${relatedId}`;
|
|
35
|
+
if (this.graph.has(relatedFixtureId)) {
|
|
36
|
+
node.related.add(relatedFixtureId);
|
|
37
|
+
this.graph.get(relatedFixtureId)?.related.add(fixture.fixtureId);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
getInsertionOrder() {
|
|
46
|
+
const visited = new Set();
|
|
47
|
+
const order = [];
|
|
48
|
+
const tempVisited = new Set();
|
|
49
|
+
const visit = (fixtureId)=>{
|
|
50
|
+
if (visited.has(fixtureId)) return;
|
|
51
|
+
if (tempVisited.has(fixtureId)) {
|
|
52
|
+
console.warn(`Circular dependency detected involving: ${fixtureId}`);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
tempVisited.add(fixtureId);
|
|
56
|
+
const node = this.graph.get(fixtureId);
|
|
57
|
+
if (node === undefined) {
|
|
58
|
+
throw new Error(`Node not found for fixture ${fixtureId}`);
|
|
59
|
+
}
|
|
60
|
+
const entity = EntityManager.get(node.entityId);
|
|
61
|
+
for (const depId of node.related){
|
|
62
|
+
const depNode = this.graph.get(depId);
|
|
63
|
+
if (depNode === undefined) {
|
|
64
|
+
throw new Error(`Node not found for fixture ${depId}`);
|
|
65
|
+
}
|
|
66
|
+
// BelongsToOne 관계이면서 nullable이 아닌 경우 먼저 방문
|
|
67
|
+
const relationProp = entity.props.find((prop)=>isRelationProp(prop) && (isBelongsToOneRelationProp(prop) || isOneToOneRelationProp(prop) && prop.hasJoinColumn) && prop.with === depNode.entityId);
|
|
68
|
+
if (relationProp && !relationProp.nullable) {
|
|
69
|
+
visit(depId);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
tempVisited.delete(fixtureId);
|
|
73
|
+
visited.add(fixtureId);
|
|
74
|
+
order.push(fixtureId);
|
|
75
|
+
};
|
|
76
|
+
for (const fixtureId of this.graph.keys()){
|
|
77
|
+
visit(fixtureId);
|
|
78
|
+
}
|
|
79
|
+
// circular dependency로 인해 방문되지 않은 fixtureId 추가
|
|
80
|
+
for (const fixtureId of this.graph.keys()){
|
|
81
|
+
if (!visited.has(fixtureId)) {
|
|
82
|
+
order.push(fixtureId);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return order;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL19yZWxhdGlvbi1ncmFwaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlQcm9wLCBGaXh0dXJlUmVjb3JkLCBSZWxhdGlvbk5vZGUgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7XG4gIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wLFxuICBpc01hbnlUb01hbnlSZWxhdGlvblByb3AsXG4gIGlzT25lVG9PbmVSZWxhdGlvblByb3AsXG4gIGlzUmVsYXRpb25Qcm9wLFxufSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcblxuLy8g6rSA6rOEIOq3uOuemO2UhCDsspjrpqzrpbwg67OE64+EIO2BtOuemOyKpOuhnCDrtoTrpqxcbmV4cG9ydCBjbGFzcyBSZWxhdGlvbkdyYXBoIHtcbiAgcHJpdmF0ZSBncmFwaDogTWFwPHN0cmluZywgUmVsYXRpb25Ob2RlPiA9IG5ldyBNYXAoKTtcblxuICBidWlsZEdyYXBoKGZpeHR1cmVzOiBGaXh0dXJlUmVjb3JkW10pOiB2b2lkIHtcbiAgICB0aGlzLmdyYXBoLmNsZWFyKCk7XG5cbiAgICAvLyAxLiDrhbjrk5wg7LaU6rCAXG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIGZpeHR1cmVzKSB7XG4gICAgICB0aGlzLmdyYXBoLnNldChmaXh0dXJlLmZpeHR1cmVJZCwge1xuICAgICAgICBmaXh0dXJlSWQ6IGZpeHR1cmUuZml4dHVyZUlkLFxuICAgICAgICBlbnRpdHlJZDogZml4dHVyZS5lbnRpdHlJZCxcbiAgICAgICAgcmVsYXRlZDogbmV3IFNldCgpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gMi4g7J2Y7KG07ISxIOy2lOqwgFxuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiBmaXh0dXJlcykge1xuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ3JhcGguZ2V0KGZpeHR1cmUuZml4dHVyZUlkKTtcbiAgICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlIG5vdCBmb3VuZCBmb3IgZml4dHVyZSAke2ZpeHR1cmUuZml4dHVyZUlkfWApO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IFssIGNvbHVtbl0gb2YgT2JqZWN0LmVudHJpZXMoZml4dHVyZS5jb2x1bW5zKSkge1xuICAgICAgICBjb25zdCBwcm9wID0gY29sdW1uLnByb3AgYXMgRW50aXR5UHJvcDtcblxuICAgICAgICBpZiAoaXNSZWxhdGlvblByb3AocHJvcCkpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcChwcm9wKSB8fFxuICAgICAgICAgICAgKGlzT25lVG9PbmVSZWxhdGlvblByb3AocHJvcCkgJiYgcHJvcC5oYXNKb2luQ29sdW1uKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZEZpeHR1cmVJZCA9IGAke3Byb3Aud2l0aH0jJHtjb2x1bW4udmFsdWV9YDtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyYXBoLmhhcyhyZWxhdGVkRml4dHVyZUlkKSkge1xuICAgICAgICAgICAgICBub2RlLnJlbGF0ZWQuYWRkKHJlbGF0ZWRGaXh0dXJlSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgICAgICAvLyBNYW55VG9NYW55IOq0gOqzhOydmCDqsr3smrAg7JaR67Cp7ZalIOydmOyhtOyEsSDstpTqsIBcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRJZHMgPSBjb2x1bW4udmFsdWUgYXMgdW5rbm93biBhcyBudW1iZXJbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVsYXRlZElkIG9mIHJlbGF0ZWRJZHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZEZpeHR1cmVJZCA9IGAke3Byb3Aud2l0aH0jJHtyZWxhdGVkSWR9YDtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JhcGguaGFzKHJlbGF0ZWRGaXh0dXJlSWQpKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yZWxhdGVkLmFkZChyZWxhdGVkRml4dHVyZUlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoLmdldChyZWxhdGVkRml4dHVyZUlkKT8ucmVsYXRlZC5hZGQoZml4dHVyZS5maXh0dXJlSWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5zZXJ0aW9uT3JkZXIoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBvcmRlcjogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCB0ZW1wVmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgY29uc3QgdmlzaXQgPSAoZml4dHVyZUlkOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2aXNpdGVkLmhhcyhmaXh0dXJlSWQpKSByZXR1cm47XG4gICAgICBpZiAodGVtcFZpc2l0ZWQuaGFzKGZpeHR1cmVJZCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBDaXJjdWxhciBkZXBlbmRlbmN5IGRldGVjdGVkIGludm9sdmluZzogJHtmaXh0dXJlSWR9YCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGVtcFZpc2l0ZWQuYWRkKGZpeHR1cmVJZCk7XG5cbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdyYXBoLmdldChmaXh0dXJlSWQpO1xuICAgICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vZGUgbm90IGZvdW5kIGZvciBmaXh0dXJlICR7Zml4dHVyZUlkfWApO1xuICAgICAgfVxuICAgICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQobm9kZS5lbnRpdHlJZCk7XG5cbiAgICAgIGZvciAoY29uc3QgZGVwSWQgb2Ygbm9kZS5yZWxhdGVkKSB7XG4gICAgICAgIGNvbnN0IGRlcE5vZGUgPSB0aGlzLmdyYXBoLmdldChkZXBJZCk7XG4gICAgICAgIGlmIChkZXBOb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vZGUgbm90IGZvdW5kIGZvciBmaXh0dXJlICR7ZGVwSWR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZWxvbmdzVG9PbmUg6rSA6rOE7J2066m07IScIG51bGxhYmxl7J20IOyVhOuLjCDqsr3smrAg66i87KCAIOuwqeusuFxuICAgICAgICBjb25zdCByZWxhdGlvblByb3AgPSBlbnRpdHkucHJvcHMuZmluZChcbiAgICAgICAgICAocHJvcCkgPT5cbiAgICAgICAgICAgIGlzUmVsYXRpb25Qcm9wKHByb3ApICYmXG4gICAgICAgICAgICAoaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AocHJvcCkgfHxcbiAgICAgICAgICAgICAgKGlzT25lVG9PbmVSZWxhdGlvblByb3AocHJvcCkgJiYgcHJvcC5oYXNKb2luQ29sdW1uKSkgJiZcbiAgICAgICAgICAgIHByb3Aud2l0aCA9PT0gZGVwTm9kZS5lbnRpdHlJZCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHJlbGF0aW9uUHJvcCAmJiAhcmVsYXRpb25Qcm9wLm51bGxhYmxlKSB7XG4gICAgICAgICAgdmlzaXQoZGVwSWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRlbXBWaXNpdGVkLmRlbGV0ZShmaXh0dXJlSWQpO1xuICAgICAgdmlzaXRlZC5hZGQoZml4dHVyZUlkKTtcbiAgICAgIG9yZGVyLnB1c2goZml4dHVyZUlkKTtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBmaXh0dXJlSWQgb2YgdGhpcy5ncmFwaC5rZXlzKCkpIHtcbiAgICAgIHZpc2l0KGZpeHR1cmVJZCk7XG4gICAgfVxuXG4gICAgLy8gY2lyY3VsYXIgZGVwZW5kZW5jeeuhnCDsnbjtlbQg67Cp66y465CY7KeAIOyViuydgCBmaXh0dXJlSWQg7LaU6rCAXG4gICAgZm9yIChjb25zdCBmaXh0dXJlSWQgb2YgdGhpcy5ncmFwaC5rZXlzKCkpIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZml4dHVyZUlkKSkge1xuICAgICAgICBvcmRlci5wdXNoKGZpeHR1cmVJZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xuICB9XG59XG4iXSwibmFtZXMiOlsiRW50aXR5TWFuYWdlciIsImlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wIiwiaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wIiwiaXNPbmVUb09uZVJlbGF0aW9uUHJvcCIsImlzUmVsYXRpb25Qcm9wIiwiUmVsYXRpb25HcmFwaCIsImdyYXBoIiwiTWFwIiwiYnVpbGRHcmFwaCIsImZpeHR1cmVzIiwiY2xlYXIiLCJmaXh0dXJlIiwic2V0IiwiZml4dHVyZUlkIiwiZW50aXR5SWQiLCJyZWxhdGVkIiwiU2V0Iiwibm9kZSIsImdldCIsInVuZGVmaW5lZCIsIkVycm9yIiwiY29sdW1uIiwiT2JqZWN0IiwiZW50cmllcyIsImNvbHVtbnMiLCJwcm9wIiwiaGFzSm9pbkNvbHVtbiIsInJlbGF0ZWRGaXh0dXJlSWQiLCJ3aXRoIiwidmFsdWUiLCJoYXMiLCJhZGQiLCJyZWxhdGVkSWRzIiwicmVsYXRlZElkIiwiZ2V0SW5zZXJ0aW9uT3JkZXIiLCJ2aXNpdGVkIiwib3JkZXIiLCJ0ZW1wVmlzaXRlZCIsInZpc2l0IiwiY29uc29sZSIsIndhcm4iLCJlbnRpdHkiLCJkZXBJZCIsImRlcE5vZGUiLCJyZWxhdGlvblByb3AiLCJwcm9wcyIsImZpbmQiLCJudWxsYWJsZSIsImRlbGV0ZSIsInB1c2giLCJrZXlzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxh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
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { type Knex } from "knex";
|
|
2
|
+
import type { SonamuDBConfig } from "../database/db";
|
|
3
|
+
import type { Entity } from "../entity/entity";
|
|
4
|
+
import { type FixtureImportResult, type FixtureRecord, type FixtureSearchOptions } from "../types/types";
|
|
5
|
+
/** 사용자 지정 중복 확인 컬럼 (entityId별로 지정) */
|
|
6
|
+
export interface DuplicateCheckOptions {
|
|
7
|
+
columns?: {
|
|
8
|
+
[entityId: string]: string[];
|
|
9
|
+
};
|
|
10
|
+
}
|
|
5
11
|
export declare class FixtureManagerClass {
|
|
6
12
|
private _tdb;
|
|
7
13
|
set tdb(tdb: Knex);
|
|
@@ -11,25 +17,50 @@ export declare class FixtureManagerClass {
|
|
|
11
17
|
get fdb(): Knex;
|
|
12
18
|
cachedTableNames: string[] | null;
|
|
13
19
|
private relationGraph;
|
|
20
|
+
private builder;
|
|
21
|
+
private fixtureRefMap;
|
|
22
|
+
private uuidToFixtureId;
|
|
23
|
+
private skippedFixtures;
|
|
14
24
|
init(): void;
|
|
15
|
-
cleanAndSeed(usingTables?: string[]): Promise<void>;
|
|
16
25
|
getChecksum(db: Knex, tableName: string): Promise<any>;
|
|
26
|
+
/**
|
|
27
|
+
이제 FixtureManager.sync() 는 checksum 비교 없이 create database template 으로 수행합니다.
|
|
28
|
+
*/
|
|
17
29
|
sync(): Promise<void>;
|
|
18
30
|
private visitedRecords;
|
|
19
31
|
importFixture(entityId: string, ids: number[]): Promise<void>;
|
|
20
32
|
getImportQueries(entityId: string, field: string, id: number): Promise<string[]>;
|
|
21
33
|
destroy(): Promise<void>;
|
|
22
|
-
getFixtures(sourceDBName: keyof SonamuDBConfig, targetDBName: keyof SonamuDBConfig, searchOptions: FixtureSearchOptions): Promise<FixtureRecord[]>;
|
|
23
|
-
createFixtureRecord(entity: Entity, row:
|
|
34
|
+
getFixtures(sourceDBName: keyof SonamuDBConfig, targetDBName: keyof SonamuDBConfig, searchOptions: FixtureSearchOptions, duplicateCheck?: DuplicateCheckOptions): Promise<FixtureRecord[]>;
|
|
35
|
+
createFixtureRecord(entity: Entity, row: {
|
|
36
|
+
id: number;
|
|
37
|
+
[key: string]: string | number | boolean | null;
|
|
38
|
+
}, options?: {
|
|
24
39
|
singleRecord?: boolean;
|
|
25
40
|
_db?: Knex;
|
|
26
41
|
}): Promise<FixtureRecord[]>;
|
|
42
|
+
/**
|
|
43
|
+
* 1. RelationGraph로 fixture 단위 삽입 순서 계산 (self-reference 포함)
|
|
44
|
+
* 2. 순서대로 UpsertBuilder에 등록 (UBRef로 참조 관계 표현)
|
|
45
|
+
* 3. 테이블별 upsert 실행 (ID는 DB가 자동 할당)
|
|
46
|
+
*/
|
|
27
47
|
insertFixtures(dbName: keyof SonamuDBConfig, _fixtures: FixtureRecord[]): Promise<FixtureImportResult[]>;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
48
|
+
/**
|
|
49
|
+
* FixtureRecord를 UpsertBuilder에 등록
|
|
50
|
+
*/
|
|
51
|
+
private registerFixture;
|
|
52
|
+
/**
|
|
53
|
+
* 컬럼 값 변환
|
|
54
|
+
*/
|
|
55
|
+
private convertColumnValue;
|
|
56
|
+
/**
|
|
57
|
+
* 테이블 순서 추출 (fixtures에 포함된 테이블만)
|
|
58
|
+
*/
|
|
59
|
+
private getTableOrder;
|
|
60
|
+
private processManyToManyRelations;
|
|
32
61
|
private checkUniqueViolation;
|
|
62
|
+
private checkDuplicateByColumns;
|
|
63
|
+
addFixtureLoader(code: string): Promise<void>;
|
|
33
64
|
}
|
|
34
65
|
export declare const FixtureManager: FixtureManagerClass;
|
|
35
66
|
//# sourceMappingURL=fixture-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture-manager.d.ts","sourceRoot":"","sources":["../../src/testing/fixture-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fixture-manager.d.ts","sourceRoot":"","sources":["../../src/testing/fixture-manager.ts"],"names":[],"mappings":"AAKA,OAAa,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAQ1B,MAAM,gBAAgB,CAAC;AAGxB,sCAAsC;AACtC,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE;QACR,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAAqB;IACjC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAEhB;IACD,IAAI,GAAG,IAAI,IAAI,CAKd;IAED,OAAO,CAAC,IAAI,CAAqB;IACjC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAEhB;IACD,IAAI,GAAG,IAAI,IAAI,CAKd;IACD,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAEzC,OAAO,CAAC,aAAa,CAAuB;IAG5C,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAoE;IAE3F,IAAI;IAuBE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM;IAK7C;;MAEE;IACI,IAAI;IAyCV,OAAO,CAAC,cAAc,CAAqB;IACrC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAwB7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2EhF,OAAO;IAYP,WAAW,CACf,YAAY,EAAE,MAAM,cAAc,EAClC,YAAY,EAAE,MAAM,cAAc,EAClC,aAAa,EAAE,oBAAoB,EACnC,cAAc,CAAC,EAAE,qBAAqB;IA+ElC,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;KACjD,EACD,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,GAAG,CAAC,EAAE,IAAI,CAAC;KACZ,GACA,OAAO,CAAC,aAAa,EAAE,CAAC;IAoF3B;;;;OAIG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,cAAc,EAC5B,SAAS,EAAE,aAAa,EAAE,GACzB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA2HjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAoEvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,aAAa;YAeP,0BAA0B;YAgF1B,oBAAoB;YA6CpB,uBAAuB;IA8B/B,gBAAgB,CAAC,IAAI,EAAE,MAAM;CAepC;AAED,eAAO,MAAM,cAAc,qBAA4B,CAAC"}
|