sonamu 0.4.14 → 0.5.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 +15 -0
- package/dist/api/base-frame.d.ts +8 -0
- package/dist/api/base-frame.d.ts.map +1 -0
- package/dist/api/base-frame.js +2 -0
- package/dist/api/base-frame.js.map +1 -0
- package/dist/api/caster.d.ts +5 -0
- package/dist/api/caster.d.ts.map +1 -0
- package/dist/api/caster.js +2 -0
- package/dist/api/caster.js.map +1 -0
- package/dist/api/code-converters.d.ts +23 -0
- package/dist/api/code-converters.d.ts.map +1 -0
- package/dist/api/code-converters.js +2 -0
- package/dist/api/code-converters.js.map +1 -0
- package/dist/api/context.d.ts +19 -0
- package/dist/api/context.d.ts.map +1 -0
- package/dist/api/context.js +2 -0
- package/dist/api/context.js.map +1 -0
- package/dist/api/decorators.d.ts +50 -0
- package/dist/api/decorators.d.ts.map +1 -0
- package/dist/api/decorators.js +2 -0
- package/dist/api/decorators.js.map +1 -0
- package/dist/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/sonamu.d.ts +84 -0
- package/dist/api/sonamu.d.ts.map +1 -0
- package/dist/api/sonamu.js +2 -0
- package/dist/api/sonamu.js.map +1 -0
- package/dist/bin/build-config.d.ts +9 -0
- package/dist/bin/build-config.d.ts.map +1 -0
- package/dist/bin/build-config.js +2 -0
- package/dist/bin/build-config.js.map +1 -0
- package/dist/bin/cli-wrapper.d.ts +2 -0
- package/dist/bin/cli-wrapper.d.ts.map +1 -0
- package/dist/bin/cli-wrapper.js +1 -38
- package/dist/bin/cli-wrapper.js.map +1 -1
- package/dist/bin/cli.d.ts +2 -2
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +1 -903
- package/dist/bin/cli.js.map +1 -1
- package/dist/database/_batch_update.d.ts +15 -0
- package/dist/database/_batch_update.d.ts.map +1 -0
- package/dist/database/_batch_update.js +2 -0
- package/dist/database/_batch_update.js.map +1 -0
- package/dist/database/base-model.d.ts +48 -0
- package/dist/database/base-model.d.ts.map +1 -0
- package/dist/database/base-model.js +2 -0
- package/dist/database/base-model.js.map +1 -0
- package/dist/database/code-generator.d.ts +13 -0
- package/dist/database/code-generator.d.ts.map +1 -0
- package/dist/database/code-generator.js +2 -0
- package/dist/database/code-generator.js.map +1 -0
- package/dist/database/db.d.ts +40 -0
- package/dist/database/db.d.ts.map +1 -0
- package/dist/database/db.js +2 -0
- package/dist/database/db.js.map +1 -0
- package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts +2 -0
- package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts.map +1 -0
- package/dist/database/knex-plugins/knex-on-duplicate-update.js +2 -0
- package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +1 -0
- package/dist/database/puri-wrapper.d.ts +34 -0
- package/dist/database/puri-wrapper.d.ts.map +1 -0
- package/dist/database/puri-wrapper.js +2 -0
- package/dist/database/puri-wrapper.js.map +1 -0
- package/dist/database/puri.d.ts +83 -0
- package/dist/database/puri.d.ts.map +1 -0
- package/dist/database/puri.js +2 -0
- package/dist/database/puri.js.map +1 -0
- package/dist/database/puri.types.d.ts +60 -0
- package/dist/database/puri.types.d.ts.map +1 -0
- package/dist/database/puri.types.js +2 -0
- package/dist/database/puri.types.js.map +1 -0
- package/dist/database/transaction-context.d.ts +9 -0
- package/dist/database/transaction-context.d.ts.map +1 -0
- package/dist/database/transaction-context.js +2 -0
- package/dist/database/transaction-context.js.map +1 -0
- package/dist/database/upsert-builder.d.ts +34 -0
- package/dist/database/upsert-builder.d.ts.map +1 -0
- package/dist/database/upsert-builder.js +2 -0
- package/dist/database/upsert-builder.js.map +1 -0
- package/dist/entity/entity-manager.d.ts +32 -0
- package/dist/entity/entity-manager.d.ts.map +1 -0
- package/dist/entity/entity-manager.js +2 -0
- package/dist/entity/entity-manager.js.map +1 -0
- package/dist/entity/entity-utils.d.ts +61 -0
- package/dist/entity/entity-utils.d.ts.map +1 -0
- package/dist/entity/entity-utils.js +2 -0
- package/dist/entity/entity-utils.js.map +1 -0
- package/dist/entity/entity.d.ts +62 -0
- package/dist/entity/entity.d.ts.map +1 -0
- package/dist/entity/entity.js +2 -0
- package/dist/entity/entity.js.map +1 -0
- package/dist/entity/migrator.d.ts +135 -0
- package/dist/entity/migrator.d.ts.map +1 -0
- package/dist/entity/migrator.js +2 -0
- package/dist/entity/migrator.js.map +1 -0
- package/dist/exceptions/error-handler.d.ts +3 -0
- package/dist/exceptions/error-handler.d.ts.map +1 -0
- package/dist/exceptions/error-handler.js +2 -0
- package/dist/exceptions/error-handler.js.map +1 -0
- package/dist/exceptions/so-exceptions.d.ts +48 -0
- package/dist/exceptions/so-exceptions.d.ts.map +1 -0
- package/dist/exceptions/so-exceptions.js +2 -0
- package/dist/exceptions/so-exceptions.js.map +1 -0
- package/dist/file-storage/driver.d.ts +48 -0
- package/dist/file-storage/driver.d.ts.map +1 -0
- package/dist/file-storage/driver.js +2 -0
- package/dist/file-storage/driver.js.map +1 -0
- package/dist/file-storage/file-storage.d.ts +50 -0
- package/dist/file-storage/file-storage.d.ts.map +1 -0
- package/dist/file-storage/file-storage.js +2 -0
- package/dist/file-storage/file-storage.js.map +1 -0
- package/dist/index.d.ts +23 -813
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -433
- package/dist/index.js.map +1 -1
- package/dist/migration/code-generation.d.ts +15 -0
- package/dist/migration/code-generation.d.ts.map +1 -0
- package/dist/migration/code-generation.js +2 -0
- package/dist/migration/code-generation.js.map +1 -0
- package/dist/migration/migration-set.d.ts +17 -0
- package/dist/migration/migration-set.d.ts.map +1 -0
- package/dist/migration/migration-set.js +2 -0
- package/dist/migration/migration-set.js.map +1 -0
- package/dist/migration/migrator.d.ts +130 -0
- package/dist/migration/migrator.d.ts.map +1 -0
- package/dist/migration/migrator.js +2 -0
- package/dist/migration/migrator.js.map +1 -0
- package/dist/migration/types.d.ts +52 -0
- package/dist/migration/types.d.ts.map +1 -0
- package/dist/migration/types.js +2 -0
- package/dist/migration/types.js.map +1 -0
- package/dist/stream/index.d.ts +2 -0
- package/dist/stream/index.d.ts.map +1 -0
- package/dist/stream/index.js +2 -0
- package/dist/stream/index.js.map +1 -0
- package/dist/stream/sse.d.ts +13 -0
- package/dist/stream/sse.d.ts.map +1 -0
- package/dist/stream/sse.js +2 -0
- package/dist/stream/sse.js.map +1 -0
- package/dist/syncer/index.d.ts +2 -0
- package/dist/syncer/index.d.ts.map +1 -0
- package/dist/syncer/index.js +2 -0
- package/dist/syncer/index.js.map +1 -0
- package/dist/syncer/syncer.d.ts +127 -0
- package/dist/syncer/syncer.d.ts.map +1 -0
- package/dist/syncer/syncer.js +2 -0
- package/dist/syncer/syncer.js.map +1 -0
- package/dist/templates/base-template.d.ts +13 -0
- package/dist/templates/base-template.d.ts.map +1 -0
- package/dist/templates/base-template.js +2 -0
- package/dist/templates/base-template.js.map +1 -0
- package/dist/templates/entity.template.d.ts +17 -0
- package/dist/templates/entity.template.d.ts.map +1 -0
- package/dist/templates/entity.template.js +2 -0
- package/dist/templates/entity.template.js.map +1 -0
- package/dist/templates/generated.template.d.ts +27 -0
- package/dist/templates/generated.template.d.ts.map +1 -0
- package/dist/templates/generated.template.js +2 -0
- package/dist/templates/generated.template.js.map +1 -0
- package/dist/templates/generated_http.template.d.ts +24 -0
- package/dist/templates/generated_http.template.d.ts.map +1 -0
- package/dist/templates/generated_http.template.js +2 -0
- package/dist/templates/generated_http.template.js.map +1 -0
- package/dist/templates/generated_sso.template.d.ts +20 -0
- package/dist/templates/generated_sso.template.d.ts.map +1 -0
- package/dist/templates/generated_sso.template.js +2 -0
- package/dist/templates/generated_sso.template.js.map +1 -0
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +2 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/init_types.template.d.ts +17 -0
- package/dist/templates/init_types.template.d.ts.map +1 -0
- package/dist/templates/init_types.template.js +2 -0
- package/dist/templates/init_types.template.js.map +1 -0
- package/dist/templates/model.template.d.ts +17 -0
- package/dist/templates/model.template.d.ts.map +1 -0
- package/dist/templates/model.template.js +2 -0
- package/dist/templates/model.template.js.map +1 -0
- package/dist/templates/model_test.template.d.ts +17 -0
- package/dist/templates/model_test.template.d.ts.map +1 -0
- package/dist/templates/model_test.template.js +2 -0
- package/dist/templates/model_test.template.js.map +1 -0
- package/dist/templates/service.template.d.ts +29 -0
- package/dist/templates/service.template.d.ts.map +1 -0
- package/dist/templates/service.template.js +2 -0
- package/dist/templates/service.template.js.map +1 -0
- package/dist/templates/view_enums_buttonset.template.d.ts +17 -0
- package/dist/templates/view_enums_buttonset.template.d.ts.map +1 -0
- package/dist/templates/view_enums_buttonset.template.js +2 -0
- package/dist/templates/view_enums_buttonset.template.js.map +1 -0
- package/dist/templates/view_enums_dropdown.template.d.ts +18 -0
- package/dist/templates/view_enums_dropdown.template.d.ts.map +1 -0
- package/dist/templates/view_enums_dropdown.template.js +2 -0
- package/dist/templates/view_enums_dropdown.template.js.map +1 -0
- package/dist/templates/view_enums_select.template.d.ts +17 -0
- package/dist/templates/view_enums_select.template.d.ts.map +1 -0
- package/dist/templates/view_enums_select.template.js +2 -0
- package/dist/templates/view_enums_select.template.js.map +1 -0
- package/dist/templates/view_form.template.d.ts +26 -0
- package/dist/templates/view_form.template.d.ts.map +1 -0
- package/dist/templates/view_form.template.js +2 -0
- package/dist/templates/view_form.template.js.map +1 -0
- package/dist/templates/view_id_all_select.template.d.ts +17 -0
- package/dist/templates/view_id_all_select.template.d.ts.map +1 -0
- package/dist/templates/view_id_all_select.template.js +2 -0
- package/dist/templates/view_id_all_select.template.js.map +1 -0
- package/dist/templates/view_id_async_select.template.d.ts +17 -0
- package/dist/templates/view_id_async_select.template.d.ts.map +1 -0
- package/dist/templates/view_id_async_select.template.js +2 -0
- package/dist/templates/view_id_async_select.template.js.map +1 -0
- package/dist/templates/view_list.template.d.ts +38 -0
- package/dist/templates/view_list.template.d.ts.map +1 -0
- package/dist/templates/view_list.template.js +2 -0
- package/dist/templates/view_list.template.js.map +1 -0
- package/dist/templates/view_list_columns.template.d.ts +17 -0
- package/dist/templates/view_list_columns.template.d.ts.map +1 -0
- package/dist/templates/view_list_columns.template.js +2 -0
- package/dist/templates/view_list_columns.template.js.map +1 -0
- package/dist/templates/view_search_input.template.d.ts +17 -0
- package/dist/templates/view_search_input.template.d.ts.map +1 -0
- package/dist/templates/view_search_input.template.js +2 -0
- package/dist/templates/view_search_input.template.js.map +1 -0
- package/dist/testing/_relation-graph.d.ts +7 -0
- package/dist/testing/_relation-graph.d.ts.map +1 -0
- package/dist/testing/_relation-graph.js +2 -0
- package/dist/testing/_relation-graph.js.map +1 -0
- package/dist/testing/fixture-manager.d.ts +35 -0
- package/dist/testing/fixture-manager.d.ts.map +1 -0
- package/dist/testing/fixture-manager.js +2 -0
- package/dist/testing/fixture-manager.js.map +1 -0
- package/dist/types/types.d.ts +611 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +2 -0
- package/dist/types/types.js.map +1 -0
- package/dist/typings/knex.d.js +2 -0
- package/dist/typings/knex.d.js.map +1 -0
- package/dist/utils/async-utils.d.ts +25 -0
- package/dist/utils/async-utils.d.ts.map +1 -0
- package/dist/utils/async-utils.js +2 -0
- package/dist/utils/async-utils.js.map +1 -0
- package/dist/utils/controller.d.ts +9 -0
- package/dist/utils/controller.d.ts.map +1 -0
- package/dist/utils/controller.js +2 -0
- package/dist/utils/controller.js.map +1 -0
- package/dist/utils/fs-utils.d.ts +9 -0
- package/dist/utils/fs-utils.d.ts.map +1 -0
- package/dist/utils/fs-utils.js +2 -0
- package/dist/utils/fs-utils.js.map +1 -0
- package/dist/utils/lodash-able.d.ts +2 -0
- package/dist/utils/lodash-able.d.ts.map +1 -0
- package/dist/utils/lodash-able.js +2 -0
- package/dist/utils/lodash-able.js.map +1 -0
- package/dist/utils/model.d.ts +17 -0
- package/dist/utils/model.d.ts.map +1 -0
- package/dist/utils/model.js +2 -0
- package/dist/utils/model.js.map +1 -0
- package/dist/utils/sql-parser.d.ts +4 -0
- package/dist/utils/sql-parser.d.ts.map +1 -0
- package/dist/utils/sql-parser.js +2 -0
- package/dist/utils/sql-parser.js.map +1 -0
- package/dist/utils/utils.d.ts +9 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +2 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/utils/zod-error.d.ts +8 -0
- package/dist/utils/zod-error.d.ts.map +1 -0
- package/dist/utils/zod-error.js +2 -0
- package/dist/utils/zod-error.js.map +1 -0
- package/nodemon.json +6 -0
- package/package.json +32 -45
- package/src/api/base-frame.ts +3 -4
- package/src/api/caster.ts +22 -23
- package/src/api/code-converters.ts +170 -134
- package/src/api/context.ts +15 -3
- package/src/api/decorators.ts +144 -20
- package/src/api/index.ts +2 -0
- package/src/api/sonamu.ts +408 -165
- package/src/bin/build-config.ts +10 -0
- package/src/bin/cli-wrapper.ts +35 -32
- package/src/bin/cli.ts +141 -204
- package/src/database/_batch_update.ts +10 -15
- package/src/database/base-model.ts +326 -216
- package/src/database/db.ts +191 -21
- package/src/database/{drivers/knex/plugins → knex-plugins}/knex-on-duplicate-update.ts +1 -1
- package/src/database/puri-wrapper.ts +129 -0
- package/src/database/puri.ts +808 -0
- package/src/database/puri.types.ts +222 -0
- package/src/database/transaction-context.ts +18 -0
- package/src/database/upsert-builder.ts +32 -35
- package/src/entity/entity-manager.ts +7 -15
- package/src/entity/entity.ts +9 -31
- package/src/entity/migrator-/354/235/264/354/202/254/352/260/224/354/226/264/354/232/224.md +1 -0
- package/src/file-storage/driver.ts +131 -0
- package/src/file-storage/file-storage.ts +100 -0
- package/src/index.ts +15 -11
- package/src/migration/code-generation.ts +777 -0
- package/src/migration/migration-set.ts +453 -0
- package/src/migration/migrator.ts +823 -0
- package/src/migration/types.ts +53 -0
- package/src/shared/web.shared.ts.txt +33 -2
- package/src/stream/index.ts +1 -0
- package/src/stream/sse.ts +49 -0
- package/src/syncer/syncer.ts +294 -127
- package/src/templates/generated.template.ts +13 -1
- package/src/templates/generated_http.template.ts +15 -12
- package/src/templates/generated_sso.template.ts +50 -2
- package/src/templates/model.template.ts +138 -2
- package/src/templates/service.template.ts +0 -1
- package/src/templates/view_form.template.ts +11 -7
- package/src/templates/view_list.template.ts +12 -4
- package/src/testing/fixture-manager.ts +229 -174
- package/src/types/types.ts +108 -14
- package/src/utils/async-utils.ts +64 -0
- package/src/utils/fs-utils.ts +17 -0
- package/src/utils/model.ts +0 -2
- package/src/utils/utils.ts +14 -58
- package/src/utils/zod-error.ts +12 -176
- package/tsconfig.json +6 -0
- package/tsup.config.js +4 -2
- package/.pnp.cjs +0 -14363
- package/.pnp.loader.mjs +0 -2047
- package/.vscode/extensions.json +0 -6
- package/.vscode/settings.json +0 -9
- package/.yarnrc.yml +0 -5
- package/dist/base-model-CEB0H0aO.d.mts +0 -43
- package/dist/base-model-CrqDMYhI.d.ts +0 -43
- package/dist/bin/cli-wrapper.d.mts +0 -1
- package/dist/bin/cli-wrapper.mjs +0 -43
- package/dist/bin/cli-wrapper.mjs.map +0 -1
- package/dist/bin/cli.d.mts +0 -2
- package/dist/bin/cli.mjs +0 -907
- package/dist/bin/cli.mjs.map +0 -1
- package/dist/chunk-2WAC2GER.js +0 -7625
- package/dist/chunk-2WAC2GER.js.map +0 -1
- package/dist/chunk-C3IPIF6O.mjs +0 -1581
- package/dist/chunk-C3IPIF6O.mjs.map +0 -1
- package/dist/chunk-EXHKSVTE.js +0 -280
- package/dist/chunk-EXHKSVTE.js.map +0 -1
- package/dist/chunk-FCERKIIF.mjs +0 -7623
- package/dist/chunk-FCERKIIF.mjs.map +0 -1
- package/dist/chunk-HGIBJYOU.mjs +0 -231
- package/dist/chunk-HGIBJYOU.mjs.map +0 -1
- package/dist/chunk-JKSOJRQA.mjs +0 -280
- package/dist/chunk-JKSOJRQA.mjs.map +0 -1
- package/dist/chunk-OTKKFP3Y.js +0 -1581
- package/dist/chunk-OTKKFP3Y.js.map +0 -1
- package/dist/chunk-PTFDTOJU.mjs +0 -19
- package/dist/chunk-PTFDTOJU.mjs.map +0 -1
- package/dist/chunk-UZ2IY5VE.js +0 -231
- package/dist/chunk-UZ2IY5VE.js.map +0 -1
- package/dist/database/drivers/knex/base-model.d.mts +0 -16
- package/dist/database/drivers/knex/base-model.d.ts +0 -16
- package/dist/database/drivers/knex/base-model.js +0 -55
- package/dist/database/drivers/knex/base-model.js.map +0 -1
- package/dist/database/drivers/knex/base-model.mjs +0 -56
- package/dist/database/drivers/knex/base-model.mjs.map +0 -1
- package/dist/database/drivers/kysely/base-model.d.mts +0 -22
- package/dist/database/drivers/kysely/base-model.d.ts +0 -22
- package/dist/database/drivers/kysely/base-model.js +0 -64
- package/dist/database/drivers/kysely/base-model.js.map +0 -1
- package/dist/database/drivers/kysely/base-model.mjs +0 -65
- package/dist/database/drivers/kysely/base-model.mjs.map +0 -1
- package/dist/index.d.mts +0 -813
- package/dist/index.mjs +0 -435
- package/dist/index.mjs.map +0 -1
- package/dist/model-aFgomcdc.d.mts +0 -1112
- package/dist/model-aFgomcdc.d.ts +0 -1112
- package/src/database/base-model.abstract.ts +0 -97
- package/src/database/db.abstract.ts +0 -75
- package/src/database/drivers/knex/base-model.ts +0 -55
- package/src/database/drivers/knex/client.ts +0 -209
- package/src/database/drivers/knex/db.ts +0 -232
- package/src/database/drivers/knex/generator.ts +0 -659
- package/src/database/drivers/kysely/base-model.ts +0 -89
- package/src/database/drivers/kysely/client.ts +0 -309
- package/src/database/drivers/kysely/db.ts +0 -238
- package/src/database/drivers/kysely/generator.ts +0 -714
- package/src/database/types.ts +0 -118
- package/src/entity/migrator.ts +0 -1400
- package/src/smd/smd-manager.ts +0 -139
- package/src/smd/smd.ts +0 -571
- package/src/templates/kysely_types.template.ts +0 -205
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Knex } from "knex";
|
|
2
|
+
import { Puri } from "./puri";
|
|
3
|
+
import { UBRef, UpsertBuilder } from "./upsert-builder";
|
|
4
|
+
import { DatabaseSchemaExtend } from "../types/types";
|
|
5
|
+
import { DBPreset } from "./db";
|
|
6
|
+
type TableName<DBSchema extends DatabaseSchemaExtend> = Extract<keyof DBSchema, string>;
|
|
7
|
+
export type TransactionalOptions = {
|
|
8
|
+
isolation?: Exclude<Knex.IsolationLevels, "snapshot">;
|
|
9
|
+
dbPreset?: DBPreset;
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare class PuriWrapper<DBSchema extends DatabaseSchemaExtend = DatabaseSchemaExtend> {
|
|
13
|
+
knex: Knex;
|
|
14
|
+
upsertBuilder: UpsertBuilder;
|
|
15
|
+
constructor(knex: Knex, upsertBuilder: UpsertBuilder);
|
|
16
|
+
raw(sql: string): Knex.Raw;
|
|
17
|
+
table<TTable extends TableName<DBSchema>>(tableName: TTable): Puri<DBSchema, TTable>;
|
|
18
|
+
fromSubquery<TSubResult, TAlias extends string>(subquery: Puri<DBSchema, any, any, TSubResult, any>, alias: TAlias extends string ? TAlias : never): Puri<DBSchema, TAlias, TSubResult, TSubResult, {}>;
|
|
19
|
+
transaction<T>(callback: (trx: PuriWrapper) => Promise<T>, options?: TransactionalOptions): Promise<T>;
|
|
20
|
+
ubRegister<TTable extends TableName<DBSchema>>(tableName: TTable, row: Partial<{
|
|
21
|
+
[K in keyof DBSchema[TTable]]: DBSchema[TTable][K] | UBRef;
|
|
22
|
+
}>): UBRef;
|
|
23
|
+
ubUpsert(tableName: TableName<DBSchema>, chunkSize?: number): Promise<number[]>;
|
|
24
|
+
ubInsertOnly(tableName: TableName<DBSchema>, chunkSize?: number): Promise<number[]>;
|
|
25
|
+
ubUpsertOrInsert(tableName: TableName<DBSchema>, mode: "upsert" | "insert", chunkSize?: number): Promise<number[]>;
|
|
26
|
+
ubUpdateBatch(tableName: TableName<DBSchema>, options?: {
|
|
27
|
+
chunkSize?: number;
|
|
28
|
+
where?: string | string[];
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
debugTransaction(): Promise<void>;
|
|
31
|
+
private getTransactionInfo;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=puri-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puri-wrapper.d.ts","sourceRoot":"","sources":["../../src/database/puri-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,KAAK,SAAS,CAAC,QAAQ,SAAS,oBAAoB,IAAI,OAAO,CAC7D,MAAM,QAAQ,EACd,MAAM,CACP,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,qBAAa,WAAW,CACtB,QAAQ,SAAS,oBAAoB,GAAG,oBAAoB;IAEzC,IAAI,EAAE,IAAI;IAAS,aAAa,EAAE,aAAa;gBAA/C,IAAI,EAAE,IAAI,EAAS,aAAa,EAAE,aAAa;IAElE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;IAI1B,KAAK,CAAC,MAAM,SAAS,SAAS,CAAC,QAAQ,CAAC,EACtC,SAAS,EAAE,MAAM,GAChB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;IAKzB,YAAY,CAAC,UAAU,EAAE,MAAM,SAAS,MAAM,EAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,EACnD,KAAK,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,GAAG,KAAK,GAC5C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;IAI/C,WAAW,CAAC,CAAC,EACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,CAAC,CAAC;IAWb,UAAU,CAAC,MAAM,SAAS,SAAS,CAAC,QAAQ,CAAC,EAC3C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,OAAO,CAAC;SACV,CAAC,IAAI,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;KAC3D,CAAC,GACD,KAAK;IAIR,QAAQ,CACN,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC9B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpB,YAAY,CACV,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC9B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpB,gBAAgB,CACd,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC9B,IAAI,EAAE,QAAQ,GAAG,QAAQ,EACzB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IASpB,aAAa,CACX,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC9B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,GAC1D,OAAO,CAAC,IAAI,CAAC;IAKV,gBAAgB;YAKR,kBAAkB;CAwBjC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"PuriWrapper",{enumerable:true,get:function(){return PuriWrapper}});var _puri=require("./puri");var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var PuriWrapper=/*#__PURE__*/function(){"use strict";function PuriWrapper(knex,upsertBuilder){_class_call_check(this,PuriWrapper);_define_property(this,"knex",void 0);_define_property(this,"upsertBuilder",void 0);this.knex=knex;this.upsertBuilder=upsertBuilder}_create_class(PuriWrapper,[{key:"raw",value:function raw(sql){return this.knex.raw(sql)}},{key:"table",value:function table(tableName){return new _puri.Puri(this.knex,tableName)}},{key:"fromSubquery",value:function fromSubquery(subquery,alias){return new _puri.Puri(this.knex,subquery,alias)}},{key:"transaction",value:function transaction(_0){return _async_to_generator(function(callback){var _this,options,isolation,readOnly;var _arguments=arguments;return _ts_generator(this,function(_state){_this=this;options=_arguments.length>1&&_arguments[1]!==void 0?_arguments[1]:{};isolation=options.isolation,readOnly=options.readOnly;return[2,this.knex.transaction(function(trx){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,callback(new PuriWrapper(trx,this.upsertBuilder))]})}).call(_this)},{isolationLevel:isolation,readOnly:readOnly})]})}).apply(this,arguments)}},{key:"ubRegister",value:function ubRegister(tableName,row){return this.upsertBuilder.register(tableName,row)}},{key:"ubUpsert",value:function ubUpsert(tableName,chunkSize){return this.upsertBuilder.upsert(this.knex,tableName,chunkSize)}},{key:"ubInsertOnly",value:function ubInsertOnly(tableName,chunkSize){return this.upsertBuilder.insertOnly(this.knex,tableName,chunkSize)}},{key:"ubUpsertOrInsert",value:function ubUpsertOrInsert(tableName,mode,chunkSize){return this.upsertBuilder.upsertOrInsert(this.knex,tableName,mode,chunkSize)}},{key:"ubUpdateBatch",value:function ubUpdateBatch(tableName,options){return this.upsertBuilder.updateBatch(this.knex,tableName,options)}},{key:"debugTransaction",value:function debugTransaction(){return _async_to_generator(function(){var info;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.getTransactionInfo()];case 1:info=_state.sent();console.log("".concat(_chalk.default.cyan("[Puri Transaction]")," ").concat(_chalk.default.magenta(info)));return[2]}})}).call(this)}},{key:"getTransactionInfo",value:function getTransactionInfo(){return _async_to_generator(function(){var _ref,connectionIdRows,connectionId,_ref1,trxRows,trx;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.knex.raw("SELECT CONNECTION_ID() as connection_id")];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),1]),connectionIdRows=_ref[0];connectionId=connectionIdRows[0].connection_id;return[4,this.knex.raw("\n SELECT STATE, ISOLATION_LEVEL, THREAD_ID, EVENT_ID\n FROM performance_schema.events_transactions_current\n WHERE THREAD_ID = \n (SELECT THREAD_ID\n FROM performance_schema.threads \n WHERE PROCESSLIST_ID = CONNECTION_ID())\n ")];case 2:_ref1=_sliced_to_array.apply(void 0,[_state.sent(),1]),trxRows=_ref1[0];if(trxRows.length>0&&trxRows[0].STATE!=="COMMITTED"){trx=trxRows[0];return[2,"In Transaction, ConnID: ".concat(connectionId,", ThreadID: ").concat(trx.THREAD_ID,", EventID: ").concat(trx.EVENT_ID,", InnoDB TRX: ").concat(trx.STATE,"(").concat(trx.ISOLATION_LEVEL,")")]}else{return[2,"Not in Transaction, ConnID: ".concat(connectionId)]}return[2]}})}).call(this)}}]);return PuriWrapper}();
|
|
2
|
+
//# sourceMappingURL=puri-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/database/puri-wrapper.ts"],"sourcesContent":["import { Knex } from \"knex\";\nimport { Puri } from \"./puri\";\nimport { UBRef, UpsertBuilder } from \"./upsert-builder\";\nimport { DatabaseSchemaExtend } from \"../types/types\";\nimport chalk from \"chalk\";\nimport { DBPreset } from \"./db\";\n\ntype TableName<DBSchema extends DatabaseSchemaExtend> = Extract<\n keyof DBSchema,\n string\n>;\n\nexport type TransactionalOptions = {\n isolation?: Exclude<Knex.IsolationLevels, \"snapshot\">; // snapshot: mssql only\n dbPreset?: DBPreset;\n readOnly?: boolean;\n};\n\nexport class PuriWrapper<\n DBSchema extends DatabaseSchemaExtend = DatabaseSchemaExtend\n> {\n constructor(public knex: Knex, public upsertBuilder: UpsertBuilder) {}\n\n raw(sql: string): Knex.Raw {\n return this.knex.raw(sql);\n }\n // 기존: 테이블로 시작\n table<TTable extends TableName<DBSchema>>(\n tableName: TTable\n ): Puri<DBSchema, TTable> {\n return new Puri(this.knex, tableName as any);\n }\n\n // 새로 추가: 서브쿼리로 시작\n fromSubquery<TSubResult, TAlias extends string>(\n subquery: Puri<DBSchema, any, any, TSubResult, any>,\n alias: TAlias extends string ? TAlias : never\n ): Puri<DBSchema, TAlias, TSubResult, TSubResult, {}> {\n return new Puri(this.knex, subquery, alias);\n }\n\n async transaction<T>(\n callback: (trx: PuriWrapper) => Promise<T>,\n options: TransactionalOptions = {}\n ): Promise<T> {\n const { isolation, readOnly } = options;\n\n return this.knex.transaction(\n async (trx) => {\n return callback(new PuriWrapper(trx, this.upsertBuilder));\n },\n { isolationLevel: isolation, readOnly }\n );\n }\n\n ubRegister<TTable extends TableName<DBSchema>>(\n tableName: TTable,\n row: Partial<{\n [K in keyof DBSchema[TTable]]: DBSchema[TTable][K] | UBRef;\n }>\n ): UBRef {\n return this.upsertBuilder.register(tableName, row);\n }\n\n ubUpsert(\n tableName: TableName<DBSchema>,\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertBuilder.upsert(this.knex, tableName, chunkSize);\n }\n\n ubInsertOnly(\n tableName: TableName<DBSchema>,\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertBuilder.insertOnly(this.knex, tableName, chunkSize);\n }\n\n ubUpsertOrInsert(\n tableName: TableName<DBSchema>,\n mode: \"upsert\" | \"insert\",\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertBuilder.upsertOrInsert(\n this.knex,\n tableName,\n mode,\n chunkSize\n );\n }\n\n ubUpdateBatch(\n tableName: TableName<DBSchema>,\n options?: { chunkSize?: number; where?: string | string[] }\n ): Promise<void> {\n return this.upsertBuilder.updateBatch(this.knex, tableName, options);\n }\n\n // 트랜잭션 연결 테스트용\n async debugTransaction() {\n const info = await this.getTransactionInfo();\n console.log(`${chalk.cyan(\"[Puri Transaction]\")} ${chalk.magenta(info)}`);\n }\n\n private async getTransactionInfo(): Promise<string> {\n // 연결 ID 조회\n const [connectionIdRows] = await this.knex.raw(\n `SELECT CONNECTION_ID() as connection_id`\n );\n const connectionId = connectionIdRows[0].connection_id;\n\n // 트랜잭션 정보 조회\n const [trxRows] = await this.knex.raw(`\n SELECT STATE, ISOLATION_LEVEL, THREAD_ID, EVENT_ID\n FROM performance_schema.events_transactions_current\n WHERE THREAD_ID = \n (SELECT THREAD_ID\n FROM performance_schema.threads \n WHERE PROCESSLIST_ID = CONNECTION_ID())\n `);\n\n if (trxRows.length > 0 && trxRows[0].STATE !== \"COMMITTED\") {\n const trx = trxRows[0];\n return `In Transaction, ConnID: ${connectionId}, ThreadID: ${trx.THREAD_ID}, EventID: ${trx.EVENT_ID}, InnoDB TRX: ${trx.STATE}(${trx.ISOLATION_LEVEL})`;\n } else {\n return `Not in Transaction, ConnID: ${connectionId}`;\n }\n }\n}\n"],"names":["PuriWrapper","knex","upsertBuilder","raw","sql","table","tableName","Puri","fromSubquery","subquery","alias","transaction","callback","options","isolation","readOnly","trx","isolationLevel","ubRegister","row","register","ubUpsert","chunkSize","upsert","ubInsertOnly","insertOnly","ubUpsertOrInsert","mode","upsertOrInsert","ubUpdateBatch","updateBatch","debugTransaction","info","getTransactionInfo","console","log","chalk","cyan","magenta","connectionIdRows","connectionId","trxRows","connection_id","length","STATE","THREAD_ID","EVENT_ID","ISOLATION_LEVEL"],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { Knex } from "knex";
|
|
2
|
+
import type { AvailableColumns, ComparisonOperator, EmptyRecord, Expand, ExtractColumnType, FulltextColumns, InsertData, MergeJoined, ParseSelectObject, ResultAvailableColumns, SelectObject, SqlFunction, WhereCondition } from "./puri.types";
|
|
3
|
+
export declare class Puri<TSchema, TTable extends keyof TSchema | string, TOriginal = TTable extends keyof TSchema ? TSchema[TTable] : unknown, TResult = TTable extends keyof TSchema ? TSchema[TTable] : unknown, TJoined = EmptyRecord> {
|
|
4
|
+
private knex;
|
|
5
|
+
private knexQuery;
|
|
6
|
+
constructor(knex: Knex, tableName: TTable extends keyof TSchema ? TTable : unknown);
|
|
7
|
+
constructor(knex: Knex, subquery: Puri<TSchema, any, any, TOriginal, any>, alias: TTable extends string ? TTable : never);
|
|
8
|
+
static count(column?: string): SqlFunction<"number">;
|
|
9
|
+
static sum(column: string): SqlFunction<"number">;
|
|
10
|
+
static avg(column: string): SqlFunction<"number">;
|
|
11
|
+
static max(column: string): SqlFunction<"number">;
|
|
12
|
+
static min(column: string): SqlFunction<"number">;
|
|
13
|
+
static concat(...args: string[]): SqlFunction<"string">;
|
|
14
|
+
static upper(column: string): SqlFunction<"string">;
|
|
15
|
+
static lower(column: string): SqlFunction<"string">;
|
|
16
|
+
static rawString(sql: string): SqlFunction<"string">;
|
|
17
|
+
static rawNumber(sql: string): SqlFunction<"number">;
|
|
18
|
+
static rawBoolean(sql: string): SqlFunction<"boolean">;
|
|
19
|
+
static rawDate(sql: string): SqlFunction<"date">;
|
|
20
|
+
select<TSelect extends SelectObject<TSchema, TTable, TOriginal, TJoined>>(selectObj: TSelect): Puri<TSchema, TTable, TOriginal, ParseSelectObject<TSchema, TTable, TSelect, TOriginal, TJoined>, TJoined>;
|
|
21
|
+
selectAll(): Puri<TSchema, TTable, TOriginal, TTable extends keyof TSchema ? TSchema[TTable] & TJoined : TResult & TJoined, TJoined>;
|
|
22
|
+
where(conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
23
|
+
where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
24
|
+
where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, operator: ComparisonOperator | "like", value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
25
|
+
whereIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, values: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
26
|
+
whereNotIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, values: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
27
|
+
whereMatch<TColumn extends FulltextColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, value: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
28
|
+
whereGroup(callback: (group: WhereGroup<TSchema, TTable, TOriginal, TJoined>) => WhereGroup<TSchema, TTable, TOriginal, TJoined>): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
29
|
+
orWhereGroup(callback: (group: WhereGroup<TSchema, TTable, TOriginal, TJoined>) => WhereGroup<TSchema, TTable, TOriginal, TJoined>): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
30
|
+
join<TJoinTable extends keyof TSchema, TLColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>, TRColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>>(table: TJoinTable, left: TLColumn, right: TRColumn): Puri<TSchema, TTable, TOriginal, TResult, MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>>;
|
|
31
|
+
join<TJoinTable extends keyof TSchema>(table: TJoinTable, joinCallback: (joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>) => void): Puri<TSchema, TTable, TOriginal, TResult, MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>>;
|
|
32
|
+
join<TSubResult, TAlias extends string>(subquery: Puri<TSchema, any, any, TSubResult, any>, alias: TAlias, left: string, right: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined & Record<TAlias, TSubResult>>;
|
|
33
|
+
join(table: string, left: string, right: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
34
|
+
leftJoin<TJoinTable extends keyof TSchema, TLColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>, TRColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>>(table: TJoinTable, left: TLColumn, right: TRColumn): Puri<TSchema, TTable, TOriginal, TResult, TJoined & Record<TJoinTable, Partial<TSchema[TJoinTable]>>>;
|
|
35
|
+
leftJoin<TSubResult, TAlias extends string>(subquery: Puri<TSchema, any, any, TSubResult, any>, alias: TAlias, left: string, right: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined & Record<TAlias, Partial<TSubResult>>>;
|
|
36
|
+
leftJoin(table: string, left: string, right: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
37
|
+
orderBy<TColumn extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(column: TColumn, direction: "asc" | "desc"): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
38
|
+
limit(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
39
|
+
offset(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
40
|
+
groupBy<TColumns extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(...columns: TColumns[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
41
|
+
having(condition: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
42
|
+
having<TColumn extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(condition: TColumn, operator: ComparisonOperator, value: any): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
43
|
+
then<TResult1, TResult2 = never>(onfulfilled?: ((value: Expand<TResult>[]) => Expand<TResult1> | PromiseLike<Expand<TResult1>>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<Expand<TResult1> | TResult2>;
|
|
44
|
+
catch<TResult2 = never>(onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<Expand<TResult> | TResult2>;
|
|
45
|
+
finally(onfinally?: (() => void) | null): Promise<Expand<TResult>>;
|
|
46
|
+
first(): Promise<Expand<TResult> | undefined>;
|
|
47
|
+
firstOrFail(): Promise<TResult>;
|
|
48
|
+
at(index: number): Promise<Expand<TResult> | undefined>;
|
|
49
|
+
assertAt(index: number): Promise<Expand<TResult>>;
|
|
50
|
+
insert(data: TTable extends keyof TSchema ? InsertData<TSchema[TTable]> : unknown): Promise<number[]>;
|
|
51
|
+
update(data: Partial<TTable extends keyof TSchema ? TSchema[TTable] : unknown>): Promise<number>;
|
|
52
|
+
delete(): Promise<number>;
|
|
53
|
+
toQuery(): string;
|
|
54
|
+
debug(): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
|
|
55
|
+
formatSQL(unformatted: string): string;
|
|
56
|
+
raw(): Knex.QueryBuilder;
|
|
57
|
+
}
|
|
58
|
+
declare class WhereGroup<TSchema, TTable extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> {
|
|
59
|
+
private builder;
|
|
60
|
+
constructor(builder: Knex.QueryBuilder);
|
|
61
|
+
where(conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
62
|
+
where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
63
|
+
where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, operator: ComparisonOperator | "like", value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
64
|
+
where(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
65
|
+
orWhere(conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
66
|
+
orWhere<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
67
|
+
orWhere<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, operator: ComparisonOperator | "like", value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
68
|
+
orWhere(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
69
|
+
whereIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, values: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>[]): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
70
|
+
orWhereIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, values: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>[]): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
71
|
+
whereGroup(callback: (group: WhereGroup<TSchema, TTable, TOriginal, TJoined>) => WhereGroup<TSchema, TTable, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
72
|
+
orWhereGroup(callback: (group: WhereGroup<TSchema, TTable, TOriginal, TJoined>) => WhereGroup<TSchema, TTable, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
73
|
+
}
|
|
74
|
+
export declare class JoinClauseGroup<TSchema, TTable extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> {
|
|
75
|
+
private callback;
|
|
76
|
+
constructor(callback: Knex.JoinClause);
|
|
77
|
+
on(callback: (joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>) => void): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
78
|
+
on(column: string, value: any): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
79
|
+
orOn(callback: (joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>) => void): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
80
|
+
orOn(column: string, value: any): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;
|
|
81
|
+
}
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=puri.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get JoinClauseGroup(){return JoinClauseGroup},get Puri(){return Puri}});var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var Puri=/*#__PURE__*/function(){"use strict";function Puri(knex,tableNameOrSubquery,alias){_class_call_check(this,Puri);_define_property(this,"knex",void 0);_define_property(this,"knexQuery",void 0);this.knex=knex;if(typeof tableNameOrSubquery==="string"){this.knexQuery=knex(tableNameOrSubquery).from(tableNameOrSubquery)}else{this.knexQuery=knex.from(tableNameOrSubquery.raw().as(alias))}}_create_class(Puri,[{key:"select",value:function select(selectObj){var selectClauses=[];var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=Object.entries(selectObj)[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _step_value=_sliced_to_array(_step.value,2),alias=_step_value[0],columnOrFunction=_step_value[1];if((typeof columnOrFunction==="undefined"?"undefined":_type_of(columnOrFunction))==="object"&&columnOrFunction._type==="sql_function"){selectClauses.push(this.knex.raw("".concat(columnOrFunction._sql," as ").concat(alias)))}else{var columnPath=columnOrFunction;if(alias===columnPath){selectClauses.push(columnPath)}else{selectClauses.push("".concat(columnPath," as ").concat(alias))}}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}this.knexQuery.select(selectClauses);return this}},{key:"selectAll",value:function selectAll(){this.knexQuery.select("*");return this}},{key:"where",value:function where(columnOrConditions,operatorOrValue,value){if((typeof columnOrConditions==="undefined"?"undefined":_type_of(columnOrConditions))==="object"){this.knexQuery.where(columnOrConditions)}else if(arguments.length===2){if(operatorOrValue===null){this.knexQuery.whereNull(columnOrConditions);return this}this.knexQuery.where(columnOrConditions,operatorOrValue)}else if(arguments.length===3){if(value===null){if(operatorOrValue==="!="){this.knexQuery.whereNotNull(columnOrConditions);return this}else if(operatorOrValue==="="){this.knexQuery.whereNull(columnOrConditions);return this}}this.knexQuery.where(columnOrConditions,operatorOrValue,value)}else{this.knexQuery.where(columnOrConditions)}return this}},{key:"whereIn",value:function whereIn(column,values){this.knexQuery.whereIn(column,values);return this}},{key:"whereNotIn",value:function whereNotIn(column,values){this.knexQuery.whereNotIn(column,values);return this}},{key:"whereMatch",value:function whereMatch(column,value){this.knexQuery.whereRaw("MATCH (".concat(String(column),") AGAINST (?)"),[value]);return this}},{key:"whereGroup",value:function whereGroup(callback){this.knexQuery.where(function(builder){var group=new WhereGroup(builder);callback(group)});return this}},{key:"orWhereGroup",value:function orWhereGroup(callback){this.knexQuery.orWhere(function(builder){var group=new WhereGroup(builder);callback(group)});return this}},{key:"join",value:function join(tableOrSubquery){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}if(_instanceof(tableOrSubquery,Puri)){var _args=_sliced_to_array(args,3),alias=_args[0],left=_args[1],right=_args[2];this.knexQuery.join(tableOrSubquery.raw().as(alias),left,right)}else if(args.length===2&&typeof args[0]==="string"&&typeof args[1]==="string"){var _args1=_sliced_to_array(args,2),left1=_args1[0],right1=_args1[1];this.knexQuery.join(tableOrSubquery,left1,right1)}else if(args.length===1&&typeof args[0]==="function"){var joinCallback=args[0];this.knexQuery.join(tableOrSubquery,function(joinClause){joinCallback(new JoinClauseGroup(joinClause))})}else{throw new Error("Invalid arguments")}return this}},{key:"leftJoin",value:function leftJoin(tableOrSubquery){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}if(_instanceof(tableOrSubquery,Puri)){var _args=_sliced_to_array(args,3),alias=_args[0],left=_args[1],right=_args[2];this.knexQuery.leftJoin(tableOrSubquery.raw().as(alias),left,right)}else{var _args1=_sliced_to_array(args,2),left1=_args1[0],right1=_args1[1];this.knexQuery.leftJoin(tableOrSubquery,left1,right1)}return this}},{key:"orderBy",value:function orderBy(column){var direction=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"asc";this.knexQuery.orderBy(column,direction);return this}},{key:"limit",value:function limit(count){this.knexQuery.limit(count);return this}},{key:"offset",value:function offset(count){this.knexQuery.offset(count);return this}},{key:"groupBy",value:function groupBy(){for(var _len=arguments.length,columns=new Array(_len),_key=0;_key<_len;_key++){columns[_key]=arguments[_key]}var _this_knexQuery;(_this_knexQuery=this.knexQuery).groupBy.apply(_this_knexQuery,_to_consumable_array(columns));return this}},{key:"having",value:function having(){for(var _len=arguments.length,conditions=new Array(_len),_key=0;_key<_len;_key++){conditions[_key]=arguments[_key]}var _this_knexQuery;(_this_knexQuery=this.knexQuery).having.apply(_this_knexQuery,_to_consumable_array(conditions));return this}},{key:"then",value:function then(onfulfilled,onrejected){return this.knexQuery.then(onfulfilled,onrejected)}},{key:"catch",value:function _catch(onrejected){return this.knexQuery.catch(onrejected)}},{key:"finally",value:function _finally(onfinally){return this.knexQuery.finally(onfinally)}},{key:"first",value:function first(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.first()]})}).call(this)}},{key:"firstOrFail",value:function firstOrFail(){return _async_to_generator(function(){var result;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.knexQuery.first()];case 1:result=_state.sent();if(!result){throw new Error("No results found")}return[2,result]}})}).call(this)}},{key:"at",value:function at(index){return _async_to_generator(function(){var results;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this];case 1:results=_state.sent();return[2,results[index]]}})}).call(this)}},{key:"assertAt",value:function assertAt(index){return _async_to_generator(function(){var results,result;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this];case 1:results=_state.sent();result=results[index];if(result===undefined){throw new Error("No result found at index ".concat(index))}return[2,result]}})}).call(this)}},{key:"insert",value:function insert(data){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.insert(data)]})}).call(this)}},{key:"update",value:function update(data){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.update(data)]})}).call(this)}},{key:"delete",value:function _delete(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.delete()]})}).call(this)}},{key:"toQuery",value:function toQuery(){return this.knexQuery.toQuery()}},{key:"debug",value:function debug(){console.log("".concat(_chalk.default.cyan("[Puri Debug]")," ").concat(_chalk.default.yellow(this.formatSQL(this.toQuery()))));return this}},{key:"formatSQL",value:function formatSQL(unformatted){var keywords=["SELECT","FROM","WHERE","INSERT","INTO","VALUES","UPDATE","DELETE","CREATE","TABLE","ALTER","DROP","JOIN","ON","INNER","LEFT","RIGHT","FULL","OUTER","GROUP","BY","ORDER","HAVING","DISTINCT","LIMIT","OFFSET","AS","AND","OR","NOT","IN","LIKE","IS","NULL","CASE","WHEN","THEN","ELSE","END","UNION","ALL","EXISTS","BETWEEN"];var formatted=unformatted;keywords.forEach(function(keyword){var regex=new RegExp("\\b".concat(keyword,"\\b"),"gi");formatted=formatted.replace(regex,keyword.toUpperCase())});var majorClauses=["SELECT","FROM","WHERE","GROUP BY","ORDER BY","HAVING","LIMIT","UNION"];majorClauses.forEach(function(clause){var regex=new RegExp("\\s+(".concat(clause,")\\s+"),"gi");formatted=formatted.replace(regex,"\n".concat(clause.toUpperCase()," "))});formatted=formatted.replace(/\s+((?:INNER|LEFT|RIGHT|FULL OUTER)\s+)?JOIN\s+/gi,"\n$1JOIN ");formatted=formatted.replace(/\s+(AND|OR)\s+/gi,"\n $1 ");var lines=formatted.split("\n");var indentedLines=[];var indentLevel=0;var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=lines[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var line=_step.value;var trimmedLine=line.trim();if(!trimmedLine)continue;var closingParens=(trimmedLine.match(/\)/g)||[]).length;var openingParens=(trimmedLine.match(/\(/g)||[]).length;if(closingParens>0&&openingParens===0){indentLevel=Math.max(0,indentLevel-closingParens)}var indent=" ".repeat(indentLevel);indentedLines.push(indent+trimmedLine);if(openingParens>closingParens){indentLevel+=openingParens-closingParens}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}return indentedLines.join("\n").trim()}},{key:"raw",value:function raw(){return this.knexQuery}}],[{key:"count",value:function count(){var column=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"*";return{_type:"sql_function",_return:"number",_sql:"COUNT(".concat(column,")")}}},{key:"sum",value:function sum(column){return{_type:"sql_function",_return:"number",_sql:"SUM(".concat(column,")")}}},{key:"avg",value:function avg(column){return{_type:"sql_function",_return:"number",_sql:"AVG(".concat(column,")")}}},{key:"max",value:function max(column){return{_type:"sql_function",_return:"number",_sql:"MAX(".concat(column,")")}}},{key:"min",value:function min(column){return{_type:"sql_function",_return:"number",_sql:"MIN(".concat(column,")")}}},{key:"concat",value:function concat(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}return{_type:"sql_function",_return:"string",_sql:"CONCAT(".concat(args.join(", "),")")}}},{key:"upper",value:function upper(column){return{_type:"sql_function",_return:"string",_sql:"UPPER(".concat(column,")")}}},{key:"lower",value:function lower(column){return{_type:"sql_function",_return:"string",_sql:"LOWER(".concat(column,")")}}},{key:"rawString",value:function rawString(sql){return{_type:"sql_function",_return:"string",_sql:sql}}},{key:"rawNumber",value:function rawNumber(sql){return{_type:"sql_function",_return:"number",_sql:sql}}},{key:"rawBoolean",value:function rawBoolean(sql){return{_type:"sql_function",_return:"boolean",_sql:sql}}},{key:"rawDate",value:function rawDate(sql){return{_type:"sql_function",_return:"date",_sql:sql}}}]);return Puri}();var WhereGroup=/*#__PURE__*/function(){"use strict";function WhereGroup(builder){_class_call_check(this,WhereGroup);_define_property(this,"builder",void 0);this.builder=builder}_create_class(WhereGroup,[{key:"where",value:function where(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_builder;(_this_builder=this.builder).where.apply(_this_builder,[args[0]].concat(_to_consumable_array(args.slice(1))));return this}},{key:"orWhere",value:function orWhere(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_builder;(_this_builder=this.builder).orWhere.apply(_this_builder,[args[0]].concat(_to_consumable_array(args.slice(1))));return this}},{key:"whereIn",value:function whereIn(column,values){this.builder.whereIn(column,values);return this}},{key:"orWhereIn",value:function orWhereIn(column,values){this.builder.orWhereIn(column,values);return this}},{key:"whereGroup",value:function whereGroup(callback){this.builder.where(function(subBuilder){var subGroup=new WhereGroup(subBuilder);callback(subGroup)});return this}},{key:"orWhereGroup",value:function orWhereGroup(callback){this.builder.orWhere(function(subBuilder){var subGroup=new WhereGroup(subBuilder);callback(subGroup)});return this}}]);return WhereGroup}();var JoinClauseGroup=/*#__PURE__*/function(){"use strict";function JoinClauseGroup(callback){_class_call_check(this,JoinClauseGroup);_define_property(this,"callback",void 0);this.callback=callback}_create_class(JoinClauseGroup,[{key:"on",value:function on(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_callback;(_this_callback=this.callback).on.apply(_this_callback,_to_consumable_array(args));return this}},{key:"orOn",value:function orOn(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_callback;(_this_callback=this.callback).orOn.apply(_this_callback,_to_consumable_array(args));return this}}]);return JoinClauseGroup}();
|
|
2
|
+
//# sourceMappingURL=puri.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/database/puri.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n AvailableColumns,\n ComparisonOperator,\n EmptyRecord,\n Expand,\n ExtractColumnType,\n FulltextColumns,\n InsertData,\n MergeJoined,\n ParseSelectObject,\n ResultAvailableColumns,\n SelectObject,\n SqlFunction,\n WhereCondition,\n} from \"./puri.types\";\nimport chalk from \"chalk\";\n\n// 메인 Puri 클래스\nexport class Puri<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = TTable extends keyof TSchema ? TSchema[TTable] : unknown,\n TResult = TTable extends keyof TSchema ? TSchema[TTable] : unknown,\n TJoined = EmptyRecord,\n> {\n private knexQuery: Knex.QueryBuilder;\n\n // 생성자 시그니처들\n constructor(\n knex: Knex,\n tableName: TTable extends keyof TSchema ? TTable : unknown\n );\n constructor(\n knex: Knex,\n subquery: Puri<TSchema, any, any, TOriginal, any>,\n alias: TTable extends string ? TTable : never\n );\n constructor(\n private knex: Knex,\n tableNameOrSubquery: any,\n alias?: TTable extends string ? TTable : never\n ) {\n if (typeof tableNameOrSubquery === \"string\") {\n // 일반 테이블로 시작\n this.knexQuery = knex(tableNameOrSubquery).from(tableNameOrSubquery);\n } else {\n // 서브쿼리로 시작\n this.knexQuery = knex.from(tableNameOrSubquery.raw().as(alias));\n }\n }\n\n // Static SQL helper functions\n static count(column: string = \"*\"): SqlFunction<\"number\"> {\n return {\n _type: \"sql_function\",\n _return: \"number\",\n _sql: `COUNT(${column})`,\n };\n }\n\n static sum(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `SUM(${column})` };\n }\n\n static avg(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `AVG(${column})` };\n }\n\n static max(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `MAX(${column})` };\n }\n\n static min(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `MIN(${column})` };\n }\n\n static concat(...args: string[]): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `CONCAT(${args.join(\", \")})`,\n };\n }\n\n static upper(column: string): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `UPPER(${column})`,\n };\n }\n\n static lower(column: string): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `LOWER(${column})`,\n };\n }\n\n // Raw functions\n static rawString(sql: string): SqlFunction<\"string\"> {\n return { _type: \"sql_function\", _return: \"string\", _sql: sql };\n }\n\n static rawNumber(sql: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: sql };\n }\n\n static rawBoolean(sql: string): SqlFunction<\"boolean\"> {\n return { _type: \"sql_function\", _return: \"boolean\", _sql: sql };\n }\n\n static rawDate(sql: string): SqlFunction<\"date\"> {\n return { _type: \"sql_function\", _return: \"date\", _sql: sql };\n }\n\n // Alias 기반 Select\n select<TSelect extends SelectObject<TSchema, TTable, TOriginal, TJoined>>(\n selectObj: TSelect\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n ParseSelectObject<TSchema, TTable, TSelect, TOriginal, TJoined>,\n TJoined\n > {\n const selectClauses: (string | Knex.Raw)[] = [];\n\n for (const [alias, columnOrFunction] of Object.entries(selectObj)) {\n if (\n typeof columnOrFunction === \"object\" &&\n columnOrFunction._type === \"sql_function\"\n ) {\n // SQL 함수인 경우\n selectClauses.push(\n this.knex.raw(`${columnOrFunction._sql} as ${alias}`)\n );\n } else {\n // 일반 컬럼인 경우\n const columnPath = columnOrFunction as string;\n if (alias === columnPath) {\n // alias와 컬럼명이 같으면 alias 생략\n selectClauses.push(columnPath);\n } else {\n // alias 지정\n selectClauses.push(`${columnPath} as ${alias}`);\n }\n }\n }\n\n this.knexQuery.select(selectClauses);\n return this as any;\n }\n\n // 전체 선택 (편의 메서드)\n selectAll(): Puri<\n TSchema,\n TTable,\n TOriginal,\n TTable extends keyof TSchema\n ? TSchema[TTable] & TJoined\n : TResult & TJoined,\n TJoined\n > {\n this.knexQuery.select(\"*\");\n return this as any;\n }\n\n // Where 조건 (조인된 테이블 컬럼도 지원)\n where(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where(\n columnOrConditions: any,\n operatorOrValue?: any,\n value?: any\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n if (typeof columnOrConditions === \"object\") {\n this.knexQuery.where(columnOrConditions);\n } else if (arguments.length === 2) {\n if (operatorOrValue === null) {\n this.knexQuery.whereNull(columnOrConditions);\n return this;\n }\n this.knexQuery.where(columnOrConditions, operatorOrValue);\n } else if (arguments.length === 3) {\n if (value === null) {\n if (operatorOrValue === \"!=\") {\n this.knexQuery.whereNotNull(columnOrConditions);\n return this;\n } else if (operatorOrValue === \"=\") {\n this.knexQuery.whereNull(columnOrConditions);\n return this;\n }\n }\n this.knexQuery.where(columnOrConditions, operatorOrValue, value);\n } else {\n this.knexQuery.where(columnOrConditions);\n }\n return this;\n }\n\n // WhereIn (조인된 테이블 컬럼도 지원)\n whereIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n whereIn(\n column: string,\n values: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereIn(column, values);\n return this;\n }\n\n whereNotIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n whereNotIn(\n column: string,\n values: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereNotIn(column, values);\n return this;\n }\n\n whereMatch<\n TColumn extends FulltextColumns<TSchema, TTable, TOriginal, TJoined>,\n >(column: TColumn, value: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereRaw(`MATCH (${String(column)}) AGAINST (?)`, [value]);\n return this;\n }\n\n // WhereGroup (괄호 그룹핑 지원)\n whereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.where((builder) => {\n const group = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(builder);\n callback(group);\n });\n return this;\n }\n\n orWhereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.orWhere((builder) => {\n const group = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(builder);\n callback(group);\n });\n return this;\n }\n\n // Join\n join<\n TJoinTable extends keyof TSchema,\n TLColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>,\n TRColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>,\n >(\n table: TJoinTable,\n left: TLColumn,\n right: TRColumn,\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>\n >;\n join<TJoinTable extends keyof TSchema>(\n table: TJoinTable,\n joinCallback: (\n joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>\n ) => void\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>\n >;\n join<TSubResult, TAlias extends string>(\n subquery: Puri<TSchema, any, any, TSubResult, any>,\n alias: TAlias,\n left: string,\n right: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined & Record<TAlias, TSubResult>>;\n join(\n table: string,\n left: string,\n right: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n join(\n tableOrSubquery: string | keyof TSchema | Puri<TSchema, any, any, any, any>,\n ...args: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, any> {\n if (tableOrSubquery instanceof Puri) {\n // 서브쿼리 조인: join(subquery, alias, left, right)\n const [alias, left, right] = args;\n this.knexQuery.join(tableOrSubquery.raw().as(alias), left, right);\n } else if (\n args.length === 2 &&\n typeof args[0] === \"string\" &&\n typeof args[1] === \"string\"\n ) {\n const [left, right] = args;\n this.knexQuery.join(tableOrSubquery as string, left, right);\n } else if (args.length === 1 && typeof args[0] === \"function\") {\n const joinCallback = args[0];\n this.knexQuery.join(tableOrSubquery as string, (joinClause) => {\n joinCallback(new JoinClauseGroup(joinClause));\n });\n } else {\n throw new Error(\"Invalid arguments\");\n }\n return this as any;\n }\n\n leftJoin<\n TJoinTable extends keyof TSchema,\n TLColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>,\n TRColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>,\n >(\n table: TJoinTable,\n left: TLColumn,\n right: TRColumn,\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined & Record<TJoinTable, Partial<TSchema[TJoinTable]>>\n >;\n leftJoin<TSubResult, TAlias extends string>(\n subquery: Puri<TSchema, any, any, TSubResult, any>,\n alias: TAlias,\n left: string,\n right: string\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined & Record<TAlias, Partial<TSubResult>>\n >;\n leftJoin(\n table: string,\n left: string,\n right: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n leftJoin(\n tableOrSubquery: string | keyof TSchema | Puri<TSchema, any, any, any, any>,\n ...args: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, any> {\n if (tableOrSubquery instanceof Puri) {\n // 서브쿼리 조인: leftJoin(subquery, alias, left, right)\n const [alias, left, right] = args;\n this.knexQuery.leftJoin(tableOrSubquery.raw().as(alias), left, right);\n } else {\n const [left, right] = args;\n this.knexQuery.leftJoin(tableOrSubquery as string, left, right);\n }\n return this as any;\n }\n\n // OrderBy\n orderBy<TColumn extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(\n column: TColumn,\n direction: \"asc\" | \"desc\"\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n orderBy(\n column: string,\n direction: \"asc\" | \"desc\" = \"asc\"\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.orderBy(column, direction);\n return this;\n }\n\n // 기본 쿼리 메서드들\n limit(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.limit(count);\n return this;\n }\n\n offset(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.offset(count);\n return this;\n }\n\n // Group by (조인된 테이블 컬럼도 지원)\n groupBy<TColumns extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(\n ...columns: TColumns[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n groupBy(...columns: string[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.groupBy(...(columns as string[]));\n return this;\n }\n\n having(condition: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n having<TColumn extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(\n condition: TColumn,\n operator: ComparisonOperator,\n value: any\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n having(...conditions: string[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.having(...(conditions as [string, string, string]));\n return this;\n }\n // 실행 메서드들 - thenable 구현\n then<TResult1, TResult2 = never>(\n onfulfilled?:\n | ((\n value: Expand<TResult>[]\n ) => Expand<TResult1> | PromiseLike<Expand<TResult1>>)\n | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<Expand<TResult1> | TResult2> {\n return this.knexQuery.then(onfulfilled as any, onrejected);\n }\n\n catch<TResult2 = never>(\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<Expand<TResult> | TResult2> {\n return this.knexQuery.catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | null): Promise<Expand<TResult>> {\n return this.knexQuery.finally(onfinally);\n }\n\n // 안전한 실행 메서드들\n async first(): Promise<Expand<TResult> | undefined> {\n return this.knexQuery.first() as Promise<Expand<TResult> | undefined>;\n }\n\n async firstOrFail(): Promise<TResult> {\n const result = await this.knexQuery.first();\n if (!result) {\n throw new Error(\"No results found\");\n }\n return result as TResult;\n }\n\n async at(index: number): Promise<Expand<TResult> | undefined> {\n const results = await this;\n return results[index] as Expand<TResult> | undefined;\n }\n\n async assertAt(index: number): Promise<Expand<TResult>> {\n const results = await this;\n const result = results[index];\n if (result === undefined) {\n throw new Error(`No result found at index ${index}`);\n }\n return result;\n }\n\n // Insert/Update/Delete\n // TODO(Haze, 251030): InsertData<T>에서 nullable type을 제대로 처리하지 못하는 것 같음.\n async insert(\n data: TTable extends keyof TSchema ? InsertData<TSchema[TTable]> : unknown\n ): Promise<number[]> {\n return this.knexQuery.insert(data);\n }\n\n async update(\n data: Partial<TTable extends keyof TSchema ? TSchema[TTable] : unknown>\n ): Promise<number> {\n return this.knexQuery.update(data);\n }\n\n async delete(): Promise<number> {\n return this.knexQuery.delete();\n }\n\n toQuery(): string {\n return this.knexQuery.toQuery();\n }\n\n debug(): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n console.log(\n `${chalk.cyan(\"[Puri Debug]\")} ${chalk.yellow(this.formatSQL(this.toQuery()))}`\n );\n return this;\n }\n\n formatSQL(unformatted: string): string {\n // SQL 예약어 목록\n const keywords = [\n \"SELECT\",\n \"FROM\",\n \"WHERE\",\n \"INSERT\",\n \"INTO\",\n \"VALUES\",\n \"UPDATE\",\n \"DELETE\",\n \"CREATE\",\n \"TABLE\",\n \"ALTER\",\n \"DROP\",\n \"JOIN\",\n \"ON\",\n \"INNER\",\n \"LEFT\",\n \"RIGHT\",\n \"FULL\",\n \"OUTER\",\n \"GROUP\",\n \"BY\",\n \"ORDER\",\n \"HAVING\",\n \"DISTINCT\",\n \"LIMIT\",\n \"OFFSET\",\n \"AS\",\n \"AND\",\n \"OR\",\n \"NOT\",\n \"IN\",\n \"LIKE\",\n \"IS\",\n \"NULL\",\n \"CASE\",\n \"WHEN\",\n \"THEN\",\n \"ELSE\",\n \"END\",\n \"UNION\",\n \"ALL\",\n \"EXISTS\",\n \"BETWEEN\",\n ];\n\n let formatted = unformatted;\n\n // 예약어를 대문자로 변환\n keywords.forEach((keyword) => {\n const regex = new RegExp(`\\\\b${keyword}\\\\b`, \"gi\");\n formatted = formatted.replace(regex, keyword.toUpperCase());\n });\n\n // 주요 절 앞에 줄바꿈 추가\n const majorClauses = [\n \"SELECT\",\n \"FROM\",\n \"WHERE\",\n \"GROUP BY\",\n \"ORDER BY\",\n \"HAVING\",\n \"LIMIT\",\n \"UNION\",\n ];\n majorClauses.forEach((clause) => {\n const regex = new RegExp(`\\\\s+(${clause})\\\\s+`, \"gi\");\n formatted = formatted.replace(regex, `\\n${clause.toUpperCase()} `);\n });\n\n // JOIN 절 처리\n formatted = formatted.replace(\n /\\s+((?:INNER|LEFT|RIGHT|FULL OUTER)\\s+)?JOIN\\s+/gi,\n \"\\n$1JOIN \"\n );\n\n // AND, OR 조건 처리\n formatted = formatted.replace(/\\s+(AND|OR)\\s+/gi, \"\\n $1 \");\n\n // 괄호 처리 및 들여쓰기\n const lines = formatted.split(\"\\n\");\n const indentedLines = [];\n let indentLevel = 0;\n\n for (let line of lines) {\n const trimmedLine = line.trim();\n if (!trimmedLine) continue;\n\n // 닫는 괄호가 있으면 들여쓰기 레벨 감소\n const closingParens = (trimmedLine.match(/\\)/g) || []).length;\n const openingParens = (trimmedLine.match(/\\(/g) || []).length;\n\n if (closingParens > 0 && openingParens === 0) {\n indentLevel = Math.max(0, indentLevel - closingParens);\n }\n\n // 현재 들여쓰기 적용\n const indent = \" \".repeat(indentLevel);\n indentedLines.push(indent + trimmedLine);\n\n // 여는 괄호가 있으면 들여쓰기 레벨 증가\n if (openingParens > closingParens) {\n indentLevel += openingParens - closingParens;\n }\n }\n\n return indentedLines.join(\"\\n\").trim();\n }\n\n raw(): Knex.QueryBuilder {\n return this.knexQuery;\n }\n}\n\n// 11. Database 클래스\nclass WhereGroup<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = any,\n TJoined = EmptyRecord,\n> {\n constructor(private builder: Knex.QueryBuilder) {}\n\n where(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where(...args: any[]): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.where(args[0], ...args.slice(1));\n return this;\n }\n\n orWhere(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere(...args: any[]): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhere(args[0], ...args.slice(1));\n return this;\n }\n\n whereIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n whereIn(\n column: string,\n values: any[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.whereIn(column, values);\n return this;\n }\n\n orWhereIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhereIn(\n column: string,\n values: any[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhereIn(column, values);\n return this;\n }\n\n // 중첩 그룹 지원\n whereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.where((subBuilder) => {\n const subGroup = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n subBuilder\n );\n callback(subGroup);\n });\n return this;\n }\n\n orWhereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhere((subBuilder) => {\n const subGroup = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n subBuilder\n );\n callback(subGroup);\n });\n return this;\n }\n}\n\nexport class JoinClauseGroup<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = any,\n TJoined = EmptyRecord,\n> {\n constructor(private callback: Knex.JoinClause) {}\n\n on(\n callback: (joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>) => void\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n on(column: string, value: any): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n on(...args: any[]): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined> {\n this.callback.on(...(args as [string, string]));\n return this;\n }\n\n orOn(\n callback: (joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>) => void\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n orOn(column: string, value: any): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n orOn(...args: any[]): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined> {\n this.callback.orOn(...(args as [string, string]));\n return this;\n }\n}\n"],"names":["JoinClauseGroup","Puri","knex","tableNameOrSubquery","alias","knexQuery","from","raw","as","select","selectObj","selectClauses","Object","entries","columnOrFunction","_type","push","_sql","columnPath","selectAll","where","columnOrConditions","operatorOrValue","value","arguments","length","whereNull","whereNotNull","whereIn","column","values","whereNotIn","whereMatch","whereRaw","String","whereGroup","callback","builder","group","WhereGroup","orWhereGroup","orWhere","join","tableOrSubquery","args","left","right","joinCallback","joinClause","Error","leftJoin","orderBy","direction","limit","count","offset","groupBy","columns","having","conditions","then","onfulfilled","onrejected","catch","finally","onfinally","first","firstOrFail","result","at","index","results","assertAt","undefined","insert","data","update","delete","toQuery","debug","console","log","chalk","cyan","yellow","formatSQL","unformatted","keywords","formatted","forEach","keyword","regex","RegExp","replace","toUpperCase","majorClauses","clause","lines","split","indentedLines","indentLevel","line","trimmedLine","trim","closingParens","match","openingParens","Math","max","indent","repeat","_return","sum","avg","min","concat","upper","lower","rawString","sql","rawNumber","rawBoolean","rawDate","slice","orWhereIn","subBuilder","subGroup","on","orOn"],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export type ComparisonOperator = "=" | ">" | ">=" | "<" | "<=" | "<>" | "!=";
|
|
2
|
+
export type Expand<T> = T extends any[] ? {
|
|
3
|
+
[K in keyof T[0]]: T[0][K];
|
|
4
|
+
}[] : T extends object ? {
|
|
5
|
+
[K in keyof T]: T[K];
|
|
6
|
+
} : T;
|
|
7
|
+
export type MergeJoined<TExisting, TNew> = TExisting extends EmptyRecord ? TNew : TExisting & TNew;
|
|
8
|
+
type DeepEqual<T, U> = [T] extends [U] ? [U] extends [T] ? true : false : false;
|
|
9
|
+
type Extends<T, U> = DeepEqual<T, Record<string, never>> extends true ? false : (T extends U ? true : false);
|
|
10
|
+
type NullableToOptional<T> = {
|
|
11
|
+
[K in keyof T as T[K] extends null | undefined ? K : never]?: Exclude<T[K], null | undefined>;
|
|
12
|
+
} & Partial<{
|
|
13
|
+
[K in keyof T as T[K] extends null | undefined ? never : K]: T[K];
|
|
14
|
+
}>;
|
|
15
|
+
export type EmptyRecord = Record<string, never>;
|
|
16
|
+
export type ResultAvailableColumns<TSchema, T extends keyof TSchema | string, TOriginal = any, TResult = any, TJoined = EmptyRecord> = AvailableColumns<TSchema, T, TOriginal, TJoined> | `${keyof TResult & string}`;
|
|
17
|
+
export type AvailableColumns<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = T extends keyof TSchema ? (Extends<TJoined, Record<string, any>> extends false ? keyof TSchema[T] : {
|
|
18
|
+
[K in keyof TJoined]: TJoined[K] extends Record<string, any> ? `${string & K}.${keyof TJoined[K] & string}` : never;
|
|
19
|
+
}[keyof TJoined]) | `${T & string}.${keyof TSchema[T] & string}` : keyof TOriginal | `${T & string}.${keyof TOriginal & string}` | (Extends<TJoined, Record<string, any>> extends true ? {
|
|
20
|
+
[K in keyof TJoined]: TJoined[K] extends Record<string, any> ? `${string & K}.${keyof TJoined[K] & string}` : never;
|
|
21
|
+
}[keyof TJoined] : never);
|
|
22
|
+
export type ExtractColumnType<TSchema, T extends keyof TSchema | string, Path extends string, TOriginal = any, TJoined = EmptyRecord> = T extends keyof TSchema ? Path extends keyof TSchema[T] ? TSchema[T][Path] : Path extends `${T & string}.${infer Column}` ? Column extends keyof TSchema[T] ? TSchema[T][Column] : never : Path extends `${infer Table}.${infer Column}` ? Table extends keyof TJoined ? TJoined[Table] extends Record<string, any> ? Column extends keyof TJoined[Table] ? TJoined[Table][Column] : never : never : never : never : Path extends `${T & string}.${infer Column}` ? Column extends keyof TOriginal ? TOriginal[Column] : never : Path extends `${infer Table}.${infer Column}` ? Table extends keyof TJoined ? TJoined[Table] extends Record<string, any> ? Column extends keyof TJoined[Table] ? TJoined[Table][Column] : never : never : never : Path extends keyof TOriginal ? TOriginal[Path] : never;
|
|
23
|
+
export type SqlFunction<T extends "string" | "number" | "boolean" | "date"> = {
|
|
24
|
+
_type: "sql_function";
|
|
25
|
+
_return: T;
|
|
26
|
+
_sql: string;
|
|
27
|
+
};
|
|
28
|
+
type ExtractSqlType<T> = T extends SqlFunction<infer R> ? R extends "string" ? string : R extends "number" ? number : R extends "boolean" ? boolean : R extends "date" ? Date : never : never;
|
|
29
|
+
export type SelectValue<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = AvailableColumns<TSchema, T, TOriginal, TJoined> | SqlFunction<"string" | "number" | "boolean" | "date">;
|
|
30
|
+
export type SelectObject<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = Record<string, SelectValue<TSchema, T, TOriginal, TJoined>>;
|
|
31
|
+
export type ParseSelectObject<TSchema, T extends keyof TSchema | string, S extends SelectObject<TSchema, T, TOriginal, TJoined>, TOriginal = any, TJoined = EmptyRecord> = {
|
|
32
|
+
[K in keyof S]: S[K] extends SqlFunction<any> ? ExtractSqlType<S[K]> : ExtractColumnType<TSchema, T, S[K] & string, TOriginal, TJoined>;
|
|
33
|
+
};
|
|
34
|
+
export type WhereCondition<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = (T extends keyof TSchema ? {
|
|
35
|
+
[K in keyof TSchema[T]]?: TSchema[T][K] | TSchema[T][K][];
|
|
36
|
+
} : {
|
|
37
|
+
[K in keyof TOriginal]?: TOriginal[K] | TOriginal[K][];
|
|
38
|
+
}) & (TJoined extends Record<string, any> ? {
|
|
39
|
+
[K in keyof TJoined as TJoined[K] extends Record<string, any> ? keyof TJoined[K] & string : never]?: TJoined[K] extends Record<string, any> ? TJoined[K][K extends keyof TJoined[K] ? K : never] | TJoined[K][K extends keyof TJoined[K] ? K : never][] : never;
|
|
40
|
+
} : Record<string, never>);
|
|
41
|
+
export type FulltextColumns<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = T extends keyof TSchema ? (TSchema[T] extends {
|
|
42
|
+
__fulltext__: readonly (infer Col)[];
|
|
43
|
+
} ? Col & string : never) | (TSchema[T] extends {
|
|
44
|
+
__fulltext__: readonly (infer Col)[];
|
|
45
|
+
} ? `${T & string}.${Col & string}` : never) | (TJoined extends Record<string, any> ? {
|
|
46
|
+
[K in keyof TJoined]: TJoined[K] extends {
|
|
47
|
+
__fulltext__: readonly (infer Col)[];
|
|
48
|
+
} ? (Col & string) | `${string & K}.${Col & string}` : never;
|
|
49
|
+
}[keyof TJoined] : never) : (TOriginal extends {
|
|
50
|
+
__fulltext__: readonly (infer Col)[];
|
|
51
|
+
} ? Col & string : never) | (TOriginal extends {
|
|
52
|
+
__fulltext__: readonly (infer Col)[];
|
|
53
|
+
} ? `${T & string}.${Col & string}` : never) | (TJoined extends Record<string, any> ? {
|
|
54
|
+
[K in keyof TJoined]: TJoined[K] extends {
|
|
55
|
+
__fulltext__: readonly (infer Col)[];
|
|
56
|
+
} ? (Col & string) | `${string & K}.${Col & string}` : never;
|
|
57
|
+
}[keyof TJoined] : never);
|
|
58
|
+
export type InsertData<T> = NullableToOptional<Omit<T, "id" | "created_at" | "__fulltext__">>;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=puri.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/database/puri.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PuriWrapper } from "./puri-wrapper";
|
|
2
|
+
import type { DBPreset } from "./db";
|
|
3
|
+
export declare class TransactionContext {
|
|
4
|
+
private transactions;
|
|
5
|
+
getTransaction(preset: DBPreset): PuriWrapper | undefined;
|
|
6
|
+
setTransaction(preset: DBPreset, trx: PuriWrapper): void;
|
|
7
|
+
deleteTransaction(preset: DBPreset): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=transaction-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../../src/database/transaction-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAyC;IAE7D,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS;IAIzD,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI;IAIxD,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;CAG1C"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"TransactionContext",{enumerable:true,get:function(){return TransactionContext}});function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}var TransactionContext=/*#__PURE__*/function(){"use strict";function TransactionContext(){_class_call_check(this,TransactionContext);_define_property(this,"transactions",new Map)}_create_class(TransactionContext,[{key:"getTransaction",value:function getTransaction(preset){return this.transactions.get(preset)}},{key:"setTransaction",value:function setTransaction(preset,trx){this.transactions.set(preset,trx)}},{key:"deleteTransaction",value:function deleteTransaction(preset){this.transactions.delete(preset)}}]);return TransactionContext}();
|
|
2
|
+
//# sourceMappingURL=transaction-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/database/transaction-context.ts"],"sourcesContent":["import type { PuriWrapper } from \"./puri-wrapper\";\nimport type { DBPreset } from \"./db\";\n\nexport class TransactionContext {\n private transactions: Map<DBPreset, PuriWrapper> = new Map();\n\n getTransaction(preset: DBPreset): PuriWrapper | undefined {\n return this.transactions.get(preset);\n }\n\n setTransaction(preset: DBPreset, trx: PuriWrapper): void {\n this.transactions.set(preset, trx);\n }\n\n deleteTransaction(preset: DBPreset): void {\n this.transactions.delete(preset);\n }\n}\n"],"names":["TransactionContext","transactions","Map","getTransaction","preset","get","setTransaction","trx","set","deleteTransaction","delete"],"mappings":"oGAGaA,4DAAAA,i0BAAN,IAAA,AAAMA,gCAAN,iCAAMA,4CAAAA,oBACX,sBAAQC,eAA2C,IAAIC,mBAD5CF,qBAGXG,IAAAA,uBAAAA,SAAAA,eAAeC,MAAgB,EAC7B,OAAO,IAAI,CAACH,YAAY,CAACI,GAAG,CAACD,OAC/B,IAEAE,IAAAA,uBAAAA,SAAAA,eAAeF,MAAgB,CAAEG,GAAgB,EAC/C,IAAI,CAACN,YAAY,CAACO,GAAG,CAACJ,OAAQG,IAChC,IAEAE,IAAAA,0BAAAA,SAAAA,kBAAkBL,MAAgB,EAChC,IAAI,CAACH,YAAY,CAACS,MAAM,CAACN,OAC3B,YAbWJ"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Knex } from "knex";
|
|
2
|
+
type TableData = {
|
|
3
|
+
references: Set<string>;
|
|
4
|
+
rows: any[];
|
|
5
|
+
uniqueIndexes: {
|
|
6
|
+
name?: string;
|
|
7
|
+
columns: string[];
|
|
8
|
+
}[];
|
|
9
|
+
uniquesMap: Map<string, string>;
|
|
10
|
+
};
|
|
11
|
+
export type UBRef = {
|
|
12
|
+
uuid: string;
|
|
13
|
+
of: string;
|
|
14
|
+
use?: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function isRefField(field: any): field is UBRef;
|
|
17
|
+
export declare class UpsertBuilder {
|
|
18
|
+
tables: Map<string, TableData>;
|
|
19
|
+
constructor();
|
|
20
|
+
getTable(tableName: string): TableData;
|
|
21
|
+
hasTable(tableName: string): boolean;
|
|
22
|
+
register<T extends string>(tableName: string, row: {
|
|
23
|
+
[key in T]?: UBRef | string | number | boolean | bigint | null | object | unknown;
|
|
24
|
+
}): UBRef;
|
|
25
|
+
upsert(wdb: Knex, tableName: string, chunkSize?: number): Promise<number[]>;
|
|
26
|
+
insertOnly(wdb: Knex, tableName: string, chunkSize?: number): Promise<number[]>;
|
|
27
|
+
upsertOrInsert(wdb: Knex, tableName: string, mode: "upsert" | "insert", chunkSize?: number): Promise<number[]>;
|
|
28
|
+
updateBatch(wdb: Knex, tableName: string, options?: {
|
|
29
|
+
chunkSize?: number;
|
|
30
|
+
where?: string | string[];
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=upsert-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsert-builder.d.ts","sourceRoot":"","sources":["../../src/database/upsert-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,aAAa,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACtD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AACF,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AACF,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,KAAK,CAOrD;AAED,qBAAa,aAAa;IACxB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;;IAK/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAsBtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpC,QAAQ,CAAC,CAAC,SAAS,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE;SACF,GAAG,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,GACL,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,IAAI,GACJ,MAAM,GACN,OAAO;KACZ,GACA,KAAK;IA0EF,MAAM,CACV,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAGd,UAAU,CACd,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAId,cAAc,CAClB,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,EACzB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAgHd,WAAW,CACf,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC3B,GACA,OAAO,CAAC,IAAI,CAAC;CA6BjB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get UpsertBuilder(){return UpsertBuilder},get isRefField(){return isRefField}});var _crypto=require("crypto");var _lodash=/*#__PURE__*/_interop_require_default(require("lodash"));var _entitymanager=require("../entity/entity-manager");var _utils=require("../utils/utils");var _batch_update=require("./_batch_update");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _object_without_properties(source,excluded){if(source==null)return{};var target=_object_without_properties_loose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _object_without_properties_loose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}function isRefField(field){return field!==undefined&&field!==null&&field.of!==undefined&&field.uuid!==undefined}var UpsertBuilder=/*#__PURE__*/function(){"use strict";function UpsertBuilder(){_class_call_check(this,UpsertBuilder);_define_property(this,"tables",void 0);this.tables=new Map}_create_class(UpsertBuilder,[{key:"getTable",value:function getTable(tableName){var table=this.tables.get(tableName);if(table===undefined){var tableSpec=function(){try{return _entitymanager.EntityManager.getTableSpec(tableName)}catch(e){return null}}();var _tableSpec_uniqueIndexes;this.tables.set(tableName,{references:new Set,rows:[],uniqueIndexes:(_tableSpec_uniqueIndexes=tableSpec===null||tableSpec===void 0?void 0:tableSpec.uniqueIndexes)!==null&&_tableSpec_uniqueIndexes!==void 0?_tableSpec_uniqueIndexes:[],uniquesMap:new Map})}return this.tables.get(tableName)}},{key:"hasTable",value:function hasTable(tableName){return this.tables.has(tableName)}},{key:"register",value:function register(tableName,row){var table=this.getTable(tableName);var uniqueKeys=table.uniqueIndexes.map(function(unqIndex){var uniqueKeyArray=unqIndex.columns.map(function(unqCol){var val=row[unqCol];if(isRefField(val)){return val.uuid}else{var _row_unqCol;return(_row_unqCol=row[unqCol])!==null&&_row_unqCol!==void 0?_row_unqCol:(0,_crypto.randomUUID)()}});if(uniqueKeyArray.length===0){return null}return uniqueKeyArray.join("---delimiter--")}).filter(_utils.nonNullable);var uuid=function(){if(uniqueKeys.length>0){var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=uniqueKeys[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var uniqueKey=_step.value;if(table.uniquesMap.has(uniqueKey)){return table.uniquesMap.get(uniqueKey)}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}}return(0,_crypto.randomUUID)()}();if(uniqueKeys.length>0){var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=uniqueKeys[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var uniqueKey=_step.value;table.uniquesMap.set(uniqueKey,uuid)}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}}row=Object.keys(row).reduce(function(r,rowKey){var rowValue=row[rowKey];if(isRefField(rowValue)){var _rowValue;var _use;(_use=(_rowValue=rowValue).use)!==null&&_use!==void 0?_use:_rowValue.use="id";table.references.add(rowValue.of+"."+rowValue.use);r[rowKey]=rowValue}else if((typeof rowValue==="undefined"?"undefined":_type_of(rowValue))==="object"&&!_instanceof(rowValue,Date)){r[rowKey]=rowValue===null?null:JSON.stringify(rowValue)}else{r[rowKey]=rowValue}return r},{});table.rows.push(_object_spread({uuid:uuid},row));var _row_uuid;return{of:tableName,uuid:(_row_uuid=row.uuid)!==null&&_row_uuid!==void 0?_row_uuid:uuid}}},{key:"upsert",value:function upsert(wdb,tableName,chunkSize){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.upsertOrInsert(wdb,tableName,"upsert",chunkSize)]})}).call(this)}},{key:"insertOnly",value:function insertOnly(wdb,tableName,chunkSize){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.upsertOrInsert(wdb,tableName,"insert",chunkSize)]})}).call(this)}},{key:"upsertOrInsert",value:function upsertOrInsert(wdb,tableName,mode,chunkSize){return _async_to_generator(function(){var table,_Array_from_reduce,references,refTables,extractFields,groups,_groups_normal,normalRows,_groups_selfRef,selfRefRows,chunks,uuidMap,_iteratorNormalCompletion,_didIteratorError,_iteratorError,_iterator,_step,chunk,q,uuids,upsertedRows,err,allIds,_allIds,selfRefIds;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(this.hasTable(tableName)===false){return[2,[]]}table=this.tables.get(tableName);if(table===undefined){throw new Error("존재하지 않는 테이블 ".concat(tableName,"에 upsert 요청"))}else if(table.rows.length===0){throw new Error("".concat(tableName,"에 upsert 할 데이터가 없습니다."))}if(table.rows.some(function(row){return Object.entries(row).some(function(param){var _param=_sliced_to_array(param,2),value=_param[1];return isRefField(value)&&value.of!==tableName})})){throw new Error("".concat(tableName," 해결되지 않은 참조가 있습니다."))}_Array_from_reduce=Array.from(this.tables).reduce(function(r,param){var _param=_sliced_to_array(param,2),table=_param[1];var reference=Array.from(table.references.values()).find(function(ref){return ref.includes(tableName+".")});if(reference){r.references.push(reference);r.refTables.push(table)}return r},{references:[],refTables:[]}),references=_Array_from_reduce.references,refTables=_Array_from_reduce.refTables;extractFields=_lodash.default.uniq(references).map(function(reference){return reference.split(".")[1]});groups=_lodash.default.groupBy(table.rows,function(row){return Object.entries(row).some(function(param){var _param=_sliced_to_array(param,2),value=_param[1];return isRefField(value)})?"selfRef":"normal"});normalRows=(_groups_normal=groups.normal)!==null&&_groups_normal!==void 0?_groups_normal:[];selfRefRows=(_groups_selfRef=groups.selfRef)!==null&&_groups_selfRef!==void 0?_groups_selfRef:[];chunks=chunkSize?_lodash.default.chunk(normalRows,chunkSize):[normalRows];uuidMap=new Map;_iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;_state.label=1;case 1:_state.trys.push([1,10,11,12]);_iterator=chunks[Symbol.iterator]();_state.label=2;case 2:if(!!(_iteratorNormalCompletion=(_step=_iterator.next()).done))return[3,9];chunk=_step.value;q=wdb.insert(chunk).into(tableName);if(!(mode==="insert"))return[3,4];return[4,q];case 3:_state.sent();return[3,6];case 4:if(!(mode==="upsert"))return[3,6];return[4,q.onDuplicateUpdate.apply(q,Object.keys(normalRows[0]))];case 5:_state.sent();_state.label=6;case 6:uuids=chunk.map(function(row){return row.uuid});return[4,wdb(tableName).select(_lodash.default.uniq(["uuid","id"].concat(_to_consumable_array(extractFields)))).whereIn("uuid",uuids)];case 7:upsertedRows=_state.sent();upsertedRows.forEach(function(row){uuidMap.set(row.uuid,row)});_state.label=8;case 8:_iteratorNormalCompletion=true;return[3,2];case 9:return[3,12];case 10:err=_state.sent();_didIteratorError=true;_iteratorError=err;return[3,12];case 11:try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}return[7];case 12:refTables.map(function(table){table.rows=table.rows.map(function(row){Object.keys(row).map(function(key){var prop=row[key];if(isRefField(prop)&&prop.of===tableName){var parent=uuidMap.get(prop.uuid);if(parent===undefined){console.error(prop);throw new Error("존재하지 않는 uuid ".concat(prop.uuid," -- in ").concat(tableName))}var _prop_use;row[key]=parent[(_prop_use=prop.use)!==null&&_prop_use!==void 0?_prop_use:"id"]}});return row})});allIds=Array.from(uuidMap.values()).map(function(row){return row.id});if(!(selfRefRows.length>0))return[3,14];table.rows=selfRefRows;return[4,this.upsert(wdb,tableName,chunkSize)];case 13:selfRefIds=_state.sent();(_allIds=allIds).push.apply(_allIds,_to_consumable_array(selfRefIds));return[3,15];case 14:table.rows=[];table.references.clear();table.uniquesMap.clear();_state.label=15;case 15:return[2,allIds]}})}).call(this)}},{key:"updateBatch",value:function updateBatch(wdb,tableName,options){return _async_to_generator(function(){var table,_options_where,whereColumns,rows;return _ts_generator(this,function(_state){switch(_state.label){case 0:options=_lodash.default.defaults(options,{chunkSize:500,where:"id"});if(this.hasTable(tableName)===false){return[2]}table=this.tables.get(tableName);if(table.rows.length===0){return[2]}whereColumns=Array.isArray(options.where)?options.where:[(_options_where=options.where)!==null&&_options_where!==void 0?_options_where:"id"];rows=table.rows.map(function(_row){var uuid=_row.uuid,row=_object_without_properties(_row,["uuid"]);return row});return[4,(0,_batch_update.batchUpdate)(wdb,tableName,whereColumns,rows,options.chunkSize)];case 1:_state.sent();table.rows=[];table.references.clear();table.uniquesMap.clear();return[2]}})}).call(this)}}]);return UpsertBuilder}();
|
|
2
|
+
//# sourceMappingURL=upsert-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/database/upsert-builder.ts"],"sourcesContent":["import { randomUUID } from \"crypto\";\nimport _ from \"lodash\";\nimport { Knex } from \"knex\";\nimport { EntityManager } from \"../entity/entity-manager\";\nimport { nonNullable } from \"../utils/utils\";\nimport { RowWithId, batchUpdate } from \"./_batch_update\";\n\ntype TableData = {\n references: Set<string>;\n rows: any[];\n uniqueIndexes: { name?: string; columns: string[] }[];\n uniquesMap: Map<string, string>;\n};\nexport type UBRef = {\n uuid: string;\n of: string;\n use?: string;\n};\nexport function isRefField(field: any): field is UBRef {\n return (\n field !== undefined &&\n field !== null &&\n field.of !== undefined &&\n field.uuid !== undefined\n );\n}\n\nexport class UpsertBuilder {\n tables: Map<string, TableData>;\n constructor() {\n this.tables = new Map();\n }\n\n getTable(tableName: string): TableData {\n const table = this.tables.get(tableName);\n if (table === undefined) {\n const tableSpec = (() => {\n try {\n return EntityManager.getTableSpec(tableName);\n } catch {\n return null;\n }\n })();\n\n this.tables.set(tableName, {\n references: new Set(),\n rows: [],\n uniqueIndexes: tableSpec?.uniqueIndexes ?? [],\n uniquesMap: new Map<string, string>(),\n });\n }\n\n return this.tables.get(tableName)!;\n }\n\n hasTable(tableName: string): boolean {\n return this.tables.has(tableName);\n }\n\n register<T extends string>(\n tableName: string,\n row: {\n [key in T]?:\n | UBRef\n | string\n | number\n | boolean\n | bigint\n | null\n | object\n | unknown;\n }\n ): UBRef {\n const table = this.getTable(tableName);\n\n // 해당 테이블의 unique 인덱스를 순회하며 키 생성\n const uniqueKeys = table.uniqueIndexes\n .map((unqIndex) => {\n const uniqueKeyArray = unqIndex.columns.map((unqCol) => {\n const val = row[unqCol as keyof typeof row];\n if (isRefField(val)) {\n return val.uuid;\n } else {\n return row[unqCol as keyof typeof row] ?? randomUUID(); // nullable인 경우 uuid로 랜덤값 삽입\n }\n });\n\n // 값이 모두 null인 경우 키 생성 패스\n if (uniqueKeyArray.length === 0) {\n return null;\n }\n return uniqueKeyArray.join(\"---delimiter--\");\n })\n .filter(nonNullable);\n\n // uuid 생성 로직\n const uuid: string = (() => {\n // 키를 순회하여 이미 존재하는 키가 있는지 확인\n if (uniqueKeys.length > 0) {\n for (const uniqueKey of uniqueKeys) {\n if (table.uniquesMap.has(uniqueKey)) {\n return table.uniquesMap.get(uniqueKey)!; // 이미 has 체크를 했으므로 undefined 불가능\n }\n }\n }\n\n // 찾을 수 없는 경우 생성\n return randomUUID();\n })();\n\n // 모든 유니크키에 대해 유니크맵에 uuid 저장\n if (uniqueKeys.length > 0) {\n for (const uniqueKey of uniqueKeys) {\n table.uniquesMap.set(uniqueKey, uuid);\n }\n }\n\n // 이 테이블에 사용된 RefField를 순회하여, 현재 테이블 정보에 어떤 필드를 참조하는지 추가\n // 이 정보를 나중에 치환할 때 사용\n row = Object.keys(row).reduce((r, rowKey) => {\n const rowValue = row[rowKey as keyof typeof row];\n\n if (isRefField(rowValue)) {\n rowValue.use ??= \"id\";\n table.references.add(rowValue.of + \".\" + rowValue.use);\n r[rowKey] = rowValue;\n } else if (typeof rowValue === \"object\" && !(rowValue instanceof Date)) {\n // object인 경우 JSON으로 변환\n r[rowKey] = rowValue === null ? null : JSON.stringify(rowValue);\n } else {\n r[rowKey] = rowValue;\n }\n return r;\n }, {} as any);\n\n table.rows.push({\n uuid,\n ...row,\n });\n\n return {\n of: tableName,\n uuid: (row as { uuid?: string }).uuid ?? uuid,\n };\n }\n\n async upsert(\n wdb: Knex,\n tableName: string,\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertOrInsert(wdb, tableName, \"upsert\", chunkSize);\n }\n async insertOnly(\n wdb: Knex,\n tableName: string,\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertOrInsert(wdb, tableName, \"insert\", chunkSize);\n }\n\n async upsertOrInsert(\n wdb: Knex,\n tableName: string,\n mode: \"upsert\" | \"insert\",\n chunkSize?: number\n ): Promise<number[]> {\n if (this.hasTable(tableName) === false) {\n return [];\n }\n\n const table = this.tables.get(tableName);\n if (table === undefined) {\n throw new Error(`존재하지 않는 테이블 ${tableName}에 upsert 요청`);\n } else if (table.rows.length === 0) {\n throw new Error(`${tableName}에 upsert 할 데이터가 없습니다.`);\n }\n\n if (\n table.rows.some((row) =>\n Object.entries(row).some(\n ([, value]) => isRefField(value) && value.of !== tableName\n )\n )\n ) {\n throw new Error(`${tableName} 해결되지 않은 참조가 있습니다.`);\n }\n\n // 전체 테이블 순회하여 현재 테이블 참조하는 모든 테이블 추출\n const { references, refTables } = Array.from(this.tables).reduce(\n (r, [, table]) => {\n const reference = Array.from(table.references.values()).find((ref) =>\n ref.includes(tableName + \".\")\n );\n if (reference) {\n r.references.push(reference);\n r.refTables.push(table);\n }\n\n return r;\n },\n {\n references: [] as string[],\n refTables: [] as TableData[],\n }\n );\n const extractFields = _.uniq(references).map(\n (reference) => reference.split(\".\")[1]\n );\n\n // 내부 참조 있는 경우 필터하여 분리\n const groups = _.groupBy(table.rows, (row) =>\n Object.entries(row).some(([, value]) => isRefField(value))\n ? \"selfRef\"\n : \"normal\"\n );\n const normalRows = groups.normal ?? [];\n const selfRefRows = groups.selfRef ?? [];\n\n const chunks = chunkSize ? _.chunk(normalRows, chunkSize) : [normalRows];\n const uuidMap = new Map<string, any>();\n\n for (const chunk of chunks) {\n const q = wdb.insert(chunk).into(tableName);\n if (mode === \"insert\") {\n await q;\n } else if (mode === \"upsert\") {\n await q.onDuplicateUpdate.apply(q, Object.keys(normalRows[0]));\n }\n\n // upsert된 row들을 다시 조회하여 uuidMap에 저장\n const uuids = chunk.map((row) => row.uuid);\n const upsertedRows = await wdb(tableName)\n .select(_.uniq([\"uuid\", \"id\", ...extractFields]))\n .whereIn(\"uuid\", uuids);\n upsertedRows.forEach((row: any) => {\n uuidMap.set(row.uuid, row);\n });\n }\n\n // 해당 테이블 참조를 실제 밸류로 변경\n refTables.map((table) => {\n table.rows = table.rows.map((row) => {\n Object.keys(row).map((key) => {\n const prop = row[key];\n if (isRefField(prop) && prop.of === tableName) {\n const parent = uuidMap.get(prop.uuid);\n if (parent === undefined) {\n console.error(prop);\n throw new Error(\n `존재하지 않는 uuid ${prop.uuid} -- in ${tableName}`\n );\n }\n row[key] = parent[prop.use ?? \"id\"];\n }\n });\n return row;\n });\n });\n\n const allIds = Array.from(uuidMap.values()).map((row) => row.id);\n\n // 자기 참조가 있는 경우 재귀적으로 upsert\n if (selfRefRows.length > 0) {\n // 처리된 데이터를 제외하고 다시 upsert\n table.rows = selfRefRows;\n const selfRefIds = await this.upsert(wdb, tableName, chunkSize);\n allIds.push(...selfRefIds);\n } else {\n // 자기 참조가 없으면 해당 테이블의 데이터 초기화\n table.rows = [];\n table.references.clear();\n table.uniquesMap.clear();\n }\n\n return allIds;\n }\n\n async updateBatch(\n wdb: Knex,\n tableName: string,\n options?: {\n chunkSize?: number;\n where?: string | string[];\n }\n ): Promise<void> {\n options = _.defaults(options, {\n chunkSize: 500,\n where: \"id\",\n });\n\n if (this.hasTable(tableName) === false) {\n return;\n }\n const table = this.tables.get(tableName)!;\n if (table.rows.length === 0) {\n return;\n }\n\n const whereColumns = Array.isArray(options.where)\n ? options.where\n : [options.where ?? \"id\"];\n const rows = table.rows.map((_row) => {\n const { uuid, ...row } = _row;\n return row as RowWithId<string>;\n });\n\n await batchUpdate(wdb, tableName, whereColumns, rows, options.chunkSize);\n\n // updateBatch 완료 후 처리된 데이터 제거\n table.rows = [];\n table.references.clear();\n table.uniquesMap.clear();\n }\n}\n"],"names":["UpsertBuilder","isRefField","field","undefined","of","uuid","tables","Map","getTable","tableName","table","get","tableSpec","EntityManager","getTableSpec","set","references","Set","rows","uniqueIndexes","uniquesMap","hasTable","has","register","row","uniqueKeys","map","unqIndex","uniqueKeyArray","columns","unqCol","val","randomUUID","length","join","filter","nonNullable","uniqueKey","Object","keys","reduce","r","rowKey","rowValue","use","add","Date","JSON","stringify","push","upsert","wdb","chunkSize","upsertOrInsert","insertOnly","mode","Array","refTables","extractFields","groups","normalRows","selfRefRows","chunks","uuidMap","chunk","q","uuids","upsertedRows","allIds","selfRefIds","Error","some","entries","value","from","reference","values","find","ref","includes","_","uniq","split","groupBy","normal","selfRef","insert","into","onDuplicateUpdate","apply","select","whereIn","forEach","key","prop","parent","console","error","id","clear","updateBatch","options","whereColumns","defaults","where","isArray","_row","batchUpdate"],"mappings":"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"}
|