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
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BaseModel 타입 시스템
|
|
3
|
+
*
|
|
4
|
+
* BaseModelClass에서 사용하는 타입 유틸리티들.
|
|
5
|
+
* Enhancer, SubsetQuery 교집합 등 Model 계층에서 필요한 타입 정의.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { DatabaseSchemaExtend } from "../types/types";
|
|
9
|
+
import type { Puri } from "./puri";
|
|
10
|
+
import type { PuriSubsetFn } from "./puri-subset.types";
|
|
11
|
+
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Puri 테이블 추출 유틸리티
|
|
14
|
+
// ============================================================================
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Puri 인스턴스에서 TTables 타입 추출
|
|
18
|
+
*/
|
|
19
|
+
export type ExtractPuriTables<T> = T extends Puri<any, infer TTables, any> ? TTables : never;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* SubsetQueries에서 모든 TTables의 유니온 추출
|
|
23
|
+
* getSubsetQueries의 qb 타입 정의에 사용
|
|
24
|
+
*/
|
|
25
|
+
export type UnionExtractedTTables<
|
|
26
|
+
TSubsetKey extends string,
|
|
27
|
+
TSubsetQueries extends Record<TSubsetKey, PuriSubsetFn>,
|
|
28
|
+
> = ExtractPuriTables<ReturnType<TSubsetQueries[TSubsetKey]>>;
|
|
29
|
+
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Subset 교집합 계산 (onSubset 메서드용)
|
|
32
|
+
// ============================================================================
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 두 Puri의 테이블 교집합을 가진 새로운 Puri 생성
|
|
36
|
+
*/
|
|
37
|
+
type MergePuriTables<A, B, TA = ExtractPuriTables<A>, TB = ExtractPuriTables<B>> = Puri<
|
|
38
|
+
DatabaseSchemaExtend,
|
|
39
|
+
Pick<TA, Extract<keyof TA, keyof TB>>,
|
|
40
|
+
any
|
|
41
|
+
>;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* 서브셋 키 배열을 순회하며 테이블 교집합 Puri 계산
|
|
45
|
+
*
|
|
46
|
+
* onSubset(['A', 'P'])와 같이 여러 subset을 지정했을 때,
|
|
47
|
+
* 공통으로 사용 가능한 테이블만 포함된 Puri 타입 반환
|
|
48
|
+
*/
|
|
49
|
+
export type ResolveSubsetIntersection<
|
|
50
|
+
Keys extends readonly string[],
|
|
51
|
+
Queries extends Record<string, (...args: any) => any>,
|
|
52
|
+
> = Keys extends [infer Head extends string, ...infer Tail extends string[]]
|
|
53
|
+
? Tail extends []
|
|
54
|
+
? ReturnType<Queries[Head]>
|
|
55
|
+
: MergePuriTables<ReturnType<Queries[Head]>, ResolveSubsetIntersection<Tail, Queries>>
|
|
56
|
+
: never;
|
|
57
|
+
|
|
58
|
+
// ============================================================================
|
|
59
|
+
// Enhancer
|
|
60
|
+
// ============================================================================
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* 단일 Enhancer 함수 타입
|
|
64
|
+
* computed 결과를 받아 최종 mapping 타입으로 변환
|
|
65
|
+
*/
|
|
66
|
+
export type EnhancerFn<TComputed, TMapping> = (row: TComputed) => TMapping | Promise<TMapping>;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Enhancer가 필수인 SubsetKey 추출
|
|
70
|
+
*
|
|
71
|
+
* ComputedResults[K]가 SubsetMapping[K]에 할당 불가능하면 해당 K는 필수
|
|
72
|
+
* (즉, virtual 필드 등 추가 변환이 필요한 경우)
|
|
73
|
+
*/
|
|
74
|
+
export type RequiredEnhancerKeys<
|
|
75
|
+
TSubsetKey extends string,
|
|
76
|
+
TComputedResults extends Record<TSubsetKey, any>,
|
|
77
|
+
TSubsetMapping extends Record<TSubsetKey, any>,
|
|
78
|
+
> = {
|
|
79
|
+
[K in TSubsetKey]: TComputedResults[K] extends TSubsetMapping[K] ? never : K;
|
|
80
|
+
}[TSubsetKey];
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Enhancer 객체 타입 정의
|
|
84
|
+
*
|
|
85
|
+
* - ComputedResults[K]가 SubsetMapping[K]에 assignable하면 → enhancer 선택적
|
|
86
|
+
* - 그렇지 않으면 → enhancer 필수
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* // virtual 필드 employee_count가 있는 경우
|
|
90
|
+
* type Computed = { id: number; name: string }
|
|
91
|
+
* type Mapping = { id: number; name: string; employee_count: number }
|
|
92
|
+
* // → Enhancer 필수 (employee_count 계산 필요)
|
|
93
|
+
*/
|
|
94
|
+
export type EnhancerMap<
|
|
95
|
+
TSubsetKey extends string,
|
|
96
|
+
TComputedResults extends Record<TSubsetKey, any>,
|
|
97
|
+
TSubsetMapping extends Record<TSubsetKey, any>,
|
|
98
|
+
> = {
|
|
99
|
+
// Computed가 Mapping에 호환되면 선택적
|
|
100
|
+
[K in TSubsetKey as TComputedResults[K] extends TSubsetMapping[K] ? K : never]?: EnhancerFn<
|
|
101
|
+
TComputedResults[K],
|
|
102
|
+
TSubsetMapping[K]
|
|
103
|
+
>;
|
|
104
|
+
} & {
|
|
105
|
+
// 호환되지 않으면 필수
|
|
106
|
+
[K in TSubsetKey as TComputedResults[K] extends TSubsetMapping[K] ? never : K]: EnhancerFn<
|
|
107
|
+
TComputedResults[K],
|
|
108
|
+
TSubsetMapping[K]
|
|
109
|
+
>;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
// ============================================================================
|
|
113
|
+
// executeSubsetQuery
|
|
114
|
+
// ============================================================================
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* executeSubsetQuery 기본 파라미터
|
|
118
|
+
*/
|
|
119
|
+
export type ExecuteSubsetQueryBaseParams<TSubsetKey extends string> = {
|
|
120
|
+
subset: TSubsetKey;
|
|
121
|
+
qb: Puri<any, any, any>;
|
|
122
|
+
params: {
|
|
123
|
+
num?: number;
|
|
124
|
+
page?: number;
|
|
125
|
+
queryMode?: "list" | "count" | "both";
|
|
126
|
+
};
|
|
127
|
+
debug?: boolean;
|
|
128
|
+
optimizeCountQuery?: boolean;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* executeSubsetQuery 파라미터 (Enhancer 포함)
|
|
133
|
+
*
|
|
134
|
+
* RequiredEnhancerKeys가 없으면 enhancers 선택적, 있으면 필수
|
|
135
|
+
*/
|
|
136
|
+
export type ExecuteSubsetQueryParams<
|
|
137
|
+
TSubsetKey extends string,
|
|
138
|
+
TComputedResults extends Record<TSubsetKey, any>,
|
|
139
|
+
TSubsetMapping extends Record<TSubsetKey, any>,
|
|
140
|
+
T extends TSubsetKey,
|
|
141
|
+
> = ExecuteSubsetQueryBaseParams<T> &
|
|
142
|
+
([RequiredEnhancerKeys<TSubsetKey, TComputedResults, TSubsetMapping>] extends [never]
|
|
143
|
+
? { enhancers?: EnhancerMap<TSubsetKey, TComputedResults, TSubsetMapping> }
|
|
144
|
+
: { enhancers: EnhancerMap<TSubsetKey, TComputedResults, TSubsetMapping> });
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* executeSubsetQuery 반환 타입
|
|
148
|
+
*/
|
|
149
|
+
export type ExecuteSubsetQueryResult<
|
|
150
|
+
TSubsetMapping extends Record<string, any>,
|
|
151
|
+
T extends string,
|
|
152
|
+
> = {
|
|
153
|
+
rows: TSubsetMapping[T][];
|
|
154
|
+
total: number;
|
|
155
|
+
};
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import _ from "lodash";
|
|
2
1
|
import equal from "fast-deep-equal";
|
|
3
|
-
import {
|
|
2
|
+
import { diff } from "radashi";
|
|
3
|
+
import type { MigrationColumn, MigrationIndex } from "../types/types";
|
|
4
|
+
import { differenceWith, intersectionBy } from "../utils/utils";
|
|
4
5
|
|
|
5
6
|
export class CodeGenerator {
|
|
6
|
-
getAlterColumnsTo(
|
|
7
|
-
entityColumns: MigrationColumn[],
|
|
8
|
-
dbColumns: MigrationColumn[]
|
|
9
|
-
) {
|
|
7
|
+
getAlterColumnsTo(entityColumns: MigrationColumn[], dbColumns: MigrationColumn[]) {
|
|
10
8
|
const columnsTo = {
|
|
11
9
|
add: [] as MigrationColumn[],
|
|
12
10
|
drop: [] as MigrationColumn[],
|
|
@@ -15,8 +13,8 @@ export class CodeGenerator {
|
|
|
15
13
|
|
|
16
14
|
// 컬럼명 기준 비교
|
|
17
15
|
const extraColumns = {
|
|
18
|
-
db:
|
|
19
|
-
entity:
|
|
16
|
+
db: diff(dbColumns, entityColumns, (col) => col.name),
|
|
17
|
+
entity: diff(entityColumns, dbColumns, (col) => col.name),
|
|
20
18
|
};
|
|
21
19
|
if (extraColumns.entity.length > 0) {
|
|
22
20
|
columnsTo.add = columnsTo.add.concat(extraColumns.entity);
|
|
@@ -26,39 +24,22 @@ export class CodeGenerator {
|
|
|
26
24
|
}
|
|
27
25
|
|
|
28
26
|
// 동일 컬럼명의 세부 필드 비교
|
|
29
|
-
const sameDbColumns =
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
(col) => col.name
|
|
33
|
-
);
|
|
34
|
-
const sameMdColumns = _.intersectionBy(
|
|
35
|
-
entityColumns,
|
|
36
|
-
dbColumns,
|
|
37
|
-
(col) => col.name
|
|
38
|
-
);
|
|
39
|
-
columnsTo.alter = _.differenceWith(sameDbColumns, sameMdColumns, (a, b) =>
|
|
40
|
-
equal(a, b)
|
|
41
|
-
);
|
|
27
|
+
const sameDbColumns = intersectionBy(dbColumns, entityColumns, (col) => col.name);
|
|
28
|
+
const sameMdColumns = intersectionBy(entityColumns, dbColumns, (col) => col.name);
|
|
29
|
+
columnsTo.alter = differenceWith(sameDbColumns, sameMdColumns, (a, b) => equal(a, b));
|
|
42
30
|
|
|
43
31
|
return columnsTo;
|
|
44
32
|
}
|
|
45
33
|
|
|
46
|
-
getAlterIndexesTo(
|
|
47
|
-
entityIndexes: MigrationIndex[],
|
|
48
|
-
dbIndexes: MigrationIndex[]
|
|
49
|
-
) {
|
|
34
|
+
getAlterIndexesTo(entityIndexes: MigrationIndex[], dbIndexes: MigrationIndex[]) {
|
|
50
35
|
// 인덱스 비교
|
|
51
|
-
|
|
36
|
+
const indexesTo = {
|
|
52
37
|
add: [] as MigrationIndex[],
|
|
53
38
|
drop: [] as MigrationIndex[],
|
|
54
39
|
};
|
|
55
40
|
const extraIndexes = {
|
|
56
|
-
db:
|
|
57
|
-
|
|
58
|
-
),
|
|
59
|
-
entity: _.differenceBy(entityIndexes, dbIndexes, (col) =>
|
|
60
|
-
[col.type, col.columns.join("-")].join("//")
|
|
61
|
-
),
|
|
41
|
+
db: diff(dbIndexes, entityIndexes, (col) => [col.type, col.columns.join("-")].join("//")),
|
|
42
|
+
entity: diff(entityIndexes, dbIndexes, (col) => [col.type, col.columns.join("-")].join("//")),
|
|
62
43
|
};
|
|
63
44
|
if (extraIndexes.entity.length > 0) {
|
|
64
45
|
indexesTo.add = indexesTo.add.concat(extraIndexes.entity);
|
package/src/database/db.ts
CHANGED
|
@@ -1,44 +1,22 @@
|
|
|
1
|
-
export type DBPreset = "w" | "r";
|
|
2
|
-
import knex, { Knex } from "knex";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import _ from "lodash";
|
|
5
|
-
import { Sonamu } from "../api";
|
|
6
|
-
import { ServiceUnavailableException } from "../exceptions/so-exceptions";
|
|
7
1
|
import { AsyncLocalStorage } from "async_hooks";
|
|
2
|
+
import knex, { type Knex } from "knex";
|
|
3
|
+
import { assign } from "radashi";
|
|
4
|
+
import { Sonamu } from "../api";
|
|
5
|
+
import type { DatabaseConfig, SonamuConfig } from "../api/config";
|
|
8
6
|
import { TransactionContext } from "./transaction-context";
|
|
9
7
|
|
|
10
|
-
type
|
|
11
|
-
connection?: Knex.MySql2ConnectionConfig;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export type SonamuDBBaseConfig = {
|
|
15
|
-
// 기본 데이터베이스 이름
|
|
16
|
-
database: string;
|
|
17
|
-
|
|
18
|
-
// 모든 환경에 적용될 기본 Knex 옵션
|
|
19
|
-
defaultOptions?: MySQLConfig;
|
|
20
|
-
|
|
21
|
-
// 환경별 설정
|
|
22
|
-
environments?: {
|
|
23
|
-
development?: MySQLConfig;
|
|
24
|
-
development_slave?: MySQLConfig;
|
|
25
|
-
production?: MySQLConfig;
|
|
26
|
-
production_slave?: MySQLConfig;
|
|
27
|
-
remote_fixture?: MySQLConfig;
|
|
28
|
-
};
|
|
29
|
-
};
|
|
8
|
+
export type DBPreset = "w" | "r";
|
|
30
9
|
|
|
31
10
|
export type SonamuDBConfig = {
|
|
32
11
|
development_master: Knex.Config;
|
|
33
12
|
development_slave: Knex.Config;
|
|
34
13
|
test: Knex.Config;
|
|
35
|
-
fixture_local: Knex.Config;
|
|
36
14
|
fixture_remote: Knex.Config;
|
|
37
15
|
production_master: Knex.Config;
|
|
38
16
|
production_slave: Knex.Config;
|
|
39
17
|
};
|
|
40
18
|
|
|
41
|
-
class DBClass {
|
|
19
|
+
export class DBClass {
|
|
42
20
|
private wdb?: Knex;
|
|
43
21
|
private rdb?: Knex;
|
|
44
22
|
|
|
@@ -52,25 +30,6 @@ class DBClass {
|
|
|
52
30
|
return this.transactionStorage.getStore() ?? new TransactionContext();
|
|
53
31
|
}
|
|
54
32
|
|
|
55
|
-
async readKnexfile(): Promise<SonamuDBConfig> {
|
|
56
|
-
const dbConfigPath: string = path.join(
|
|
57
|
-
Sonamu.apiRootPath,
|
|
58
|
-
"/dist/configs/db.js"
|
|
59
|
-
);
|
|
60
|
-
try {
|
|
61
|
-
const knexfileModule = await import(dbConfigPath);
|
|
62
|
-
const config =
|
|
63
|
-
knexfileModule.default?.default ??
|
|
64
|
-
knexfileModule.default ??
|
|
65
|
-
knexfileModule;
|
|
66
|
-
return this.generateDBConfig(config);
|
|
67
|
-
} catch {}
|
|
68
|
-
|
|
69
|
-
throw new ServiceUnavailableException(
|
|
70
|
-
`다음 경로에서 DB설정 파일을 찾을 수 없습니다: ${dbConfigPath}. 먼저 빌드(yarn build)를 수행해주세요.`
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
33
|
getDB(which: DBPreset): Knex {
|
|
75
34
|
const dbConfig = Sonamu.dbConfig;
|
|
76
35
|
|
|
@@ -81,15 +40,15 @@ class DBClass {
|
|
|
81
40
|
} else if (this.wdb) {
|
|
82
41
|
return this.wdb;
|
|
83
42
|
} else {
|
|
84
|
-
this
|
|
85
|
-
...dbConfig
|
|
43
|
+
this.wdb = knex({
|
|
44
|
+
...dbConfig.test,
|
|
86
45
|
// 단일 풀
|
|
87
46
|
pool: {
|
|
88
47
|
min: 1,
|
|
89
48
|
max: 1,
|
|
90
49
|
},
|
|
91
50
|
});
|
|
92
|
-
return this
|
|
51
|
+
return this.wdb;
|
|
93
52
|
}
|
|
94
53
|
}
|
|
95
54
|
|
|
@@ -102,25 +61,22 @@ class DBClass {
|
|
|
102
61
|
case "staging":
|
|
103
62
|
config =
|
|
104
63
|
which === "w"
|
|
105
|
-
? dbConfig
|
|
106
|
-
: (dbConfig
|
|
107
|
-
dbConfig["development_master"]);
|
|
64
|
+
? dbConfig.development_master
|
|
65
|
+
: (dbConfig.development_slave ?? dbConfig.development_master);
|
|
108
66
|
break;
|
|
109
67
|
case "production":
|
|
110
68
|
config =
|
|
111
69
|
which === "w"
|
|
112
|
-
? dbConfig
|
|
113
|
-
: (dbConfig
|
|
70
|
+
? dbConfig.production_master
|
|
71
|
+
: (dbConfig.production_slave ?? dbConfig.production_master);
|
|
114
72
|
break;
|
|
115
73
|
default:
|
|
116
|
-
throw new Error(
|
|
117
|
-
`현재 ENV ${process.env.NODE_ENV}에는 설정 가능한 DB설정이 없습니다.`
|
|
118
|
-
);
|
|
74
|
+
throw new Error(`현재 ENV ${process.env.NODE_ENV}에는 설정 가능한 DB설정이 없습니다.`);
|
|
119
75
|
}
|
|
120
76
|
this[instanceName] = knex(config);
|
|
121
77
|
}
|
|
122
78
|
|
|
123
|
-
return this[instanceName]
|
|
79
|
+
return this[instanceName];
|
|
124
80
|
}
|
|
125
81
|
|
|
126
82
|
async destroy(): Promise<void> {
|
|
@@ -134,37 +90,29 @@ class DBClass {
|
|
|
134
90
|
}
|
|
135
91
|
}
|
|
136
92
|
|
|
137
|
-
|
|
138
|
-
const defaultKnexConfig: Partial<
|
|
93
|
+
public generateDBConfig(config: SonamuConfig["database"]): SonamuDBConfig {
|
|
94
|
+
const defaultKnexConfig: Partial<DatabaseConfig> = assign(
|
|
139
95
|
{
|
|
140
|
-
client: "
|
|
96
|
+
client: "pg",
|
|
141
97
|
pool: {
|
|
142
98
|
min: 1,
|
|
143
99
|
max: 5,
|
|
144
100
|
},
|
|
145
101
|
migrations: {
|
|
146
|
-
|
|
147
|
-
directory: "./dist/migrations",
|
|
102
|
+
directory: "./src/migrations",
|
|
148
103
|
},
|
|
149
104
|
connection: {
|
|
150
|
-
database: config.
|
|
105
|
+
database: config.name,
|
|
151
106
|
...config.defaultOptions?.connection,
|
|
152
107
|
},
|
|
153
108
|
},
|
|
154
|
-
config.defaultOptions
|
|
109
|
+
config.defaultOptions,
|
|
155
110
|
);
|
|
156
111
|
|
|
157
112
|
// 로컬 환경 설정
|
|
158
|
-
const test:
|
|
159
|
-
connection: {
|
|
160
|
-
database: `${config.database}_test`,
|
|
161
|
-
...config.defaultOptions?.connection,
|
|
162
|
-
},
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
const fixture_local = _.merge({}, defaultKnexConfig, {
|
|
113
|
+
const test: DatabaseConfig = assign(defaultKnexConfig, {
|
|
166
114
|
connection: {
|
|
167
|
-
database: `${config.
|
|
115
|
+
database: `${config.name}_test`,
|
|
168
116
|
...config.defaultOptions?.connection,
|
|
169
117
|
},
|
|
170
118
|
});
|
|
@@ -172,40 +120,32 @@ class DBClass {
|
|
|
172
120
|
// 개발 환경 설정
|
|
173
121
|
const devMasterOptions = config.environments?.development;
|
|
174
122
|
const devSlaveOptions = config.environments?.development_slave;
|
|
175
|
-
const development_master =
|
|
176
|
-
const development_slave =
|
|
177
|
-
{},
|
|
178
|
-
|
|
179
|
-
devMasterOptions,
|
|
180
|
-
devSlaveOptions
|
|
123
|
+
const development_master = assign(defaultKnexConfig, devMasterOptions ?? {});
|
|
124
|
+
const development_slave = assign(
|
|
125
|
+
assign(defaultKnexConfig, devMasterOptions ?? {}),
|
|
126
|
+
devSlaveOptions ?? {},
|
|
181
127
|
);
|
|
182
128
|
// NOTE: fixture remote는 default connection의 DB를 override해선 안됨.
|
|
183
|
-
const fixture_remote =
|
|
184
|
-
{},
|
|
185
|
-
defaultKnexConfig,
|
|
186
|
-
devMasterOptions,
|
|
187
|
-
{
|
|
129
|
+
const fixture_remote = assign(
|
|
130
|
+
assign(assign(defaultKnexConfig, devMasterOptions ?? {}), {
|
|
188
131
|
connection: {
|
|
189
|
-
database: `${config.
|
|
132
|
+
database: `${config.name}_fixture_remote`,
|
|
190
133
|
},
|
|
191
|
-
},
|
|
192
|
-
config.environments?.remote_fixture
|
|
134
|
+
}),
|
|
135
|
+
config.environments?.remote_fixture ?? {},
|
|
193
136
|
);
|
|
194
137
|
|
|
195
138
|
// 프로덕션 환경 설정
|
|
196
139
|
const prodMasterOptions = config.environments?.production ?? {};
|
|
197
140
|
const prodSlaveOptions = config.environments?.production_slave ?? {};
|
|
198
|
-
const production_master =
|
|
199
|
-
const production_slave =
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
prodMasterOptions,
|
|
203
|
-
prodSlaveOptions
|
|
141
|
+
const production_master = assign(defaultKnexConfig, prodMasterOptions);
|
|
142
|
+
const production_slave = assign(
|
|
143
|
+
assign(defaultKnexConfig, prodMasterOptions),
|
|
144
|
+
prodSlaveOptions ?? {},
|
|
204
145
|
);
|
|
205
146
|
|
|
206
147
|
return {
|
|
207
148
|
test,
|
|
208
|
-
fixture_local,
|
|
209
149
|
fixture_remote,
|
|
210
150
|
development_master,
|
|
211
151
|
development_slave,
|
|
@@ -225,5 +165,9 @@ class DBClass {
|
|
|
225
165
|
await this.testTransaction?.rollback();
|
|
226
166
|
this.testTransaction = null;
|
|
227
167
|
}
|
|
168
|
+
async getTestConnection(): Promise<Knex> {
|
|
169
|
+
const db = this.getDB("w");
|
|
170
|
+
return db;
|
|
171
|
+
}
|
|
228
172
|
}
|
|
229
173
|
export const DB = new DBClass();
|