@simplysm/orm-node 13.0.0-beta.11
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/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 +53 -0
|
@@ -0,0 +1,669 @@
|
|
|
1
|
+
import type { DataRecord, DbContextExecutor, IsolationLevel, Migration, ResultMeta } from "./types/db";
|
|
2
|
+
import { type AddColumnQueryDef, type AddPkQueryDef, type ClearSchemaQueryDef, type DropColumnQueryDef, type DropFkQueryDef, type DropIdxQueryDef, type DropPkQueryDef, type DropProcQueryDef, type DropTableQueryDef, type DropViewQueryDef, type ModifyColumnQueryDef, type QueryDef, type QueryDefObjectName, type RenameColumnQueryDef, type RenameTableQueryDef, type SchemaExistsQueryDef, type SwitchFkQueryDef, type TruncateQueryDef } from "./types/query-def";
|
|
3
|
+
import { TableBuilder } from "./schema/table-builder";
|
|
4
|
+
import { ViewBuilder } from "./schema/view-builder";
|
|
5
|
+
import { ProcedureBuilder } from "./schema/procedure-builder";
|
|
6
|
+
import { Queryable } from "./exec/queryable";
|
|
7
|
+
import { ColumnBuilder } from "./schema/factory/column-builder";
|
|
8
|
+
import { ForeignKeyBuilder } from "./schema/factory/relation-builder";
|
|
9
|
+
import type { IndexBuilder } from "./schema/factory/index-builder";
|
|
10
|
+
/**
|
|
11
|
+
* DbContext 연결 상태
|
|
12
|
+
*
|
|
13
|
+
* @property ready - 연결 대기 상태 (초기 상태)
|
|
14
|
+
* @property connect - 연결됨 (트랜잭션 없음)
|
|
15
|
+
* @property transact - 트랜잭션 진행 중
|
|
16
|
+
*/
|
|
17
|
+
export type DbContextStatus = "ready" | "connect" | "transact";
|
|
18
|
+
/**
|
|
19
|
+
* 데이터베이스 컨텍스트 추상 클래스
|
|
20
|
+
*
|
|
21
|
+
* ORM의 핵심 진입점으로, 테이블/뷰/프로시저 정의와 데이터베이스 연결,
|
|
22
|
+
* 트랜잭션 관리, DDL/DML 실행을 담당
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // 1. DbContext 상속하여 테이블 정의
|
|
27
|
+
* class MyDb extends DbContext {
|
|
28
|
+
* readonly user = queryable(this, User);
|
|
29
|
+
* readonly post = queryable(this, Post);
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* // 2. Executor와 함께 인스턴스 생성
|
|
33
|
+
* const db = new MyDb(executor, { database: "mydb" });
|
|
34
|
+
*
|
|
35
|
+
* // 3. 트랜잭션 내에서 쿼리 실행
|
|
36
|
+
* await db.connect(async () => {
|
|
37
|
+
* const users = await db.user().result();
|
|
38
|
+
* await db.user().insert([{ name: "홍길동" }]);
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @see {@link queryable} 테이블 Queryable 생성
|
|
43
|
+
* @see {@link DbContextExecutor} 쿼리 실행기 인터페이스
|
|
44
|
+
*/
|
|
45
|
+
export declare abstract class DbContext {
|
|
46
|
+
private readonly _executor;
|
|
47
|
+
private readonly _opt;
|
|
48
|
+
/**
|
|
49
|
+
* 현재 연결 상태
|
|
50
|
+
*
|
|
51
|
+
* - `ready`: 연결 대기 (초기 상태)
|
|
52
|
+
* - `connect`: DB 연결됨 (트랜잭션 없음)
|
|
53
|
+
* - `transact`: 트랜잭션 진행 중
|
|
54
|
+
*/
|
|
55
|
+
status: DbContextStatus;
|
|
56
|
+
/**
|
|
57
|
+
* 마이그레이션 목록
|
|
58
|
+
*
|
|
59
|
+
* 서브클래스에서 override하여 마이그레이션 정의
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* class MyDb extends DbContext {
|
|
64
|
+
* readonly migrations: Migration[] = [
|
|
65
|
+
* {
|
|
66
|
+
* name: "20240101_add_status",
|
|
67
|
+
* up: async (db) => {
|
|
68
|
+
* await db.addColumn(
|
|
69
|
+
* { database: "mydb", name: "User" },
|
|
70
|
+
* "status",
|
|
71
|
+
* c.varchar(20).nullable(),
|
|
72
|
+
* );
|
|
73
|
+
* },
|
|
74
|
+
* },
|
|
75
|
+
* ];
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
readonly migrations: Migration[];
|
|
80
|
+
/** alias 카운터 (queryable/executable 호출 시 증가) */
|
|
81
|
+
private _aliasCounter;
|
|
82
|
+
/**
|
|
83
|
+
* DbContext 생성자
|
|
84
|
+
*
|
|
85
|
+
* @param _executor - 쿼리 실행기 (NodeDbContextExecutor, ServiceDbContextExecutor 등)
|
|
86
|
+
* @param _opt - 데이터베이스 옵션
|
|
87
|
+
* @param _opt.database - 데이터베이스 이름
|
|
88
|
+
* @param _opt.schema - 스키마 이름 (MSSQL: dbo, PostgreSQL: public)
|
|
89
|
+
*/
|
|
90
|
+
constructor(_executor: DbContextExecutor, _opt: {
|
|
91
|
+
database: string;
|
|
92
|
+
schema?: string;
|
|
93
|
+
});
|
|
94
|
+
/** 데이터베이스 이름 */
|
|
95
|
+
get database(): string | undefined;
|
|
96
|
+
/** 스키마 이름 (MSSQL: dbo, PostgreSQL: public) */
|
|
97
|
+
get schema(): string | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* 다음 테이블 alias 반환
|
|
100
|
+
*
|
|
101
|
+
* 서브쿼리/JOIN/재귀 CTE에서 alias 충돌 방지를 위해 T1, T2, T3... 형식으로 생성
|
|
102
|
+
* queryable() 함수 호출 시 내부적으로 사용
|
|
103
|
+
*
|
|
104
|
+
* @returns 순차 증가하는 alias (T1, T2, T3...)
|
|
105
|
+
*/
|
|
106
|
+
getNextAlias(): string;
|
|
107
|
+
/**
|
|
108
|
+
* alias 카운터 초기화
|
|
109
|
+
*
|
|
110
|
+
* connect() 또는 connectWithoutTransaction() 시작 시 자동 호출
|
|
111
|
+
*/
|
|
112
|
+
resetAliasCounter(): void;
|
|
113
|
+
/**
|
|
114
|
+
* 시스템 마이그레이션 테이블 Queryable
|
|
115
|
+
*
|
|
116
|
+
* 적용된 마이그레이션 이력을 관리하는 내부 테이블
|
|
117
|
+
*/
|
|
118
|
+
get systemMigration(): () => Queryable<import(".").InferColumns<{
|
|
119
|
+
code: ColumnBuilder<string, {
|
|
120
|
+
type: "string";
|
|
121
|
+
dataType: {
|
|
122
|
+
type: "varchar";
|
|
123
|
+
length: number;
|
|
124
|
+
};
|
|
125
|
+
}>;
|
|
126
|
+
}> & import(".").InferDeepRelations<import(".").RelationBuilderRecord>, TableBuilder<{
|
|
127
|
+
code: ColumnBuilder<string, {
|
|
128
|
+
type: "string";
|
|
129
|
+
dataType: {
|
|
130
|
+
type: "varchar";
|
|
131
|
+
length: number;
|
|
132
|
+
};
|
|
133
|
+
}>;
|
|
134
|
+
}, import(".").RelationBuilderRecord>>;
|
|
135
|
+
/**
|
|
136
|
+
* 트랜잭션 없이 연결하여 콜백 실행 후 자동 종료
|
|
137
|
+
*
|
|
138
|
+
* DDL 작업이나 트랜잭션이 필요 없는 조회 작업에 사용
|
|
139
|
+
*
|
|
140
|
+
* @template R - 콜백 반환 타입
|
|
141
|
+
* @param callback - 연결 내에서 실행할 콜백
|
|
142
|
+
* @returns 콜백 반환값
|
|
143
|
+
* @throws 콜백 실행 중 발생한 에러 (연결은 자동 종료됨)
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```typescript
|
|
147
|
+
* // DDL 작업 (트랜잭션 내 실행 불가)
|
|
148
|
+
* await db.connectWithoutTransaction(async () => {
|
|
149
|
+
* await db.createTable(User);
|
|
150
|
+
* await db.addColumn(
|
|
151
|
+
* { database: "mydb", name: "User" },
|
|
152
|
+
* "status",
|
|
153
|
+
* c.varchar(20),
|
|
154
|
+
* );
|
|
155
|
+
* });
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
connectWithoutTransaction<R>(callback: () => Promise<R>): Promise<R>;
|
|
159
|
+
/**
|
|
160
|
+
* 트랜잭션 내에서 콜백 실행 (자동 커밋/롤백)
|
|
161
|
+
*
|
|
162
|
+
* 연결 → 트랜잭션 시작 → 콜백 실행 → 커밋 → 연결 종료
|
|
163
|
+
* 에러 발생 시 자동 롤백 후 연결 종료
|
|
164
|
+
*
|
|
165
|
+
* @template R - 콜백 반환 타입
|
|
166
|
+
* @param fn - 트랜잭션 내에서 실행할 콜백
|
|
167
|
+
* @param isolationLevel - 트랜잭션 격리 수준 (선택)
|
|
168
|
+
* @returns 콜백 반환값
|
|
169
|
+
* @throws 콜백 실행 중 발생한 에러 (롤백 및 연결 종료됨)
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* // 기본 사용
|
|
174
|
+
* const result = await db.connect(async () => {
|
|
175
|
+
* const users = await db.user().result();
|
|
176
|
+
* await db.user().insert([{ name: "홍길동" }]);
|
|
177
|
+
* return users;
|
|
178
|
+
* });
|
|
179
|
+
*
|
|
180
|
+
* // 격리 수준 지정
|
|
181
|
+
* await db.connect(async () => {
|
|
182
|
+
* await db.user().update({ name: "김철수" }, (u) => [
|
|
183
|
+
* expr.eq(u.id, 1),
|
|
184
|
+
* ]);
|
|
185
|
+
* }, "SERIALIZABLE");
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* @see {@link trans} 이미 연결된 상태에서 트랜잭션 시작
|
|
189
|
+
*/
|
|
190
|
+
connect<R>(fn: () => Promise<R>, isolationLevel?: IsolationLevel): Promise<R>;
|
|
191
|
+
/**
|
|
192
|
+
* 이미 연결된 상태에서 트랜잭션 시작 (자동 커밋/롤백)
|
|
193
|
+
*
|
|
194
|
+
* connectWithoutTransaction 내에서 부분적으로 트랜잭션이 필요할 때 사용
|
|
195
|
+
* 연결 관리는 외부에서 담당하므로 연결 종료하지 않음
|
|
196
|
+
*
|
|
197
|
+
* @template R - 콜백 반환 타입
|
|
198
|
+
* @param fn - 트랜잭션 내에서 실행할 콜백
|
|
199
|
+
* @param isolationLevel - 트랜잭션 격리 수준 (선택)
|
|
200
|
+
* @returns 콜백 반환값
|
|
201
|
+
* @throws {Error} 이미 트랜잭션 상태일 때
|
|
202
|
+
* @throws 콜백 실행 중 발생한 에러 (롤백됨)
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* await db.connectWithoutTransaction(async () => {
|
|
207
|
+
* // DDL 작업 (트랜잭션 외부)
|
|
208
|
+
* await db.createTable(User);
|
|
209
|
+
*
|
|
210
|
+
* // DML 작업 (트랜잭션 내부)
|
|
211
|
+
* await db.trans(async () => {
|
|
212
|
+
* await db.user().insert([{ name: "홍길동" }]);
|
|
213
|
+
* });
|
|
214
|
+
* });
|
|
215
|
+
* ```
|
|
216
|
+
*
|
|
217
|
+
* @see {@link connect} 연결부터 트랜잭션까지 한번에 처리
|
|
218
|
+
*/
|
|
219
|
+
trans<R>(fn: () => Promise<R>, isolationLevel?: IsolationLevel): Promise<R>;
|
|
220
|
+
/**
|
|
221
|
+
* QueryDef 배열 실행
|
|
222
|
+
*
|
|
223
|
+
* Queryable/Executable이 생성한 QueryDef를 직접 실행
|
|
224
|
+
* 트랜잭션 상태에서 DDL 실행 시 에러 발생
|
|
225
|
+
*
|
|
226
|
+
* @template T - 결과 레코드 타입
|
|
227
|
+
* @param defs - 실행할 QueryDef 배열
|
|
228
|
+
* @param resultMetas - 결과 메타데이터 (타입 변환용)
|
|
229
|
+
* @returns 각 QueryDef 실행 결과 배열
|
|
230
|
+
* @throws {Error} 트랜잭션 상태에서 DDL 실행 시
|
|
231
|
+
*
|
|
232
|
+
* @example
|
|
233
|
+
* ```typescript
|
|
234
|
+
* // 일반적으로는 Queryable 메서드 사용을 권장
|
|
235
|
+
* // 직접 실행이 필요한 경우만 사용
|
|
236
|
+
* const selectDef = db.user().getSelectQueryDef();
|
|
237
|
+
* const results = await db.executeDefs([selectDef]);
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
executeDefs<T = DataRecord>(defs: QueryDef[], resultMetas?: (ResultMeta | undefined)[]): Promise<T[][]>;
|
|
241
|
+
/**
|
|
242
|
+
* Code First 데이터베이스 초기화
|
|
243
|
+
*
|
|
244
|
+
* DbContext에 정의된 테이블/뷰/프로시저를 데이터베이스에 생성하고,
|
|
245
|
+
* 마이그레이션을 적용
|
|
246
|
+
*
|
|
247
|
+
* @param options - 초기화 옵션
|
|
248
|
+
* @param options.dbs - 초기화 대상 데이터베이스 목록 (미지정 시 현재 database)
|
|
249
|
+
* @param options.force - true 시 기존 스키마 삭제 후 전체 재생성
|
|
250
|
+
* @throws {Error} 초기화할 데이터베이스가 없을 때
|
|
251
|
+
* @throws {Error} 지정한 데이터베이스가 존재하지 않을 때
|
|
252
|
+
*
|
|
253
|
+
* 동작 방식:
|
|
254
|
+
* - **force=true**: clearSchema → 전체 생성 → 모든 migration "적용됨" 등록
|
|
255
|
+
* - **force=false** (기본):
|
|
256
|
+
* - SystemMigration 테이블 없음: 전체 생성 + 모든 migration 등록
|
|
257
|
+
* - SystemMigration 테이블 있음: 미적용 migration만 실행
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* // 기본 초기화 (마이그레이션 기반)
|
|
262
|
+
* await db.connectWithoutTransaction(async () => {
|
|
263
|
+
* await db.initialize();
|
|
264
|
+
* });
|
|
265
|
+
*
|
|
266
|
+
* // 강제 초기화 (기존 데이터 삭제)
|
|
267
|
+
* await db.connectWithoutTransaction(async () => {
|
|
268
|
+
* await db.initialize({ force: true });
|
|
269
|
+
* });
|
|
270
|
+
* ```
|
|
271
|
+
*/
|
|
272
|
+
initialize(options?: {
|
|
273
|
+
dbs?: string[];
|
|
274
|
+
force?: boolean;
|
|
275
|
+
}): Promise<void>;
|
|
276
|
+
/**
|
|
277
|
+
* 전체 객체 생성 (테이블/뷰/프로시저/FK/Index)
|
|
278
|
+
*/
|
|
279
|
+
private _createAllObjects;
|
|
280
|
+
/**
|
|
281
|
+
* ForeignKeyTarget/RelationKeyTarget 관계의 유효성 검증
|
|
282
|
+
* - targetTableFn()이 반환하는 테이블에 relationName에 해당하는 FK/RelationKey가 있는지 확인
|
|
283
|
+
*/
|
|
284
|
+
private _validateRelations;
|
|
285
|
+
/**
|
|
286
|
+
* DbContext의 모든 Builder 수집 (Table/View/Procedure)
|
|
287
|
+
*/
|
|
288
|
+
private _getBuilders;
|
|
289
|
+
/**
|
|
290
|
+
* 테이블 생성
|
|
291
|
+
*
|
|
292
|
+
* @param table - 생성할 테이블 빌더
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
* ```typescript
|
|
296
|
+
* await db.createTable(User);
|
|
297
|
+
* ```
|
|
298
|
+
*/
|
|
299
|
+
createTable(table: TableBuilder<any, any>): Promise<void>;
|
|
300
|
+
/**
|
|
301
|
+
* 테이블 삭제
|
|
302
|
+
*
|
|
303
|
+
* @param table - 삭제할 테이블 정보 (database, schema, name)
|
|
304
|
+
*
|
|
305
|
+
* @example
|
|
306
|
+
* ```typescript
|
|
307
|
+
* await db.dropTable({ database: "mydb", name: "User" });
|
|
308
|
+
* ```
|
|
309
|
+
*/
|
|
310
|
+
dropTable(table: QueryDefObjectName): Promise<void>;
|
|
311
|
+
/**
|
|
312
|
+
* 테이블 이름 변경
|
|
313
|
+
*
|
|
314
|
+
* @param table - 변경할 테이블 정보
|
|
315
|
+
* @param newName - 새 테이블 이름
|
|
316
|
+
*
|
|
317
|
+
* @example
|
|
318
|
+
* ```typescript
|
|
319
|
+
* await db.renameTable({ database: "mydb", name: "User" }, "Member");
|
|
320
|
+
* ```
|
|
321
|
+
*/
|
|
322
|
+
renameTable(table: QueryDefObjectName, newName: string): Promise<void>;
|
|
323
|
+
/**
|
|
324
|
+
* 뷰 생성
|
|
325
|
+
*
|
|
326
|
+
* @param view - 생성할 뷰 빌더
|
|
327
|
+
*
|
|
328
|
+
* @example
|
|
329
|
+
* ```typescript
|
|
330
|
+
* await db.createView(UserSummary);
|
|
331
|
+
* ```
|
|
332
|
+
*/
|
|
333
|
+
createView(view: ViewBuilder<any, any, any>): Promise<void>;
|
|
334
|
+
/**
|
|
335
|
+
* 뷰 삭제
|
|
336
|
+
*
|
|
337
|
+
* @param view - 삭제할 뷰 정보
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* ```typescript
|
|
341
|
+
* await db.dropView({ database: "mydb", name: "UserSummary" });
|
|
342
|
+
* ```
|
|
343
|
+
*/
|
|
344
|
+
dropView(view: QueryDefObjectName): Promise<void>;
|
|
345
|
+
/**
|
|
346
|
+
* 저장 프로시저 생성
|
|
347
|
+
*
|
|
348
|
+
* @param procedure - 생성할 프로시저 빌더
|
|
349
|
+
*
|
|
350
|
+
* @example
|
|
351
|
+
* ```typescript
|
|
352
|
+
* await db.createProc(GetUserById);
|
|
353
|
+
* ```
|
|
354
|
+
*/
|
|
355
|
+
createProc(procedure: ProcedureBuilder<any, any>): Promise<void>;
|
|
356
|
+
/**
|
|
357
|
+
* 저장 프로시저 삭제
|
|
358
|
+
*
|
|
359
|
+
* @param procedure - 삭제할 프로시저 정보
|
|
360
|
+
*
|
|
361
|
+
* @example
|
|
362
|
+
* ```typescript
|
|
363
|
+
* await db.dropProc({ database: "mydb", name: "GetUserById" });
|
|
364
|
+
* ```
|
|
365
|
+
*/
|
|
366
|
+
dropProc(procedure: QueryDefObjectName): Promise<void>;
|
|
367
|
+
/**
|
|
368
|
+
* Builder를 CREATE QueryDef로 변환
|
|
369
|
+
*
|
|
370
|
+
* @param builder - Table/View/Procedure 빌더
|
|
371
|
+
* @returns CREATE TABLE/VIEW/PROCEDURE QueryDef
|
|
372
|
+
* @throws {Error} 알 수 없는 빌더 타입일 때
|
|
373
|
+
*/
|
|
374
|
+
getCreateObjectQueryDef(builder: TableBuilder<any, any> | ViewBuilder<any, any, any> | ProcedureBuilder<any, any>): QueryDef;
|
|
375
|
+
/**
|
|
376
|
+
* CREATE TABLE QueryDef 생성
|
|
377
|
+
*
|
|
378
|
+
* @param table - 테이블 빌더
|
|
379
|
+
* @returns CREATE TABLE QueryDef
|
|
380
|
+
* @throws {Error} 테이블에 컬럼이 없을 때
|
|
381
|
+
*/
|
|
382
|
+
getCreateTableQueryDef(table: TableBuilder<any, any>): QueryDef;
|
|
383
|
+
/**
|
|
384
|
+
* CREATE VIEW QueryDef 생성
|
|
385
|
+
*
|
|
386
|
+
* @param view - 뷰 빌더
|
|
387
|
+
* @returns CREATE VIEW QueryDef
|
|
388
|
+
* @throws {Error} 뷰에 viewFn이 없을 때
|
|
389
|
+
*/
|
|
390
|
+
getCreateViewQueryDef(view: ViewBuilder<any, any, any>): QueryDef;
|
|
391
|
+
/**
|
|
392
|
+
* CREATE PROCEDURE QueryDef 생성
|
|
393
|
+
*
|
|
394
|
+
* @param procedure - 프로시저 빌더
|
|
395
|
+
* @returns CREATE PROCEDURE QueryDef
|
|
396
|
+
* @throws {Error} 프로시저에 본문이 없을 때
|
|
397
|
+
*/
|
|
398
|
+
getCreateProcQueryDef(procedure: ProcedureBuilder<any, any>): QueryDef;
|
|
399
|
+
/** DROP TABLE QueryDef 생성 */
|
|
400
|
+
getDropTableQueryDef(table: QueryDefObjectName): DropTableQueryDef;
|
|
401
|
+
/** RENAME TABLE QueryDef 생성 */
|
|
402
|
+
getRenameTableQueryDef(table: QueryDefObjectName, newName: string): RenameTableQueryDef;
|
|
403
|
+
/** DROP VIEW QueryDef 생성 */
|
|
404
|
+
getDropViewQueryDef(view: QueryDefObjectName): DropViewQueryDef;
|
|
405
|
+
/** DROP PROCEDURE QueryDef 생성 */
|
|
406
|
+
getDropProcQueryDef(procedure: QueryDefObjectName): DropProcQueryDef;
|
|
407
|
+
/**
|
|
408
|
+
* 컬럼 추가
|
|
409
|
+
*
|
|
410
|
+
* @param table - 테이블 정보
|
|
411
|
+
* @param columnName - 추가할 컬럼 이름
|
|
412
|
+
* @param column - 컬럼 빌더 (타입, nullable, default 등)
|
|
413
|
+
*
|
|
414
|
+
* @example
|
|
415
|
+
* ```typescript
|
|
416
|
+
* await db.addColumn(
|
|
417
|
+
* { database: "mydb", name: "User" },
|
|
418
|
+
* "status",
|
|
419
|
+
* c.varchar(20).nullable(),
|
|
420
|
+
* );
|
|
421
|
+
* ```
|
|
422
|
+
*/
|
|
423
|
+
addColumn(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): Promise<void>;
|
|
424
|
+
/**
|
|
425
|
+
* 컬럼 삭제
|
|
426
|
+
*
|
|
427
|
+
* @param table - 테이블 정보
|
|
428
|
+
* @param column - 삭제할 컬럼 이름
|
|
429
|
+
*
|
|
430
|
+
* @example
|
|
431
|
+
* ```typescript
|
|
432
|
+
* await db.dropColumn(
|
|
433
|
+
* { database: "mydb", name: "User" },
|
|
434
|
+
* "status",
|
|
435
|
+
* );
|
|
436
|
+
* ```
|
|
437
|
+
*/
|
|
438
|
+
dropColumn(table: QueryDefObjectName, column: string): Promise<void>;
|
|
439
|
+
/**
|
|
440
|
+
* 컬럼 수정
|
|
441
|
+
*
|
|
442
|
+
* @param table - 테이블 정보
|
|
443
|
+
* @param columnName - 수정할 컬럼 이름
|
|
444
|
+
* @param column - 새 컬럼 정의
|
|
445
|
+
*
|
|
446
|
+
* @example
|
|
447
|
+
* ```typescript
|
|
448
|
+
* await db.modifyColumn(
|
|
449
|
+
* { database: "mydb", name: "User" },
|
|
450
|
+
* "status",
|
|
451
|
+
* c.varchar(50).nullable(), // 길이 변경
|
|
452
|
+
* );
|
|
453
|
+
* ```
|
|
454
|
+
*/
|
|
455
|
+
modifyColumn(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): Promise<void>;
|
|
456
|
+
/**
|
|
457
|
+
* 컬럼 이름 변경
|
|
458
|
+
*
|
|
459
|
+
* @param table - 테이블 정보
|
|
460
|
+
* @param column - 현재 컬럼 이름
|
|
461
|
+
* @param newName - 새 컬럼 이름
|
|
462
|
+
*
|
|
463
|
+
* @example
|
|
464
|
+
* ```typescript
|
|
465
|
+
* await db.renameColumn(
|
|
466
|
+
* { database: "mydb", name: "User" },
|
|
467
|
+
* "status",
|
|
468
|
+
* "userStatus",
|
|
469
|
+
* );
|
|
470
|
+
* ```
|
|
471
|
+
*/
|
|
472
|
+
renameColumn(table: QueryDefObjectName, column: string, newName: string): Promise<void>;
|
|
473
|
+
/** ADD COLUMN QueryDef 생성 */
|
|
474
|
+
getAddColumnQueryDef(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): AddColumnQueryDef;
|
|
475
|
+
/** DROP COLUMN QueryDef 생성 */
|
|
476
|
+
getDropColumnQueryDef(table: QueryDefObjectName, column: string): DropColumnQueryDef;
|
|
477
|
+
/** MODIFY COLUMN QueryDef 생성 */
|
|
478
|
+
getModifyColumnQueryDef(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): ModifyColumnQueryDef;
|
|
479
|
+
/** RENAME COLUMN QueryDef 생성 */
|
|
480
|
+
getRenameColumnQueryDef(table: QueryDefObjectName, column: string, newName: string): RenameColumnQueryDef;
|
|
481
|
+
/**
|
|
482
|
+
* Primary Key 추가
|
|
483
|
+
*
|
|
484
|
+
* @param table - 테이블 정보
|
|
485
|
+
* @param columns - PK 구성 컬럼 배열
|
|
486
|
+
*
|
|
487
|
+
* @example
|
|
488
|
+
* ```typescript
|
|
489
|
+
* await db.addPk(
|
|
490
|
+
* { database: "mydb", name: "User" },
|
|
491
|
+
* ["id"],
|
|
492
|
+
* );
|
|
493
|
+
* ```
|
|
494
|
+
*/
|
|
495
|
+
addPk(table: QueryDefObjectName, columns: string[]): Promise<void>;
|
|
496
|
+
/**
|
|
497
|
+
* Primary Key 삭제
|
|
498
|
+
*
|
|
499
|
+
* @param table - 테이블 정보
|
|
500
|
+
*
|
|
501
|
+
* @example
|
|
502
|
+
* ```typescript
|
|
503
|
+
* await db.dropPk({ database: "mydb", name: "User" });
|
|
504
|
+
* ```
|
|
505
|
+
*/
|
|
506
|
+
dropPk(table: QueryDefObjectName): Promise<void>;
|
|
507
|
+
/**
|
|
508
|
+
* Foreign Key 추가
|
|
509
|
+
*
|
|
510
|
+
* @param table - 테이블 정보
|
|
511
|
+
* @param relationName - 관계 이름 (FK_테이블명_관계이름 형식으로 FK 이름 생성)
|
|
512
|
+
* @param relationDef - ForeignKey 빌더
|
|
513
|
+
*
|
|
514
|
+
* @example
|
|
515
|
+
* ```typescript
|
|
516
|
+
* await db.addFk(
|
|
517
|
+
* { database: "mydb", name: "Post" },
|
|
518
|
+
* "author",
|
|
519
|
+
* ForeignKey(User, ["authorId"]),
|
|
520
|
+
* );
|
|
521
|
+
* ```
|
|
522
|
+
*/
|
|
523
|
+
addFk(table: QueryDefObjectName, relationName: string, relationDef: ForeignKeyBuilder<any, any>): Promise<void>;
|
|
524
|
+
/**
|
|
525
|
+
* 인덱스 추가
|
|
526
|
+
*
|
|
527
|
+
* @param table - 테이블 정보
|
|
528
|
+
* @param indexBuilder - 인덱스 빌더
|
|
529
|
+
*
|
|
530
|
+
* @example
|
|
531
|
+
* ```typescript
|
|
532
|
+
* await db.addIdx(
|
|
533
|
+
* { database: "mydb", name: "User" },
|
|
534
|
+
* Index(["email"]).unique(),
|
|
535
|
+
* );
|
|
536
|
+
* ```
|
|
537
|
+
*/
|
|
538
|
+
addIdx(table: QueryDefObjectName, indexBuilder: IndexBuilder<string[]>): Promise<void>;
|
|
539
|
+
/**
|
|
540
|
+
* Foreign Key 삭제
|
|
541
|
+
*
|
|
542
|
+
* @param table - 테이블 정보
|
|
543
|
+
* @param relationName - 관계 이름
|
|
544
|
+
*
|
|
545
|
+
* @example
|
|
546
|
+
* ```typescript
|
|
547
|
+
* await db.dropFk({ database: "mydb", name: "Post" }, "author");
|
|
548
|
+
* ```
|
|
549
|
+
*/
|
|
550
|
+
dropFk(table: QueryDefObjectName, relationName: string): Promise<void>;
|
|
551
|
+
/**
|
|
552
|
+
* 인덱스 삭제
|
|
553
|
+
*
|
|
554
|
+
* @param table - 테이블 정보
|
|
555
|
+
* @param columns - 인덱스 구성 컬럼 배열 (인덱스 이름 추론용)
|
|
556
|
+
*
|
|
557
|
+
* @example
|
|
558
|
+
* ```typescript
|
|
559
|
+
* await db.dropIdx({ database: "mydb", name: "User" }, ["email"]);
|
|
560
|
+
* ```
|
|
561
|
+
*/
|
|
562
|
+
dropIdx(table: QueryDefObjectName, columns: string[]): Promise<void>;
|
|
563
|
+
/** DROP PRIMARY KEY QueryDef 생성 */
|
|
564
|
+
getDropPkQueryDef(table: QueryDefObjectName): DropPkQueryDef;
|
|
565
|
+
/** ADD PRIMARY KEY QueryDef 생성 */
|
|
566
|
+
getAddPkQueryDef(table: QueryDefObjectName, columns: string[]): AddPkQueryDef;
|
|
567
|
+
/** ADD FOREIGN KEY QueryDef 생성 */
|
|
568
|
+
getAddFkQueryDef(table: QueryDefObjectName, relationName: string, relationDef: ForeignKeyBuilder<any, any>): QueryDef;
|
|
569
|
+
/** ADD INDEX QueryDef 생성 */
|
|
570
|
+
getAddIdxQueryDef(table: QueryDefObjectName, indexBuilder: IndexBuilder<string[]>): QueryDef;
|
|
571
|
+
/** DROP FOREIGN KEY QueryDef 생성 */
|
|
572
|
+
getDropFkQueryDef(table: QueryDefObjectName, relationName: string): DropFkQueryDef;
|
|
573
|
+
/** DROP INDEX QueryDef 생성 */
|
|
574
|
+
getDropIdxQueryDef(table: QueryDefObjectName, columns: string[]): DropIdxQueryDef;
|
|
575
|
+
/**
|
|
576
|
+
* 스키마 내 모든 객체 삭제
|
|
577
|
+
*
|
|
578
|
+
* 지정한 database/schema 내의 모든 테이블, 뷰, 프로시저 등을 삭제
|
|
579
|
+
*
|
|
580
|
+
* @param params - 대상 database/schema
|
|
581
|
+
* @param params.database - 데이터베이스 이름
|
|
582
|
+
* @param params.schema - 스키마 이름 (MSSQL/PostgreSQL)
|
|
583
|
+
*
|
|
584
|
+
* @example
|
|
585
|
+
* ```typescript
|
|
586
|
+
* await db.clearSchema({ database: "mydb", schema: "public" });
|
|
587
|
+
* ```
|
|
588
|
+
*/
|
|
589
|
+
clearSchema(params: {
|
|
590
|
+
database: string;
|
|
591
|
+
schema?: string;
|
|
592
|
+
}): Promise<void>;
|
|
593
|
+
/**
|
|
594
|
+
* 스키마 존재 여부 확인
|
|
595
|
+
*
|
|
596
|
+
* @param database - 데이터베이스 이름
|
|
597
|
+
* @param schema - 스키마 이름 (MSSQL/PostgreSQL)
|
|
598
|
+
* @returns 스키마 존재 여부
|
|
599
|
+
*
|
|
600
|
+
* @example
|
|
601
|
+
* ```typescript
|
|
602
|
+
* const exists = await db.schemaExists("mydb");
|
|
603
|
+
* if (!exists) {
|
|
604
|
+
* throw new Error("Database not found");
|
|
605
|
+
* }
|
|
606
|
+
* ```
|
|
607
|
+
*/
|
|
608
|
+
schemaExists(database: string, schema?: string): Promise<boolean>;
|
|
609
|
+
/** CLEAR SCHEMA QueryDef 생성 */
|
|
610
|
+
getClearSchemaQueryDef(params: {
|
|
611
|
+
database: string;
|
|
612
|
+
schema?: string;
|
|
613
|
+
}): ClearSchemaQueryDef;
|
|
614
|
+
/** SCHEMA EXISTS QueryDef 생성 */
|
|
615
|
+
getSchemaExistsQueryDef(database: string, schema?: string): SchemaExistsQueryDef;
|
|
616
|
+
/**
|
|
617
|
+
* 테이블 데이터 전체 삭제 (TRUNCATE)
|
|
618
|
+
*
|
|
619
|
+
* DELETE와 달리 로그 없이 빠르게 삭제하며, AUTO_INCREMENT 초기화
|
|
620
|
+
*
|
|
621
|
+
* @param table - 테이블 정보
|
|
622
|
+
*
|
|
623
|
+
* @example
|
|
624
|
+
* ```typescript
|
|
625
|
+
* await db.truncate({ database: "mydb", name: "User" });
|
|
626
|
+
* ```
|
|
627
|
+
*/
|
|
628
|
+
truncate(table: QueryDefObjectName): Promise<void>;
|
|
629
|
+
/**
|
|
630
|
+
* Foreign Key 제약 조건 ON/OFF
|
|
631
|
+
*
|
|
632
|
+
* 대량 데이터 작업 시 FK 제약 임시 해제에 사용
|
|
633
|
+
* 트랜잭션 내에서 사용 가능 (DDL이 아님)
|
|
634
|
+
*
|
|
635
|
+
* @param table - 테이블 정보
|
|
636
|
+
* @param switch_ - "on" 또는 "off"
|
|
637
|
+
*
|
|
638
|
+
* @example
|
|
639
|
+
* ```typescript
|
|
640
|
+
* await db.connect(async () => {
|
|
641
|
+
* await db.switchFk({ database: "mydb", name: "Post" }, "off");
|
|
642
|
+
* await db.post().deleteAsync(() => []);
|
|
643
|
+
* await db.switchFk({ database: "mydb", name: "Post" }, "on");
|
|
644
|
+
* });
|
|
645
|
+
* ```
|
|
646
|
+
*/
|
|
647
|
+
switchFk(table: QueryDefObjectName, switch_: "on" | "off"): Promise<void>;
|
|
648
|
+
/** TRUNCATE TABLE QueryDef 생성 */
|
|
649
|
+
getTruncateQueryDef(table: QueryDefObjectName): TruncateQueryDef;
|
|
650
|
+
/** SWITCH FK QueryDef 생성 */
|
|
651
|
+
getSwitchFkQueryDef(table: QueryDefObjectName, switch_: "on" | "off"): SwitchFkQueryDef;
|
|
652
|
+
/**
|
|
653
|
+
* TableBuilder/ViewBuilder를 QueryDefObjectName으로 변환
|
|
654
|
+
*
|
|
655
|
+
* @param tableOrView - 테이블 또는 뷰 빌더
|
|
656
|
+
* @returns QueryDef에서 사용할 객체 이름 정보
|
|
657
|
+
*/
|
|
658
|
+
getQueryDefObjectName(tableOrView: TableBuilder<any, any> | ViewBuilder<any, any, any>): QueryDefObjectName;
|
|
659
|
+
/**
|
|
660
|
+
* 테이블 없음 에러인지 확인
|
|
661
|
+
*
|
|
662
|
+
* DBMS별 에러 코드/메시지 패턴:
|
|
663
|
+
* - MySQL: errno 1146 (ER_NO_SUCH_TABLE), "Table 'xxx' doesn't exist"
|
|
664
|
+
* - MSSQL: number 208, "Invalid object name 'xxx'"
|
|
665
|
+
* - PostgreSQL: code "42P01", "relation \"xxx\" does not exist"
|
|
666
|
+
*/
|
|
667
|
+
private _isTableNotExistsError;
|
|
668
|
+
}
|
|
669
|
+
//# sourceMappingURL=db-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-context.d.ts","sourceRoot":"","sources":["../../../../orm-common/src/db-context.ts"],"names":[],"mappings":"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"}
|