sonamu 0.6.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.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 +227 -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 +386 -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 +55 -30
- 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 +261 -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 +459 -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,14 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { UBRef, UpsertBuilder } from "./upsert-builder";
|
|
4
|
-
import { DatabaseSchemaExtend } from "../types/types";
|
|
1
|
+
/** biome-ignore-all lint/suspicious/noExplicitAny: PuriWrapper는 다양한 타입을 사용하고 있습니다. */
|
|
2
|
+
|
|
5
3
|
import chalk from "chalk";
|
|
6
|
-
import {
|
|
4
|
+
import type { Knex } from "knex";
|
|
5
|
+
import type { DatabaseSchemaExtend } from "../types/types";
|
|
6
|
+
import type { DBPreset } from "./db";
|
|
7
|
+
import { Puri } from "./puri";
|
|
8
|
+
import type { ColumnKeys, OmitMetadataColumns, PuriTable } from "./puri.types";
|
|
9
|
+
import type { UBRef, UpsertBuilder } from "./upsert-builder";
|
|
7
10
|
|
|
8
|
-
type TableName<TSchema extends DatabaseSchemaExtend> = Extract<
|
|
9
|
-
keyof TSchema,
|
|
10
|
-
string
|
|
11
|
-
>;
|
|
11
|
+
type TableName<TSchema extends DatabaseSchemaExtend> = Extract<keyof TSchema, string>;
|
|
12
12
|
|
|
13
13
|
export type TransactionalOptions = {
|
|
14
14
|
isolation?: Exclude<Knex.IsolationLevels, "snapshot">; // snapshot: mssql only
|
|
@@ -16,12 +16,10 @@ export type TransactionalOptions = {
|
|
|
16
16
|
readOnly?: boolean;
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
export class PuriWrapper<
|
|
20
|
-
TSchema extends DatabaseSchemaExtend = DatabaseSchemaExtend,
|
|
21
|
-
> {
|
|
19
|
+
export class PuriWrapper<TSchema extends DatabaseSchemaExtend = DatabaseSchemaExtend> {
|
|
22
20
|
constructor(
|
|
23
21
|
public knex: Knex,
|
|
24
|
-
public upsertBuilder: UpsertBuilder
|
|
22
|
+
public upsertBuilder: UpsertBuilder,
|
|
25
23
|
) {}
|
|
26
24
|
|
|
27
25
|
raw(sql: string): Knex.Raw {
|
|
@@ -30,27 +28,31 @@ export class PuriWrapper<
|
|
|
30
28
|
|
|
31
29
|
// 테이블명으로 시작
|
|
32
30
|
from<TTable extends keyof TSchema>(
|
|
33
|
-
tableName: TTable
|
|
31
|
+
tableName: TTable,
|
|
34
32
|
): Puri<
|
|
35
33
|
TSchema,
|
|
36
|
-
Record<TTable, TSchema[TTable]
|
|
37
|
-
|
|
34
|
+
Record<TTable, PuriTable<TSchema[TTable]>>,
|
|
35
|
+
OmitMetadataColumns<PuriTable<TSchema[TTable]>>
|
|
38
36
|
>;
|
|
39
37
|
// 테이블명 + Alias로 시작
|
|
40
|
-
from<TTable extends keyof TSchema, TAlias extends string>(
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
from<TTable extends keyof TSchema, TAlias extends string>(
|
|
39
|
+
spec: {
|
|
40
|
+
[K in TAlias]: TTable;
|
|
41
|
+
},
|
|
42
|
+
): Puri<
|
|
43
43
|
TSchema,
|
|
44
|
-
Record<TAlias, TSchema[TTable]
|
|
45
|
-
|
|
44
|
+
Record<TAlias, PuriTable<TSchema[TTable]>>,
|
|
45
|
+
OmitMetadataColumns<PuriTable<TSchema[TTable]>>
|
|
46
46
|
>;
|
|
47
47
|
// 서브쿼리로 시작
|
|
48
|
-
from<TAlias extends string, TSubResult>(
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
from<TAlias extends string, TSubResult>(
|
|
49
|
+
spec: {
|
|
50
|
+
[K in TAlias]: Puri<TSchema, any, TSubResult>;
|
|
51
|
+
},
|
|
52
|
+
): Puri<
|
|
51
53
|
TSchema,
|
|
52
|
-
Record<TAlias, TSubResult
|
|
53
|
-
|
|
54
|
+
Record<TAlias, PuriTable<TSubResult>>,
|
|
55
|
+
OmitMetadataColumns<PuriTable<TSubResult>>
|
|
54
56
|
>;
|
|
55
57
|
from(spec: any): any {
|
|
56
58
|
return new Puri(this.knex, spec);
|
|
@@ -58,27 +60,31 @@ export class PuriWrapper<
|
|
|
58
60
|
|
|
59
61
|
// 테이블명으로 시작
|
|
60
62
|
table<TTable extends keyof TSchema>(
|
|
61
|
-
tableName: TTable
|
|
63
|
+
tableName: TTable,
|
|
62
64
|
): Puri<
|
|
63
65
|
TSchema,
|
|
64
|
-
Record<TTable, TSchema[TTable]
|
|
65
|
-
|
|
66
|
+
Record<TTable, PuriTable<TSchema[TTable]>>,
|
|
67
|
+
OmitMetadataColumns<PuriTable<TSchema[TTable]>>
|
|
66
68
|
>;
|
|
67
69
|
// 테이블명 + Alias로 시작
|
|
68
|
-
table<TTable extends keyof TSchema, TAlias extends string>(
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
table<TTable extends keyof TSchema, TAlias extends string>(
|
|
71
|
+
spec: {
|
|
72
|
+
[K in TAlias]: TTable;
|
|
73
|
+
},
|
|
74
|
+
): Puri<
|
|
71
75
|
TSchema,
|
|
72
|
-
Record<TAlias, TSchema[TTable]
|
|
73
|
-
|
|
76
|
+
Record<TAlias, PuriTable<TSchema[TTable]>>,
|
|
77
|
+
OmitMetadataColumns<PuriTable<TSchema[TTable]>>
|
|
74
78
|
>;
|
|
75
79
|
// 서브쿼리로 시작
|
|
76
|
-
table<TAlias extends string, TSubResult>(
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
table<TAlias extends string, TSubResult>(
|
|
81
|
+
spec: {
|
|
82
|
+
[K in TAlias]: Puri<TSchema, any, TSubResult>;
|
|
83
|
+
},
|
|
84
|
+
): Puri<
|
|
79
85
|
TSchema,
|
|
80
|
-
Record<TAlias, TSubResult
|
|
81
|
-
|
|
86
|
+
Record<TAlias, PuriTable<TSubResult>>,
|
|
87
|
+
OmitMetadataColumns<PuriTable<TSubResult>>
|
|
82
88
|
>;
|
|
83
89
|
table(spec: any): any {
|
|
84
90
|
return new Puri(this.knex, spec);
|
|
@@ -86,7 +92,7 @@ export class PuriWrapper<
|
|
|
86
92
|
|
|
87
93
|
async transaction<T>(
|
|
88
94
|
callback: (trx: PuriTransactionWrapper) => Promise<T>,
|
|
89
|
-
options: TransactionalOptions = {}
|
|
95
|
+
options: TransactionalOptions = {},
|
|
90
96
|
): Promise<T> {
|
|
91
97
|
const { isolation, readOnly, dbPreset = "w" } = options;
|
|
92
98
|
|
|
@@ -97,7 +103,7 @@ export class PuriWrapper<
|
|
|
97
103
|
// AsyncLocalStorage 컨텍스트가 없거나 해당 preset의 트랜잭션이 없으면 새로 시작
|
|
98
104
|
const startTransaction = async (
|
|
99
105
|
knex: Knex | Knex.Transaction,
|
|
100
|
-
upsertBuilder: UpsertBuilder
|
|
106
|
+
upsertBuilder: UpsertBuilder,
|
|
101
107
|
) => {
|
|
102
108
|
return knex.transaction(
|
|
103
109
|
async (trx) => {
|
|
@@ -113,15 +119,13 @@ export class PuriWrapper<
|
|
|
113
119
|
DB.getTransactionContext().deleteTransaction(dbPreset);
|
|
114
120
|
}
|
|
115
121
|
},
|
|
116
|
-
{ isolationLevel: isolation, readOnly }
|
|
122
|
+
{ isolationLevel: isolation, readOnly },
|
|
117
123
|
);
|
|
118
124
|
};
|
|
119
125
|
|
|
120
126
|
// AsyncLocalStorage 컨텍스트가 없으면 새로 생성
|
|
121
127
|
if (!existingContext) {
|
|
122
|
-
return DB.runWithTransaction(() =>
|
|
123
|
-
startTransaction(this.knex, this.upsertBuilder)
|
|
124
|
-
);
|
|
128
|
+
return DB.runWithTransaction(() => startTransaction(this.knex, this.upsertBuilder));
|
|
125
129
|
}
|
|
126
130
|
|
|
127
131
|
// 해당 preset의 트랜잭션이 이미 있으면 SAVEPOINT로 중첩 트랜잭션 생성
|
|
@@ -137,42 +141,31 @@ export class PuriWrapper<
|
|
|
137
141
|
ubRegister<TTable extends TableName<TSchema>>(
|
|
138
142
|
tableName: TTable,
|
|
139
143
|
row: Partial<{
|
|
140
|
-
[K in
|
|
141
|
-
}
|
|
144
|
+
[K in ColumnKeys<TSchema[TTable]>]: TSchema[TTable][K] | UBRef;
|
|
145
|
+
}>,
|
|
142
146
|
): UBRef {
|
|
143
147
|
return this.upsertBuilder.register(tableName, row);
|
|
144
148
|
}
|
|
145
149
|
|
|
146
|
-
ubUpsert(
|
|
147
|
-
tableName: TableName<TSchema>,
|
|
148
|
-
chunkSize?: number
|
|
149
|
-
): Promise<number[]> {
|
|
150
|
+
ubUpsert(tableName: TableName<TSchema>, chunkSize?: number): Promise<number[]> {
|
|
150
151
|
return this.upsertBuilder.upsert(this.knex, tableName, chunkSize);
|
|
151
152
|
}
|
|
152
153
|
|
|
153
|
-
ubInsertOnly(
|
|
154
|
-
tableName: TableName<TSchema>,
|
|
155
|
-
chunkSize?: number
|
|
156
|
-
): Promise<number[]> {
|
|
154
|
+
ubInsertOnly(tableName: TableName<TSchema>, chunkSize?: number): Promise<number[]> {
|
|
157
155
|
return this.upsertBuilder.insertOnly(this.knex, tableName, chunkSize);
|
|
158
156
|
}
|
|
159
157
|
|
|
160
158
|
ubUpsertOrInsert(
|
|
161
159
|
tableName: TableName<TSchema>,
|
|
162
160
|
mode: "upsert" | "insert",
|
|
163
|
-
chunkSize?: number
|
|
161
|
+
chunkSize?: number,
|
|
164
162
|
): Promise<number[]> {
|
|
165
|
-
return this.upsertBuilder.upsertOrInsert(
|
|
166
|
-
this.knex,
|
|
167
|
-
tableName,
|
|
168
|
-
mode,
|
|
169
|
-
chunkSize
|
|
170
|
-
);
|
|
163
|
+
return this.upsertBuilder.upsertOrInsert(this.knex, tableName, mode, chunkSize);
|
|
171
164
|
}
|
|
172
165
|
|
|
173
166
|
ubUpdateBatch(
|
|
174
167
|
tableName: TableName<TSchema>,
|
|
175
|
-
options?: { chunkSize?: number; where?: string | string[] }
|
|
168
|
+
options?: { chunkSize?: number; where?: string | string[] },
|
|
176
169
|
): Promise<void> {
|
|
177
170
|
return this.upsertBuilder.updateBatch(this.knex, tableName, options);
|
|
178
171
|
}
|
|
@@ -185,9 +178,7 @@ export class PuriWrapper<
|
|
|
185
178
|
|
|
186
179
|
private async getTransactionInfo(): Promise<string> {
|
|
187
180
|
// 연결 ID 조회
|
|
188
|
-
const [connectionIdRows] = await this.knex.raw(
|
|
189
|
-
`SELECT CONNECTION_ID() as connection_id`
|
|
190
|
-
);
|
|
181
|
+
const [connectionIdRows] = await this.knex.raw(`SELECT CONNECTION_ID() as connection_id`);
|
|
191
182
|
const connectionId = connectionIdRows[0].connection_id;
|
|
192
183
|
|
|
193
184
|
// 트랜잭션 정보 조회
|
|
@@ -212,7 +203,7 @@ export class PuriWrapper<
|
|
|
212
203
|
export class PuriTransactionWrapper extends PuriWrapper {
|
|
213
204
|
constructor(
|
|
214
205
|
public trx: Knex.Transaction,
|
|
215
|
-
public upsertBuilder: UpsertBuilder
|
|
206
|
+
public upsertBuilder: UpsertBuilder,
|
|
216
207
|
) {
|
|
217
208
|
super(trx, upsertBuilder);
|
|
218
209
|
}
|