@simplysm/orm-node 13.0.0-beta.6
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/.cache/typecheck-node.tsbuildinfo +1 -0
- package/README.md +418 -0
- package/dist/connections/mssql-db-conn.js +386 -0
- package/dist/connections/mssql-db-conn.js.map +7 -0
- package/dist/connections/mysql-db-conn.js +227 -0
- package/dist/connections/mysql-db-conn.js.map +7 -0
- package/dist/connections/postgresql-db-conn.js +191 -0
- package/dist/connections/postgresql-db-conn.js.map +7 -0
- package/dist/core-common/src/common.types.d.ts +74 -0
- package/dist/core-common/src/common.types.d.ts.map +1 -0
- package/dist/core-common/src/env.d.ts +6 -0
- package/dist/core-common/src/env.d.ts.map +1 -0
- package/dist/core-common/src/errors/argument-error.d.ts +25 -0
- package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/sd-error.d.ts +27 -0
- package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
- package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
- package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
- package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
- package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
- package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
- package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
- package/dist/core-common/src/features/event-emitter.d.ts +66 -0
- package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
- package/dist/core-common/src/features/serial-queue.d.ts +47 -0
- package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
- package/dist/core-common/src/index.d.ts +32 -0
- package/dist/core-common/src/index.d.ts.map +1 -0
- package/dist/core-common/src/types/date-only.d.ts +152 -0
- package/dist/core-common/src/types/date-only.d.ts.map +1 -0
- package/dist/core-common/src/types/date-time.d.ts +96 -0
- package/dist/core-common/src/types/date-time.d.ts.map +1 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
- package/dist/core-common/src/types/time.d.ts +68 -0
- package/dist/core-common/src/types/time.d.ts.map +1 -0
- package/dist/core-common/src/types/uuid.d.ts +35 -0
- package/dist/core-common/src/types/uuid.d.ts.map +1 -0
- package/dist/core-common/src/utils/bytes.d.ts +51 -0
- package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
- package/dist/core-common/src/utils/date-format.d.ts +90 -0
- package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
- package/dist/core-common/src/utils/json.d.ts +34 -0
- package/dist/core-common/src/utils/json.d.ts.map +1 -0
- package/dist/core-common/src/utils/num.d.ts +60 -0
- package/dist/core-common/src/utils/num.d.ts.map +1 -0
- package/dist/core-common/src/utils/obj.d.ts +258 -0
- package/dist/core-common/src/utils/obj.d.ts.map +1 -0
- package/dist/core-common/src/utils/path.d.ts +23 -0
- package/dist/core-common/src/utils/path.d.ts.map +1 -0
- package/dist/core-common/src/utils/primitive.d.ts +18 -0
- package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
- package/dist/core-common/src/utils/str.d.ts +103 -0
- package/dist/core-common/src/utils/str.d.ts.map +1 -0
- package/dist/core-common/src/utils/template-strings.d.ts +84 -0
- package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
- package/dist/core-common/src/utils/transferable.d.ts +47 -0
- package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
- package/dist/core-common/src/utils/wait.d.ts +19 -0
- package/dist/core-common/src/utils/wait.d.ts.map +1 -0
- package/dist/core-common/src/utils/xml.d.ts +36 -0
- package/dist/core-common/src/utils/xml.d.ts.map +1 -0
- package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
- package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
- package/dist/db-conn-factory.js +88 -0
- package/dist/db-conn-factory.js.map +7 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +7 -0
- package/dist/node-db-context-executor.js +129 -0
- package/dist/node-db-context-executor.js.map +7 -0
- package/dist/orm-common/src/db-context.d.ts +669 -0
- package/dist/orm-common/src/db-context.d.ts.map +1 -0
- package/dist/orm-common/src/errors/db-transaction-error.d.ts +51 -0
- package/dist/orm-common/src/errors/db-transaction-error.d.ts.map +1 -0
- package/dist/orm-common/src/exec/executable.d.ts +79 -0
- package/dist/orm-common/src/exec/executable.d.ts.map +1 -0
- package/dist/orm-common/src/exec/queryable.d.ts +708 -0
- package/dist/orm-common/src/exec/queryable.d.ts.map +1 -0
- package/dist/orm-common/src/exec/search-parser.d.ts +72 -0
- package/dist/orm-common/src/exec/search-parser.d.ts.map +1 -0
- package/dist/orm-common/src/expr/expr-unit.d.ts +25 -0
- package/dist/orm-common/src/expr/expr-unit.d.ts.map +1 -0
- package/dist/orm-common/src/expr/expr.d.ts +1369 -0
- package/dist/orm-common/src/expr/expr.d.ts.map +1 -0
- package/dist/orm-common/src/index.d.ts +32 -0
- package/dist/orm-common/src/index.d.ts.map +1 -0
- package/dist/orm-common/src/models/system-migration.d.ts +10 -0
- package/dist/orm-common/src/models/system-migration.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts +95 -0
- package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts +66 -0
- package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts +84 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts +45 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts +84 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts +54 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts +84 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts +52 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/query-builder.d.ts +7 -0
- package/dist/orm-common/src/query-builder/query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/factory/column-builder.d.ts +394 -0
- package/dist/orm-common/src/schema/factory/column-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/factory/index-builder.d.ts +151 -0
- package/dist/orm-common/src/schema/factory/index-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/factory/relation-builder.d.ts +337 -0
- package/dist/orm-common/src/schema/factory/relation-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/procedure-builder.d.ts +202 -0
- package/dist/orm-common/src/schema/procedure-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/table-builder.d.ts +259 -0
- package/dist/orm-common/src/schema/table-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/view-builder.d.ts +183 -0
- package/dist/orm-common/src/schema/view-builder.d.ts.map +1 -0
- package/dist/orm-common/src/types/column.d.ts +172 -0
- package/dist/orm-common/src/types/column.d.ts.map +1 -0
- package/dist/orm-common/src/types/db.d.ts +175 -0
- package/dist/orm-common/src/types/db.d.ts.map +1 -0
- package/dist/orm-common/src/types/expr.d.ts +474 -0
- package/dist/orm-common/src/types/expr.d.ts.map +1 -0
- package/dist/orm-common/src/types/query-def.d.ts +351 -0
- package/dist/orm-common/src/types/query-def.d.ts.map +1 -0
- package/dist/orm-common/src/utils/result-parser.d.ts +38 -0
- package/dist/orm-common/src/utils/result-parser.d.ts.map +1 -0
- package/dist/orm-node/src/connections/mssql-db-conn.d.ts +44 -0
- package/dist/orm-node/src/connections/mssql-db-conn.d.ts.map +1 -0
- package/dist/orm-node/src/connections/mysql-db-conn.d.ts +38 -0
- package/dist/orm-node/src/connections/mysql-db-conn.d.ts.map +1 -0
- package/dist/orm-node/src/connections/postgresql-db-conn.d.ts +39 -0
- package/dist/orm-node/src/connections/postgresql-db-conn.d.ts.map +1 -0
- package/dist/orm-node/src/db-conn-factory.d.ts +25 -0
- package/dist/orm-node/src/db-conn-factory.d.ts.map +1 -0
- package/dist/orm-node/src/index.d.ts +9 -0
- package/dist/orm-node/src/index.d.ts.map +1 -0
- package/dist/orm-node/src/node-db-context-executor.d.ts +77 -0
- package/dist/orm-node/src/node-db-context-executor.d.ts.map +1 -0
- package/dist/orm-node/src/pooled-db-conn.d.ts +79 -0
- package/dist/orm-node/src/pooled-db-conn.d.ts.map +1 -0
- package/dist/orm-node/src/sd-orm.d.ts +78 -0
- package/dist/orm-node/src/sd-orm.d.ts.map +1 -0
- package/dist/orm-node/src/types/db-conn.d.ts +159 -0
- package/dist/orm-node/src/types/db-conn.d.ts.map +1 -0
- package/dist/pooled-db-conn.js +134 -0
- package/dist/pooled-db-conn.js.map +7 -0
- package/dist/sd-orm.js +44 -0
- package/dist/sd-orm.js.map +7 -0
- package/dist/types/db-conn.js +17 -0
- package/dist/types/db-conn.js.map +7 -0
- package/package.json +50 -0
- package/src/connections/mssql-db-conn.ts +483 -0
- package/src/connections/mysql-db-conn.ts +299 -0
- package/src/connections/postgresql-db-conn.ts +254 -0
- package/src/db-conn-factory.ts +114 -0
- package/src/index.ts +13 -0
- package/src/node-db-context-executor.ts +162 -0
- package/src/pooled-db-conn.ts +175 -0
- package/src/sd-orm.ts +102 -0
- package/src/types/db-conn.ts +196 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { ExprColumn, ExprValue, ExprRaw, ExprEq, ExprGt, ExprLt, ExprGte, ExprLte, ExprBetween, ExprIsNull, ExprLike, ExprRegexp, ExprIn, ExprInQuery, ExprExists, ExprNot, ExprAnd, ExprOr, ExprConcat, ExprLeft, ExprRight, ExprTrim, ExprPadStart, ExprReplace, ExprUpper, ExprLower, ExprLength, ExprByteLength, ExprSubstring, ExprIndexOf, ExprAbs, ExprRound, ExprCeil, ExprFloor, ExprYear, ExprMonth, ExprDay, ExprHour, ExprMinute, ExprSecond, ExprIsoWeek, ExprIsoWeekStartDate, ExprIsoYearMonth, ExprDateDiff, ExprDateAdd, ExprFormatDate, ExprIfNull, ExprNullIf, ExprIs, ExprSwitch, ExprIf, ExprCount, ExprSum, ExprAvg, ExprMax, ExprMin, ExprGreatest, ExprLeast, ExprRowNum, ExprCast, ExprWindow, ExprSubquery } from "../../types/expr";
|
|
2
|
+
import type { DataType } from "../../types/column";
|
|
3
|
+
import { ExprRendererBase } from "../base/expr-renderer-base";
|
|
4
|
+
/**
|
|
5
|
+
* PostgreSQL Expr 렌더러
|
|
6
|
+
*/
|
|
7
|
+
export declare class PostgresqlExprRenderer extends ExprRendererBase {
|
|
8
|
+
/** 식별자 감싸기 */
|
|
9
|
+
wrap(name: string): string;
|
|
10
|
+
/** SQL 문자열 리터럴용 이스케이프 (따옴표 없이 반환) */
|
|
11
|
+
escapeString(value: string): string;
|
|
12
|
+
/** 값 이스케이프 */
|
|
13
|
+
escapeValue(value: unknown): string;
|
|
14
|
+
/** DataType → SQL 타입 */
|
|
15
|
+
renderDataType(dataType: DataType): string;
|
|
16
|
+
protected column(expr: ExprColumn): string;
|
|
17
|
+
protected value(expr: ExprValue): string;
|
|
18
|
+
protected raw(expr: ExprRaw): string;
|
|
19
|
+
protected eq(expr: ExprEq): string;
|
|
20
|
+
protected gt(expr: ExprGt): string;
|
|
21
|
+
protected lt(expr: ExprLt): string;
|
|
22
|
+
protected gte(expr: ExprGte): string;
|
|
23
|
+
protected lte(expr: ExprLte): string;
|
|
24
|
+
protected between(expr: ExprBetween): string;
|
|
25
|
+
protected null(expr: ExprIsNull): string;
|
|
26
|
+
protected like(expr: ExprLike): string;
|
|
27
|
+
protected regexp(expr: ExprRegexp): string;
|
|
28
|
+
protected in(expr: ExprIn): string;
|
|
29
|
+
protected inQuery(expr: ExprInQuery): string;
|
|
30
|
+
protected exists(expr: ExprExists): string;
|
|
31
|
+
protected not(expr: ExprNot): string;
|
|
32
|
+
protected and(expr: ExprAnd): string;
|
|
33
|
+
protected or(expr: ExprOr): string;
|
|
34
|
+
protected concat(expr: ExprConcat): string;
|
|
35
|
+
protected left(expr: ExprLeft): string;
|
|
36
|
+
protected right(expr: ExprRight): string;
|
|
37
|
+
protected trim(expr: ExprTrim): string;
|
|
38
|
+
protected padStart(expr: ExprPadStart): string;
|
|
39
|
+
protected replace(expr: ExprReplace): string;
|
|
40
|
+
protected upper(expr: ExprUpper): string;
|
|
41
|
+
protected lower(expr: ExprLower): string;
|
|
42
|
+
protected length(expr: ExprLength): string;
|
|
43
|
+
protected byteLength(expr: ExprByteLength): string;
|
|
44
|
+
protected substring(expr: ExprSubstring): string;
|
|
45
|
+
protected indexOf(expr: ExprIndexOf): string;
|
|
46
|
+
protected abs(expr: ExprAbs): string;
|
|
47
|
+
protected round(expr: ExprRound): string;
|
|
48
|
+
protected ceil(expr: ExprCeil): string;
|
|
49
|
+
protected floor(expr: ExprFloor): string;
|
|
50
|
+
protected year(expr: ExprYear): string;
|
|
51
|
+
protected month(expr: ExprMonth): string;
|
|
52
|
+
protected day(expr: ExprDay): string;
|
|
53
|
+
protected hour(expr: ExprHour): string;
|
|
54
|
+
protected minute(expr: ExprMinute): string;
|
|
55
|
+
protected second(expr: ExprSecond): string;
|
|
56
|
+
protected isoWeek(expr: ExprIsoWeek): string;
|
|
57
|
+
protected isoWeekStartDate(expr: ExprIsoWeekStartDate): string;
|
|
58
|
+
protected isoYearMonth(expr: ExprIsoYearMonth): string;
|
|
59
|
+
protected dateDiff(expr: ExprDateDiff): string;
|
|
60
|
+
protected dateAdd(expr: ExprDateAdd): string;
|
|
61
|
+
protected formatDate(expr: ExprFormatDate): string;
|
|
62
|
+
private dateSeparatorToUnit;
|
|
63
|
+
private convertDateFormat;
|
|
64
|
+
protected ifNull(expr: ExprIfNull): string;
|
|
65
|
+
protected nullIf(expr: ExprNullIf): string;
|
|
66
|
+
protected is(expr: ExprIs): string;
|
|
67
|
+
protected switch(expr: ExprSwitch): string;
|
|
68
|
+
protected if(expr: ExprIf): string;
|
|
69
|
+
protected count(expr: ExprCount): string;
|
|
70
|
+
protected sum(expr: ExprSum): string;
|
|
71
|
+
protected avg(expr: ExprAvg): string;
|
|
72
|
+
protected max(expr: ExprMax): string;
|
|
73
|
+
protected min(expr: ExprMin): string;
|
|
74
|
+
protected greatest(expr: ExprGreatest): string;
|
|
75
|
+
protected least(expr: ExprLeast): string;
|
|
76
|
+
protected rowNum(_expr: ExprRowNum): string;
|
|
77
|
+
protected random(): string;
|
|
78
|
+
protected cast(expr: ExprCast): string;
|
|
79
|
+
protected window(expr: ExprWindow): string;
|
|
80
|
+
private renderWindowFn;
|
|
81
|
+
private renderWindowSpec;
|
|
82
|
+
protected subquery(expr: ExprSubquery): string;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=postgresql-expr-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgresql-expr-renderer.d.ts","sourceRoot":"","sources":["../../../../../../orm-common/src/query-builder/postgresql/postgresql-expr-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { AddColumnQueryDef, AddFkQueryDef, AddIdxQueryDef, AddPkQueryDef, ClearSchemaQueryDef, CreateProcQueryDef, CreateTableQueryDef, CreateViewQueryDef, SchemaExistsQueryDef, DeleteQueryDef, DropColumnQueryDef, DropFkQueryDef, DropIdxQueryDef, DropPkQueryDef, DropProcQueryDef, DropTableQueryDef, DropViewQueryDef, ExecProcQueryDef, InsertIfNotExistsQueryDef, InsertIntoQueryDef, InsertQueryDef, ModifyColumnQueryDef, QueryDefObjectName, RenameColumnQueryDef, RenameTableQueryDef, SelectQueryDef, SelectQueryDefJoin, SwitchFkQueryDef, TruncateQueryDef, UpdateQueryDef, UpsertQueryDef } from "../../types/query-def";
|
|
2
|
+
import type { QueryBuildResult } from "../../types/db";
|
|
3
|
+
import { QueryBuilderBase } from "../base/query-builder-base";
|
|
4
|
+
import { PostgresqlExprRenderer } from "./postgresql-expr-renderer";
|
|
5
|
+
/**
|
|
6
|
+
* PostgreSQL QueryBuilder
|
|
7
|
+
*
|
|
8
|
+
* PostgreSQL 특이사항:
|
|
9
|
+
* - OUTPUT: RETURNING 절 사용 (네이티브 지원)
|
|
10
|
+
* - TRUNCATE: RESTART IDENTITY 옵션 필요
|
|
11
|
+
* - UPSERT: CTE 방식 (INSERT ... ON CONFLICT는 단일 unique 제약만 지원)
|
|
12
|
+
* - AUTO_INCREMENT: GENERATED BY DEFAULT AS IDENTITY (명시적 값 지정 가능)
|
|
13
|
+
* - FK 추가 시 인덱스 별도 생성 필요 (MySQL과 달리)
|
|
14
|
+
*/
|
|
15
|
+
export declare class PostgresqlQueryBuilder extends QueryBuilderBase {
|
|
16
|
+
protected expr: PostgresqlExprRenderer;
|
|
17
|
+
/** 테이블명 렌더링 (PostgreSQL: database는 connection에서 처리, schema.table만 사용) */
|
|
18
|
+
protected tableName(obj: QueryDefObjectName): string;
|
|
19
|
+
/** LIMIT...OFFSET 절 렌더링 */
|
|
20
|
+
protected renderLimit(limit: [number, number] | undefined, top: number | undefined): string;
|
|
21
|
+
protected renderJoin(join: SelectQueryDefJoin): string;
|
|
22
|
+
protected select(def: SelectQueryDef): QueryBuildResult;
|
|
23
|
+
protected insert(def: InsertQueryDef): QueryBuildResult;
|
|
24
|
+
protected insertIfNotExists(def: InsertIfNotExistsQueryDef): QueryBuildResult;
|
|
25
|
+
protected insertInto(def: InsertIntoQueryDef): QueryBuildResult;
|
|
26
|
+
protected update(def: UpdateQueryDef): QueryBuildResult;
|
|
27
|
+
protected delete(def: DeleteQueryDef): QueryBuildResult;
|
|
28
|
+
protected upsert(def: UpsertQueryDef): QueryBuildResult;
|
|
29
|
+
protected createTable(def: CreateTableQueryDef): QueryBuildResult;
|
|
30
|
+
protected dropTable(def: DropTableQueryDef): QueryBuildResult;
|
|
31
|
+
protected renameTable(def: RenameTableQueryDef): QueryBuildResult;
|
|
32
|
+
protected truncate(def: TruncateQueryDef): QueryBuildResult;
|
|
33
|
+
protected addColumn(def: AddColumnQueryDef): QueryBuildResult;
|
|
34
|
+
protected dropColumn(def: DropColumnQueryDef): QueryBuildResult;
|
|
35
|
+
protected modifyColumn(def: ModifyColumnQueryDef): QueryBuildResult;
|
|
36
|
+
protected renameColumn(def: RenameColumnQueryDef): QueryBuildResult;
|
|
37
|
+
protected addPk(def: AddPkQueryDef): QueryBuildResult;
|
|
38
|
+
protected dropPk(def: DropPkQueryDef): QueryBuildResult;
|
|
39
|
+
protected addFk(def: AddFkQueryDef): QueryBuildResult;
|
|
40
|
+
protected dropFk(def: DropFkQueryDef): QueryBuildResult;
|
|
41
|
+
protected addIdx(def: AddIdxQueryDef): QueryBuildResult;
|
|
42
|
+
protected dropIdx(def: DropIdxQueryDef): QueryBuildResult;
|
|
43
|
+
protected createView(def: CreateViewQueryDef): QueryBuildResult;
|
|
44
|
+
protected dropView(def: DropViewQueryDef): QueryBuildResult;
|
|
45
|
+
protected createProc(def: CreateProcQueryDef): QueryBuildResult;
|
|
46
|
+
protected dropProc(def: DropProcQueryDef): QueryBuildResult;
|
|
47
|
+
protected execProc(def: ExecProcQueryDef): QueryBuildResult;
|
|
48
|
+
protected clearSchema(def: ClearSchemaQueryDef): QueryBuildResult;
|
|
49
|
+
protected schemaExists(def: SchemaExistsQueryDef): QueryBuildResult;
|
|
50
|
+
protected switchFk(def: SwitchFkQueryDef): QueryBuildResult;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=postgresql-query-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgresql-query-builder.d.ts","sourceRoot":"","sources":["../../../../../../orm-common/src/query-builder/postgresql/postgresql-query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Dialect } from "../types/db";
|
|
2
|
+
import type { QueryBuilderBase } from "./base/query-builder-base";
|
|
3
|
+
/**
|
|
4
|
+
* Dialect에 맞는 QueryBuilder 인스턴스 생성
|
|
5
|
+
*/
|
|
6
|
+
export declare function createQueryBuilder(dialect: Dialect): QueryBuilderBase;
|
|
7
|
+
//# sourceMappingURL=query-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../../../../orm-common/src/query-builder/query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAKlE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CASrE"}
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import type { Bytes, DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
|
|
2
|
+
import type { ColumnMeta, ColumnPrimitive } from "../../types/column";
|
|
3
|
+
import type { ExprInput } from "../../expr/expr-unit";
|
|
4
|
+
import type { DataRecord } from "../../types/db";
|
|
5
|
+
/**
|
|
6
|
+
* 컬럼 정의 빌더
|
|
7
|
+
*
|
|
8
|
+
* Fluent API를 통해 컬럼의 타입, nullable, autoIncrement, default, 설명을 정의
|
|
9
|
+
* TableBuilder.columns()에서 사용
|
|
10
|
+
*
|
|
11
|
+
* @template TValue - 컬럼 값 타입
|
|
12
|
+
* @template TMeta - 컬럼 메타데이터 타입
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* Table("User")
|
|
17
|
+
* .columns((c) => ({
|
|
18
|
+
* id: c.bigint().autoIncrement(), // bigint, auto increment
|
|
19
|
+
* name: c.varchar(100), // varchar(100), required
|
|
20
|
+
* email: c.varchar(200).nullable(), // varchar(200), nullable
|
|
21
|
+
* status: c.varchar(20).default("active"), // varchar(20), default 값
|
|
22
|
+
* createdAt: c.datetime().description("생성일시"),
|
|
23
|
+
* }));
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @see {@link createColumnFactory} 컬럼 팩토리
|
|
27
|
+
* @see {@link TableBuilder} 테이블 빌더
|
|
28
|
+
*/
|
|
29
|
+
export declare class ColumnBuilder<TValue extends ColumnPrimitive, TMeta extends ColumnMeta> {
|
|
30
|
+
readonly meta: TMeta;
|
|
31
|
+
/**
|
|
32
|
+
* @param meta - 컬럼 메타데이터
|
|
33
|
+
*/
|
|
34
|
+
constructor(meta: TMeta);
|
|
35
|
+
/**
|
|
36
|
+
* Auto Increment 설정
|
|
37
|
+
*
|
|
38
|
+
* INSERT 시 자동 증가. INSERT용 타입 추론에서 optional로 처리
|
|
39
|
+
*
|
|
40
|
+
* @returns 새 ColumnBuilder 인스턴스
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* id: c.bigint().autoIncrement()
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
autoIncrement(): ColumnBuilder<TValue, Omit<TMeta, "autoIncrement"> & {
|
|
48
|
+
autoIncrement: true;
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* Nullable 설정
|
|
52
|
+
*
|
|
53
|
+
* NULL 허용. 값 타입에 undefined 추가
|
|
54
|
+
*
|
|
55
|
+
* @returns 새 ColumnBuilder 인스턴스
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* email: c.varchar(200).nullable() // string | undefined
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
nullable(): ColumnBuilder<TValue | undefined, Omit<TMeta, "nullable"> & {
|
|
63
|
+
nullable: true;
|
|
64
|
+
}>;
|
|
65
|
+
/**
|
|
66
|
+
* 기본값 설정
|
|
67
|
+
*
|
|
68
|
+
* INSERT 시 값 미지정 시 사용. INSERT용 타입 추론에서 optional로 처리
|
|
69
|
+
*
|
|
70
|
+
* @param value - 기본값
|
|
71
|
+
* @returns 새 ColumnBuilder 인스턴스
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* status: c.varchar(20).default("active")
|
|
76
|
+
* createdAt: c.datetime().default("CURRENT_TIMESTAMP")
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
default(value: TValue): ColumnBuilder<TValue, Omit<TMeta, "default"> & {
|
|
80
|
+
default: typeof value;
|
|
81
|
+
}>;
|
|
82
|
+
/**
|
|
83
|
+
* 컬럼 설명 설정
|
|
84
|
+
*
|
|
85
|
+
* @param desc - 컬럼 설명 (DDL 주석으로 사용)
|
|
86
|
+
* @returns 새 ColumnBuilder 인스턴스
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* createdAt: c.datetime().description("레코드 생성 일시")
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
description(desc: string): ColumnBuilder<TValue, TMeta & {
|
|
94
|
+
description: string;
|
|
95
|
+
}>;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 컬럼 빌더 팩토리 생성
|
|
99
|
+
*
|
|
100
|
+
* TableBuilder.columns()에서 사용하는 컬럼 타입 팩토리
|
|
101
|
+
* 모든 기본 데이터 타입에 대한 빌더 생성 메서드 제공
|
|
102
|
+
*
|
|
103
|
+
* @returns 컬럼 타입별 빌더 생성 메서드를 포함한 객체
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* Table("User")
|
|
108
|
+
* .columns((c) => ({
|
|
109
|
+
* // 숫자 타입
|
|
110
|
+
* id: c.bigint().autoIncrement(),
|
|
111
|
+
* count: c.int(),
|
|
112
|
+
* price: c.decimal(10, 2),
|
|
113
|
+
*
|
|
114
|
+
* // 문자열 타입
|
|
115
|
+
* name: c.varchar(100),
|
|
116
|
+
* code: c.char(10),
|
|
117
|
+
* content: c.text(),
|
|
118
|
+
*
|
|
119
|
+
* // 날짜/시간 타입
|
|
120
|
+
* createdAt: c.datetime(),
|
|
121
|
+
* birthDate: c.date(),
|
|
122
|
+
* startTime: c.time(),
|
|
123
|
+
*
|
|
124
|
+
* // 기타 타입
|
|
125
|
+
* isActive: c.boolean(),
|
|
126
|
+
* data: c.binary(),
|
|
127
|
+
* uuid: c.uuid(),
|
|
128
|
+
* }));
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @see {@link ColumnBuilder} 컬럼 빌더 클래스
|
|
132
|
+
*/
|
|
133
|
+
export declare function createColumnFactory(): {
|
|
134
|
+
/**
|
|
135
|
+
* INT 컬럼 (4 bytes, -2^31 ~ 2^31-1)
|
|
136
|
+
*
|
|
137
|
+
* @returns ColumnBuilder 인스턴스
|
|
138
|
+
*/
|
|
139
|
+
int(): ColumnBuilder<number, {
|
|
140
|
+
type: "number";
|
|
141
|
+
dataType: {
|
|
142
|
+
type: "int";
|
|
143
|
+
};
|
|
144
|
+
}>;
|
|
145
|
+
/**
|
|
146
|
+
* BIGINT 컬럼 (8 bytes, -2^63 ~ 2^63-1)
|
|
147
|
+
*
|
|
148
|
+
* @returns ColumnBuilder 인스턴스
|
|
149
|
+
*/
|
|
150
|
+
bigint(): ColumnBuilder<number, {
|
|
151
|
+
type: "number";
|
|
152
|
+
dataType: {
|
|
153
|
+
type: "bigint";
|
|
154
|
+
};
|
|
155
|
+
}>;
|
|
156
|
+
/**
|
|
157
|
+
* FLOAT 컬럼 (4 bytes, 단정밀도 부동소수점)
|
|
158
|
+
*
|
|
159
|
+
* @returns ColumnBuilder 인스턴스
|
|
160
|
+
*/
|
|
161
|
+
float(): ColumnBuilder<number, {
|
|
162
|
+
type: "number";
|
|
163
|
+
dataType: {
|
|
164
|
+
type: "float";
|
|
165
|
+
};
|
|
166
|
+
}>;
|
|
167
|
+
/**
|
|
168
|
+
* DOUBLE 컬럼 (8 bytes, 배정밀도 부동소수점)
|
|
169
|
+
*
|
|
170
|
+
* @returns ColumnBuilder 인스턴스
|
|
171
|
+
*/
|
|
172
|
+
double(): ColumnBuilder<number, {
|
|
173
|
+
type: "number";
|
|
174
|
+
dataType: {
|
|
175
|
+
type: "double";
|
|
176
|
+
};
|
|
177
|
+
}>;
|
|
178
|
+
/**
|
|
179
|
+
* DECIMAL 컬럼 (고정 소수점)
|
|
180
|
+
*
|
|
181
|
+
* @param precision - 전체 자릿수
|
|
182
|
+
* @param scale - 소수점 이하 자릿수 (선택)
|
|
183
|
+
* @returns ColumnBuilder 인스턴스
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* price: c.decimal(10, 2) // DECIMAL(10, 2)
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
decimal(precision: number, scale?: number): ColumnBuilder<number, {
|
|
191
|
+
type: "number";
|
|
192
|
+
dataType: {
|
|
193
|
+
type: "decimal";
|
|
194
|
+
precision: number;
|
|
195
|
+
scale?: number;
|
|
196
|
+
};
|
|
197
|
+
}>;
|
|
198
|
+
/**
|
|
199
|
+
* VARCHAR 컬럼 (가변 길이 문자열)
|
|
200
|
+
*
|
|
201
|
+
* @param length - 최대 길이
|
|
202
|
+
* @returns ColumnBuilder 인스턴스
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* name: c.varchar(100) // VARCHAR(100)
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
varchar(length: number): ColumnBuilder<string, {
|
|
210
|
+
type: "string";
|
|
211
|
+
dataType: {
|
|
212
|
+
type: "varchar";
|
|
213
|
+
length: number;
|
|
214
|
+
};
|
|
215
|
+
}>;
|
|
216
|
+
/**
|
|
217
|
+
* CHAR 컬럼 (고정 길이 문자열)
|
|
218
|
+
*
|
|
219
|
+
* @param length - 고정 길이
|
|
220
|
+
* @returns ColumnBuilder 인스턴스
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* countryCode: c.char(2) // CHAR(2)
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
227
|
+
char(length: number): ColumnBuilder<string, {
|
|
228
|
+
type: "string";
|
|
229
|
+
dataType: {
|
|
230
|
+
type: "char";
|
|
231
|
+
length: number;
|
|
232
|
+
};
|
|
233
|
+
}>;
|
|
234
|
+
/**
|
|
235
|
+
* TEXT 컬럼 (대용량 문자열)
|
|
236
|
+
*
|
|
237
|
+
* @returns ColumnBuilder 인스턴스
|
|
238
|
+
*/
|
|
239
|
+
text(): ColumnBuilder<string, {
|
|
240
|
+
type: "string";
|
|
241
|
+
dataType: {
|
|
242
|
+
type: "text";
|
|
243
|
+
};
|
|
244
|
+
}>;
|
|
245
|
+
/**
|
|
246
|
+
* BINARY 컬럼 (바이너리 데이터)
|
|
247
|
+
*
|
|
248
|
+
* DBMS별: MySQL=LONGBLOB, MSSQL=VARBINARY(MAX), PostgreSQL=BYTEA
|
|
249
|
+
*
|
|
250
|
+
* @returns ColumnBuilder 인스턴스
|
|
251
|
+
*/
|
|
252
|
+
binary(): ColumnBuilder<Bytes, {
|
|
253
|
+
type: "Bytes";
|
|
254
|
+
dataType: {
|
|
255
|
+
type: "binary";
|
|
256
|
+
};
|
|
257
|
+
}>;
|
|
258
|
+
/**
|
|
259
|
+
* BOOLEAN 컬럼
|
|
260
|
+
*
|
|
261
|
+
* DBMS별: MySQL=TINYINT(1), MSSQL=BIT, PostgreSQL=BOOLEAN
|
|
262
|
+
*
|
|
263
|
+
* @returns ColumnBuilder 인스턴스
|
|
264
|
+
*/
|
|
265
|
+
boolean(): ColumnBuilder<boolean, {
|
|
266
|
+
type: "boolean";
|
|
267
|
+
dataType: {
|
|
268
|
+
type: "boolean";
|
|
269
|
+
};
|
|
270
|
+
}>;
|
|
271
|
+
/**
|
|
272
|
+
* DATETIME 컬럼 (날짜 + 시간)
|
|
273
|
+
*
|
|
274
|
+
* @returns ColumnBuilder 인스턴스
|
|
275
|
+
*/
|
|
276
|
+
datetime(): ColumnBuilder<DateTime, {
|
|
277
|
+
type: "DateTime";
|
|
278
|
+
dataType: {
|
|
279
|
+
type: "datetime";
|
|
280
|
+
};
|
|
281
|
+
}>;
|
|
282
|
+
/**
|
|
283
|
+
* DATE 컬럼 (날짜만)
|
|
284
|
+
*
|
|
285
|
+
* @returns ColumnBuilder 인스턴스
|
|
286
|
+
*/
|
|
287
|
+
date(): ColumnBuilder<DateOnly, {
|
|
288
|
+
type: "DateOnly";
|
|
289
|
+
dataType: {
|
|
290
|
+
type: "date";
|
|
291
|
+
};
|
|
292
|
+
}>;
|
|
293
|
+
/**
|
|
294
|
+
* TIME 컬럼 (시간만)
|
|
295
|
+
*
|
|
296
|
+
* @returns ColumnBuilder 인스턴스
|
|
297
|
+
*/
|
|
298
|
+
time(): ColumnBuilder<Time, {
|
|
299
|
+
type: "Time";
|
|
300
|
+
dataType: {
|
|
301
|
+
type: "time";
|
|
302
|
+
};
|
|
303
|
+
}>;
|
|
304
|
+
/**
|
|
305
|
+
* UUID 컬럼
|
|
306
|
+
*
|
|
307
|
+
* DBMS별: MySQL=BINARY(16), MSSQL=UNIQUEIDENTIFIER, PostgreSQL=UUID
|
|
308
|
+
*
|
|
309
|
+
* @returns ColumnBuilder 인스턴스
|
|
310
|
+
*/
|
|
311
|
+
uuid(): ColumnBuilder<Uuid, {
|
|
312
|
+
type: "Uuid";
|
|
313
|
+
dataType: {
|
|
314
|
+
type: "uuid";
|
|
315
|
+
};
|
|
316
|
+
}>;
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* 컬럼 빌더 레코드 타입
|
|
320
|
+
*
|
|
321
|
+
* TableBuilder.columns()의 반환 타입으로 사용
|
|
322
|
+
*/
|
|
323
|
+
export type ColumnBuilderRecord = Record<string, ColumnBuilder<ColumnPrimitive, ColumnMeta>>;
|
|
324
|
+
/**
|
|
325
|
+
* 컬럼 빌더 레코드에서 실제 값 타입 추론
|
|
326
|
+
*
|
|
327
|
+
* @template T - 컬럼 빌더 레코드 타입
|
|
328
|
+
*
|
|
329
|
+
* @example
|
|
330
|
+
* ```typescript
|
|
331
|
+
* type UserColumns = InferColumns<typeof User.$columns>;
|
|
332
|
+
* // { id: number; name: string; email: string | undefined; }
|
|
333
|
+
* ```
|
|
334
|
+
*/
|
|
335
|
+
export type InferColumns<T extends ColumnBuilderRecord> = {
|
|
336
|
+
[K in keyof T]: T[K] extends ColumnBuilder<infer V, any> ? V : never;
|
|
337
|
+
};
|
|
338
|
+
/**
|
|
339
|
+
* 컬럼 빌더 레코드에서 표현식 입력 타입 추론
|
|
340
|
+
*
|
|
341
|
+
* @template T - 컬럼 빌더 레코드 타입
|
|
342
|
+
*/
|
|
343
|
+
export type InferColumnExprs<T extends ColumnBuilderRecord> = {
|
|
344
|
+
[K in keyof T]: T[K] extends ColumnBuilder<infer V, any> ? ExprInput<V> : never;
|
|
345
|
+
};
|
|
346
|
+
/**
|
|
347
|
+
* INSERT 시 필수 컬럼 키 추출
|
|
348
|
+
*
|
|
349
|
+
* autoIncrement, nullable, default가 없는 컬럼만 필수
|
|
350
|
+
*
|
|
351
|
+
* @template T - 컬럼 빌더 레코드 타입
|
|
352
|
+
*/
|
|
353
|
+
export type RequiredInsertKeys<T extends ColumnBuilderRecord> = {
|
|
354
|
+
[K in keyof T]: T[K]["meta"] extends infer M extends ColumnMeta ? M["autoIncrement"] extends true ? never : M["nullable"] extends true ? never : M["default"] extends undefined ? K : never : never;
|
|
355
|
+
}[keyof T];
|
|
356
|
+
/**
|
|
357
|
+
* INSERT 시 선택적 컬럼 키 추출
|
|
358
|
+
*
|
|
359
|
+
* autoIncrement, nullable, default가 있는 컬럼은 optional
|
|
360
|
+
*
|
|
361
|
+
* @template T - 컬럼 빌더 레코드 타입
|
|
362
|
+
*/
|
|
363
|
+
export type OptionalInsertKeys<T extends ColumnBuilderRecord> = Exclude<keyof T, RequiredInsertKeys<T>>;
|
|
364
|
+
/**
|
|
365
|
+
* INSERT용 타입 추론
|
|
366
|
+
*
|
|
367
|
+
* 필수 컬럼은 required, optional 컬럼은 Partial
|
|
368
|
+
*
|
|
369
|
+
* @template T - 컬럼 빌더 레코드 타입
|
|
370
|
+
*
|
|
371
|
+
* @example
|
|
372
|
+
* ```typescript
|
|
373
|
+
* type UserInsert = InferInsertColumns<typeof User.$columns>;
|
|
374
|
+
* // { name: string; } & { id?: number; email?: string; status?: string; }
|
|
375
|
+
* ```
|
|
376
|
+
*/
|
|
377
|
+
export type InferInsertColumns<T extends ColumnBuilderRecord> = Pick<InferColumns<T>, RequiredInsertKeys<T>> & Partial<Pick<InferColumns<T>, OptionalInsertKeys<T>>>;
|
|
378
|
+
/**
|
|
379
|
+
* UPDATE용 타입 추론
|
|
380
|
+
*
|
|
381
|
+
* 모든 컬럼이 optional
|
|
382
|
+
*
|
|
383
|
+
* @template T - 컬럼 빌더 레코드 타입
|
|
384
|
+
*/
|
|
385
|
+
export type InferUpdateColumns<T extends ColumnBuilderRecord> = Partial<InferColumns<T>>;
|
|
386
|
+
/**
|
|
387
|
+
* 데이터 레코드에서 컬럼 빌더 레코드로 변환
|
|
388
|
+
*
|
|
389
|
+
* @template TData - 데이터 레코드 타입
|
|
390
|
+
*/
|
|
391
|
+
export type DataToColumnBuilderRecord<TData extends DataRecord> = {
|
|
392
|
+
[K in keyof TData as TData[K] extends ColumnPrimitive ? K : never]: ColumnBuilder<TData[K] extends ColumnPrimitive ? TData[K] : never, any>;
|
|
393
|
+
};
|
|
394
|
+
//# sourceMappingURL=column-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-builder.d.ts","sourceRoot":"","sources":["../../../../../../orm-common/src/schema/factory/column-builder.ts"],"names":[],"mappings":"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"}
|