@simplysm/orm-common 14.0.15 → 14.0.17
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 +26 -19
- package/dist/db-context.d.ts +133 -0
- package/dist/db-context.d.ts.map +1 -0
- package/dist/db-context.js +325 -0
- package/dist/db-context.js.map +1 -0
- package/dist/ddl/initialize.d.ts +5 -3
- package/dist/ddl/initialize.d.ts.map +1 -1
- package/dist/ddl/initialize.js +39 -32
- package/dist/ddl/initialize.js.map +1 -1
- package/dist/exec/executable.js +1 -1
- package/dist/exec/executable.js.map +1 -1
- package/dist/exec/queryable.js +2 -2
- package/dist/exec/queryable.js.map +1 -1
- package/dist/exec/search-parser.d.ts.map +1 -1
- package/dist/exec/search-parser.js +2 -1
- package/dist/exec/search-parser.js.map +1 -1
- package/dist/expr/expr.d.ts +2 -2
- package/dist/expr/expr.js +2 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.js +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +7 -0
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.js +86 -16
- package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -1
- package/dist/schema/factory/relation-builder.d.ts +44 -67
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +37 -78
- package/dist/schema/factory/relation-builder.js.map +1 -1
- package/dist/schema/view-builder.d.ts +1 -1
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +0 -2
- package/dist/schema/view-builder.js.map +1 -1
- package/dist/types/column.js +1 -1
- package/dist/types/column.js.map +1 -1
- package/dist/types/db-context-def.d.ts +2 -42
- package/dist/types/db-context-def.d.ts.map +1 -1
- package/dist/utils/result-parser.js +31 -23
- package/dist/utils/result-parser.js.map +1 -1
- package/docs/core.md +110 -50
- package/docs/schema-builders.md +13 -19
- package/docs/types.md +2 -41
- package/package.json +3 -3
- package/src/db-context.ts +455 -0
- package/src/ddl/initialize.ts +49 -37
- package/src/exec/executable.ts +1 -1
- package/src/exec/queryable.ts +2 -2
- package/src/exec/search-parser.ts +2 -1
- package/src/expr/expr.ts +2 -2
- package/src/index.ts +2 -3
- package/src/query-builder/mssql/mssql-expr-renderer.ts +1 -1
- package/src/query-builder/mysql/mysql-expr-renderer.ts +1 -1
- package/src/query-builder/mysql/mysql-query-builder.ts +1 -1
- package/src/query-builder/postgresql/postgresql-query-builder.ts +93 -14
- package/src/schema/factory/relation-builder.ts +56 -87
- package/src/schema/view-builder.ts +1 -3
- package/src/types/column.ts +1 -1
- package/src/types/db-context-def.ts +2 -60
- package/src/utils/result-parser.ts +29 -22
- package/dist/create-db-context.d.ts +0 -34
- package/dist/create-db-context.d.ts.map +0 -1
- package/dist/create-db-context.js +0 -329
- package/dist/create-db-context.js.map +0 -1
- package/dist/define-db-context.d.ts +0 -15
- package/dist/define-db-context.d.ts.map +0 -1
- package/dist/define-db-context.js +0 -12
- package/dist/define-db-context.js.map +0 -1
- package/src/create-db-context.ts +0 -409
- package/src/define-db-context.ts +0 -28
|
@@ -266,17 +266,29 @@ async function parseJoinedRecords<TRecord>(
|
|
|
266
266
|
/**
|
|
267
267
|
* 그룹 key를 문자열로 직렬화 (Map key로 사용)
|
|
268
268
|
*
|
|
269
|
-
*
|
|
269
|
+
* length-prefixed 인코딩으로 값 내부의 구분자 문자 충돌을 방지한다.
|
|
270
|
+
* null/undefined와 문자열 "null"/"undefined"도 구분된다.
|
|
271
|
+
* 객체 타입 값(하위 JOIN 데이터)은 직렬화에서 제외한다.
|
|
270
272
|
*/
|
|
271
273
|
function serializeGroupKey(groupKey: Record<string, unknown>, cachedKeyOrder?: string[]): string {
|
|
272
274
|
const keys = cachedKeyOrder ?? Object.keys(groupKey).sort((a, b) => a.localeCompare(b));
|
|
273
275
|
let result = "";
|
|
274
|
-
for (
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
result += keys[i];
|
|
276
|
+
for (const key of keys) {
|
|
277
|
+
const v = groupKey[key];
|
|
278
|
+
result += key.length.toString();
|
|
278
279
|
result += ":";
|
|
279
|
-
result +=
|
|
280
|
+
result += key;
|
|
281
|
+
if (v == null) {
|
|
282
|
+
result += "N;";
|
|
283
|
+
} else if (typeof v === "object") {
|
|
284
|
+
result += "O;";
|
|
285
|
+
} else {
|
|
286
|
+
const str = String(v);
|
|
287
|
+
result += str.length.toString();
|
|
288
|
+
result += ":";
|
|
289
|
+
result += str;
|
|
290
|
+
result += ";";
|
|
291
|
+
}
|
|
280
292
|
}
|
|
281
293
|
return result;
|
|
282
294
|
}
|
|
@@ -319,6 +331,8 @@ function groupRecordsRecursively(
|
|
|
319
331
|
|
|
320
332
|
// Map 기반 그룹핑 (O(n) 복잡도)
|
|
321
333
|
const groupMap = new Map<string, Record<string, unknown>>();
|
|
334
|
+
// 중복 검사용 hashSet을 데이터 객체와 분리 (DESIGN-003)
|
|
335
|
+
const hashSetsMap = new Map<string, Record<string, Set<string>>>();
|
|
322
336
|
|
|
323
337
|
// O(1) 조회를 위한 JOIN key 제외 집합 사전 계산
|
|
324
338
|
const joinKeyExclusions = buildJoinKeyExclusionSet(childJoinKeys);
|
|
@@ -338,13 +352,15 @@ function groupRecordsRecursively(
|
|
|
338
352
|
|
|
339
353
|
if (existingGroup != null) {
|
|
340
354
|
// 기존 그룹에 JOIN 데이터 병합
|
|
355
|
+
const hashSets = hashSetsMap.get(keyStr)!;
|
|
341
356
|
for (const joinKey of childJoinKeys) {
|
|
342
357
|
const localKey = currentPath === "" ? joinKey : joinKey.slice(currentPath.length + 1);
|
|
343
|
-
mergeJoinData(existingGroup, record, localKey, joinsConfig[joinKey].isSingle);
|
|
358
|
+
mergeJoinData(existingGroup, record, localKey, joinsConfig[joinKey].isSingle, hashSets);
|
|
344
359
|
}
|
|
345
360
|
} else {
|
|
346
361
|
// 새 그룹 생성
|
|
347
362
|
const newGroup = { ...record };
|
|
363
|
+
const hashSets: Record<string, Set<string>> = {};
|
|
348
364
|
|
|
349
365
|
// 각 JOIN key를 배열 또는 단일 객체로 초기화
|
|
350
366
|
for (const joinKey of childJoinKeys) {
|
|
@@ -353,7 +369,7 @@ function groupRecordsRecursively(
|
|
|
353
369
|
|
|
354
370
|
if (joinData != null && !isEmptyObject(joinData)) {
|
|
355
371
|
if (!joinsConfig[joinKey].isSingle) {
|
|
356
|
-
// 배열로 변환
|
|
372
|
+
// 배열로 변환 (hashSet은 첫 merge 시 초기화)
|
|
357
373
|
newGroup[localKey] = [joinData];
|
|
358
374
|
}
|
|
359
375
|
} else {
|
|
@@ -363,6 +379,7 @@ function groupRecordsRecursively(
|
|
|
363
379
|
}
|
|
364
380
|
|
|
365
381
|
groupMap.set(keyStr, newGroup);
|
|
382
|
+
hashSetsMap.set(keyStr, hashSets);
|
|
366
383
|
}
|
|
367
384
|
}
|
|
368
385
|
|
|
@@ -398,15 +415,6 @@ function groupRecordsRecursively(
|
|
|
398
415
|
}
|
|
399
416
|
}
|
|
400
417
|
|
|
401
|
-
// __hashSet__ 내부 속성 제거 (중복 검사용 임시 속성)
|
|
402
|
-
for (const group of grouped) {
|
|
403
|
-
for (const key of Object.keys(group)) {
|
|
404
|
-
if (key.startsWith("__hashSet__")) {
|
|
405
|
-
delete group[key];
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
|
|
410
418
|
return grouped;
|
|
411
419
|
}
|
|
412
420
|
|
|
@@ -454,6 +462,7 @@ function mergeJoinData(
|
|
|
454
462
|
newRecord: Record<string, unknown>,
|
|
455
463
|
localKey: string,
|
|
456
464
|
isSingle: boolean,
|
|
465
|
+
hashSets: Record<string, Set<string>>,
|
|
457
466
|
): void {
|
|
458
467
|
const newJoinData = newRecord[localKey] as Record<string, unknown> | undefined;
|
|
459
468
|
|
|
@@ -474,14 +483,12 @@ function mergeJoinData(
|
|
|
474
483
|
}
|
|
475
484
|
} else {
|
|
476
485
|
// isSingle: false → 배열에 추가
|
|
477
|
-
const hashSetKey = `__hashSet__${localKey}`;
|
|
478
486
|
if (!Array.isArray(existingJoinData)) {
|
|
479
487
|
existingGroup[localKey] = [newJoinData];
|
|
480
|
-
|
|
481
|
-
existingGroup[hashSetKey] = new Set([serializeGroupKey(newJoinData)]);
|
|
488
|
+
hashSets[localKey] = new Set([serializeGroupKey(newJoinData)]);
|
|
482
489
|
} else {
|
|
483
490
|
// Set 기반 중복 검사 (O(1))
|
|
484
|
-
const hashSet =
|
|
491
|
+
const hashSet = hashSets[localKey] as Set<string> | undefined;
|
|
485
492
|
const newHash = serializeGroupKey(newJoinData);
|
|
486
493
|
if (hashSet != null) {
|
|
487
494
|
if (!hashSet.has(newHash)) {
|
|
@@ -489,7 +496,7 @@ function mergeJoinData(
|
|
|
489
496
|
existingJoinData.push(newJoinData);
|
|
490
497
|
}
|
|
491
498
|
} else {
|
|
492
|
-
// hashSet
|
|
499
|
+
// hashSet 미초기화: obj.equal 폴백 (중첩 객체 포함 시 정확한 비교)
|
|
493
500
|
const isDuplicate = existingJoinData.some((item) =>
|
|
494
501
|
obj.equal(item as Record<string, unknown>, newJoinData),
|
|
495
502
|
);
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { DbContextDef, DbContextInstance } from "./types/db-context-def";
|
|
2
|
-
import type { DbContextExecutor } from "./types/db";
|
|
3
|
-
/**
|
|
4
|
-
* DbContext 인스턴스 팩토리
|
|
5
|
-
*
|
|
6
|
-
* DbContextDef (정의)와 DbContextExecutor (실행기)를 받아
|
|
7
|
-
* queryable 접근자, DDL 메서드, 연결/트랜잭션 관리를 포함한
|
|
8
|
-
* 완전한 DbContext 인스턴스를 생성한다
|
|
9
|
-
*
|
|
10
|
-
* @param def - defineDbContext()로 생성된 정의 객체
|
|
11
|
-
* @param executor - 쿼리 실행기 (NodeDbContextExecutor, ServiceDbContextExecutor 등)
|
|
12
|
-
* @param opt - 데이터베이스 옵션
|
|
13
|
-
* @param opt.database - 데이터베이스 이름
|
|
14
|
-
* @param opt.schema - schema 이름 (MSSQL: dbo, PostgreSQL: public)
|
|
15
|
-
* @returns 완전한 DbContext 인스턴스
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const MyDb = defineDbContext({
|
|
20
|
-
* tables: { user: User, post: Post },
|
|
21
|
-
* });
|
|
22
|
-
*
|
|
23
|
-
* const db = createDbContext(MyDb, executor, { database: "mydb" });
|
|
24
|
-
*
|
|
25
|
-
* await db.connect(async () => {
|
|
26
|
-
* const users = await db.user().execute();
|
|
27
|
-
* });
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export declare function createDbContext<TDef extends DbContextDef<any, any, any>>(def: TDef, executor: DbContextExecutor, opt: {
|
|
31
|
-
database: string;
|
|
32
|
-
schema?: string;
|
|
33
|
-
}): DbContextInstance<TDef>;
|
|
34
|
-
//# sourceMappingURL=create-db-context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-db-context.d.ts","sourceRoot":"","sources":["../src/create-db-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAGZ,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAc,iBAAiB,EAA8B,MAAM,YAAY,CAAC;AAyB5F;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACtE,GAAG,EAAE,IAAI,EACT,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC,iBAAiB,CAAC,IAAI,CAAC,CA0VzB"}
|
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
import { DDL_TYPES } from "./types/query-def.js";
|
|
2
|
-
import { DbErrorCode, DbTransactionError } from "./errors/db-transaction-error.js";
|
|
3
|
-
import { TableBuilder } from "./schema/table-builder.js";
|
|
4
|
-
import { ViewBuilder } from "./schema/view-builder.js";
|
|
5
|
-
import { queryable } from "./exec/queryable.js";
|
|
6
|
-
import { executable } from "./exec/executable.js";
|
|
7
|
-
import { obj } from "@simplysm/core-common";
|
|
8
|
-
// DDL import
|
|
9
|
-
import * as tableDdl from "./ddl/table-ddl.js";
|
|
10
|
-
import * as columnDdl from "./ddl/column-ddl.js";
|
|
11
|
-
import * as relationDdl from "./ddl/relation-ddl.js";
|
|
12
|
-
import * as schemaDdl from "./ddl/schema-ddl.js";
|
|
13
|
-
import { initialize as initializeImpl, validateRelations as validateRelationsImpl, } from "./ddl/initialize.js";
|
|
14
|
-
/**
|
|
15
|
-
* DbContext 인스턴스 팩토리
|
|
16
|
-
*
|
|
17
|
-
* DbContextDef (정의)와 DbContextExecutor (실행기)를 받아
|
|
18
|
-
* queryable 접근자, DDL 메서드, 연결/트랜잭션 관리를 포함한
|
|
19
|
-
* 완전한 DbContext 인스턴스를 생성한다
|
|
20
|
-
*
|
|
21
|
-
* @param def - defineDbContext()로 생성된 정의 객체
|
|
22
|
-
* @param executor - 쿼리 실행기 (NodeDbContextExecutor, ServiceDbContextExecutor 등)
|
|
23
|
-
* @param opt - 데이터베이스 옵션
|
|
24
|
-
* @param opt.database - 데이터베이스 이름
|
|
25
|
-
* @param opt.schema - schema 이름 (MSSQL: dbo, PostgreSQL: public)
|
|
26
|
-
* @returns 완전한 DbContext 인스턴스
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* ```typescript
|
|
30
|
-
* const MyDb = defineDbContext({
|
|
31
|
-
* tables: { user: User, post: Post },
|
|
32
|
-
* });
|
|
33
|
-
*
|
|
34
|
-
* const db = createDbContext(MyDb, executor, { database: "mydb" });
|
|
35
|
-
*
|
|
36
|
-
* await db.connect(async () => {
|
|
37
|
-
* const users = await db.user().execute();
|
|
38
|
-
* });
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
export function createDbContext(def, executor, opt) {
|
|
42
|
-
// ── 내부 상태 (클로저) ──
|
|
43
|
-
let aliasCounter = 0;
|
|
44
|
-
let status = "ready";
|
|
45
|
-
let relationsValidated = false;
|
|
46
|
-
// ── DbContextBase 구현 ──
|
|
47
|
-
const base = {
|
|
48
|
-
get status() {
|
|
49
|
-
return status;
|
|
50
|
-
},
|
|
51
|
-
set status(v) {
|
|
52
|
-
status = v;
|
|
53
|
-
},
|
|
54
|
-
get database() {
|
|
55
|
-
return opt.database;
|
|
56
|
-
},
|
|
57
|
-
get schema() {
|
|
58
|
-
return opt.schema;
|
|
59
|
-
},
|
|
60
|
-
getNextAlias() {
|
|
61
|
-
return `T${++aliasCounter}`;
|
|
62
|
-
},
|
|
63
|
-
resetAliasCounter() {
|
|
64
|
-
aliasCounter = 0;
|
|
65
|
-
},
|
|
66
|
-
executeDefs(defs, resultMetas) {
|
|
67
|
-
if (status === "transact" &&
|
|
68
|
-
defs.some((d) => DDL_TYPES.includes(d.type))) {
|
|
69
|
-
throw new Error("TRANSACTION 상태에서는 DDL을 실행할 수 없습니다.");
|
|
70
|
-
}
|
|
71
|
-
return executor.executeDefs(defs, resultMetas);
|
|
72
|
-
},
|
|
73
|
-
getQueryDefObjectName(tableOrView) {
|
|
74
|
-
return obj.clearUndefined({
|
|
75
|
-
database: tableOrView.meta.database ?? opt.database,
|
|
76
|
-
schema: tableOrView.meta.schema ?? opt.schema,
|
|
77
|
-
name: tableOrView.meta.name,
|
|
78
|
-
});
|
|
79
|
-
},
|
|
80
|
-
async switchFk(table, enabled) {
|
|
81
|
-
await base.executeDefs([schemaDdl.getSwitchFkQueryDef(table, enabled)]);
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
// ── 모든 요소를 하나의 객체로 합성 ──
|
|
85
|
-
const db = {
|
|
86
|
-
// base 속성 전개 (getter/setter는 별도 처리 필요)
|
|
87
|
-
get status() {
|
|
88
|
-
return base.status;
|
|
89
|
-
},
|
|
90
|
-
set status(v) {
|
|
91
|
-
base.status = v;
|
|
92
|
-
},
|
|
93
|
-
get database() {
|
|
94
|
-
return base.database;
|
|
95
|
-
},
|
|
96
|
-
get schema() {
|
|
97
|
-
return base.schema;
|
|
98
|
-
},
|
|
99
|
-
getNextAlias: base.getNextAlias,
|
|
100
|
-
resetAliasCounter: base.resetAliasCounter,
|
|
101
|
-
executeDefs: base.executeDefs,
|
|
102
|
-
getQueryDefObjectName: base.getQueryDefObjectName,
|
|
103
|
-
//#region ========== 연결 관리 ==========
|
|
104
|
-
/**
|
|
105
|
-
* 트랜잭션 내에서 콜백 실행 (자동 커밋/롤백)
|
|
106
|
-
*
|
|
107
|
-
* 연결 -> 트랜잭션 시작 -> 콜백 실행 -> 커밋 -> 연결 종료
|
|
108
|
-
* 오류 발생 시 자동으로 롤백 후 연결 종료
|
|
109
|
-
*/
|
|
110
|
-
async connect(fn, isolationLevel) {
|
|
111
|
-
if (!relationsValidated) {
|
|
112
|
-
validateRelationsImpl(def);
|
|
113
|
-
relationsValidated = true;
|
|
114
|
-
}
|
|
115
|
-
base.resetAliasCounter();
|
|
116
|
-
await executor.connect();
|
|
117
|
-
status = "connect";
|
|
118
|
-
await executor.beginTransaction(isolationLevel);
|
|
119
|
-
status = "transact";
|
|
120
|
-
let result;
|
|
121
|
-
try {
|
|
122
|
-
result = await fn();
|
|
123
|
-
await executor.commitTransaction();
|
|
124
|
-
status = "connect";
|
|
125
|
-
}
|
|
126
|
-
catch (err) {
|
|
127
|
-
try {
|
|
128
|
-
await executor.rollbackTransaction();
|
|
129
|
-
status = "connect";
|
|
130
|
-
}
|
|
131
|
-
catch (err1) {
|
|
132
|
-
if (err1 instanceof DbTransactionError) {
|
|
133
|
-
if (err1.code !== DbErrorCode.NO_ACTIVE_TRANSACTION) {
|
|
134
|
-
await executor.close();
|
|
135
|
-
status = "ready";
|
|
136
|
-
throw err1;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
await executor.close();
|
|
141
|
-
status = "ready";
|
|
142
|
-
throw err1;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
await executor.close();
|
|
146
|
-
status = "ready";
|
|
147
|
-
throw err;
|
|
148
|
-
}
|
|
149
|
-
await executor.close();
|
|
150
|
-
status = "ready";
|
|
151
|
-
return result;
|
|
152
|
-
},
|
|
153
|
-
/**
|
|
154
|
-
* 트랜잭션 없이 연결 후 콜백 실행, 자동 종료
|
|
155
|
-
*
|
|
156
|
-
* 트랜잭션이 필요 없는 DDL 작업이나 읽기 작업에 사용
|
|
157
|
-
*/
|
|
158
|
-
async connectWithoutTransaction(callback) {
|
|
159
|
-
if (!relationsValidated) {
|
|
160
|
-
validateRelationsImpl(def);
|
|
161
|
-
relationsValidated = true;
|
|
162
|
-
}
|
|
163
|
-
base.resetAliasCounter();
|
|
164
|
-
await executor.connect();
|
|
165
|
-
status = "connect";
|
|
166
|
-
let result;
|
|
167
|
-
try {
|
|
168
|
-
result = await callback();
|
|
169
|
-
}
|
|
170
|
-
catch (err) {
|
|
171
|
-
await executor.close();
|
|
172
|
-
status = "ready";
|
|
173
|
-
throw err;
|
|
174
|
-
}
|
|
175
|
-
await executor.close();
|
|
176
|
-
status = "ready";
|
|
177
|
-
return result;
|
|
178
|
-
},
|
|
179
|
-
/**
|
|
180
|
-
* 이미 연결된 상태에서 트랜잭션 시작 (자동 커밋/롤백)
|
|
181
|
-
*
|
|
182
|
-
* connectWithoutTransaction 내에서 부분적으로 트랜잭션이 필요할 때 사용
|
|
183
|
-
*/
|
|
184
|
-
async transaction(fn, isolationLevel) {
|
|
185
|
-
if (status === "transact") {
|
|
186
|
-
throw new Error("이미 TRANSACTION 상태입니다.");
|
|
187
|
-
}
|
|
188
|
-
await executor.beginTransaction(isolationLevel);
|
|
189
|
-
status = "transact";
|
|
190
|
-
let result;
|
|
191
|
-
try {
|
|
192
|
-
result = await fn();
|
|
193
|
-
await executor.commitTransaction();
|
|
194
|
-
status = "connect";
|
|
195
|
-
}
|
|
196
|
-
catch (err) {
|
|
197
|
-
try {
|
|
198
|
-
await executor.rollbackTransaction();
|
|
199
|
-
status = "connect";
|
|
200
|
-
}
|
|
201
|
-
catch (err1) {
|
|
202
|
-
if (err1 instanceof DbTransactionError) {
|
|
203
|
-
if (err1.code !== DbErrorCode.NO_ACTIVE_TRANSACTION) {
|
|
204
|
-
throw err1;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
throw err1;
|
|
209
|
-
}
|
|
210
|
-
// NO_ACTIVE_TRANSACTION 오류이면 무시하고 원래 오류를 던짐
|
|
211
|
-
status = "connect";
|
|
212
|
-
}
|
|
213
|
-
throw err;
|
|
214
|
-
}
|
|
215
|
-
return result;
|
|
216
|
-
},
|
|
217
|
-
//#endregion
|
|
218
|
-
//#region ========== DDL 실행 메서드 ==========
|
|
219
|
-
async createTable(table) {
|
|
220
|
-
await base.executeDefs([tableDdl.getCreateTableQueryDef(base, table)]);
|
|
221
|
-
},
|
|
222
|
-
async dropTable(table) {
|
|
223
|
-
await base.executeDefs([tableDdl.getDropTableQueryDef(table)]);
|
|
224
|
-
},
|
|
225
|
-
async renameTable(table, newName) {
|
|
226
|
-
await base.executeDefs([tableDdl.getRenameTableQueryDef(table, newName)]);
|
|
227
|
-
},
|
|
228
|
-
async createView(view) {
|
|
229
|
-
await base.executeDefs([tableDdl.getCreateViewQueryDef(db, view)]);
|
|
230
|
-
},
|
|
231
|
-
async dropView(view) {
|
|
232
|
-
await base.executeDefs([tableDdl.getDropViewQueryDef(view)]);
|
|
233
|
-
},
|
|
234
|
-
async createProc(procedure) {
|
|
235
|
-
await base.executeDefs([tableDdl.getCreateProcQueryDef(base, procedure)]);
|
|
236
|
-
},
|
|
237
|
-
async dropProc(procedure) {
|
|
238
|
-
await base.executeDefs([tableDdl.getDropProcQueryDef(procedure)]);
|
|
239
|
-
},
|
|
240
|
-
async addColumn(table, columnName, column) {
|
|
241
|
-
await base.executeDefs([columnDdl.getAddColumnQueryDef(table, columnName, column)]);
|
|
242
|
-
},
|
|
243
|
-
async dropColumn(table, column) {
|
|
244
|
-
await base.executeDefs([columnDdl.getDropColumnQueryDef(table, column)]);
|
|
245
|
-
},
|
|
246
|
-
async modifyColumn(table, columnName, column) {
|
|
247
|
-
await base.executeDefs([columnDdl.getModifyColumnQueryDef(table, columnName, column)]);
|
|
248
|
-
},
|
|
249
|
-
async renameColumn(table, column, newName) {
|
|
250
|
-
await base.executeDefs([columnDdl.getRenameColumnQueryDef(table, column, newName)]);
|
|
251
|
-
},
|
|
252
|
-
async addPrimaryKey(table, columns) {
|
|
253
|
-
await base.executeDefs([relationDdl.getAddPrimaryKeyQueryDef(table, columns)]);
|
|
254
|
-
},
|
|
255
|
-
async dropPrimaryKey(table) {
|
|
256
|
-
await base.executeDefs([relationDdl.getDropPrimaryKeyQueryDef(table)]);
|
|
257
|
-
},
|
|
258
|
-
async addForeignKey(table, relationName, relationDef) {
|
|
259
|
-
await base.executeDefs([
|
|
260
|
-
relationDdl.getAddForeignKeyQueryDef(base, table, relationName, relationDef),
|
|
261
|
-
]);
|
|
262
|
-
},
|
|
263
|
-
async addIndex(table, indexBuilder) {
|
|
264
|
-
await base.executeDefs([relationDdl.getAddIndexQueryDef(table, indexBuilder)]);
|
|
265
|
-
},
|
|
266
|
-
async dropForeignKey(table, relationName) {
|
|
267
|
-
await base.executeDefs([relationDdl.getDropForeignKeyQueryDef(table, relationName)]);
|
|
268
|
-
},
|
|
269
|
-
async dropIndex(table, columns) {
|
|
270
|
-
await base.executeDefs([relationDdl.getDropIndexQueryDef(table, columns)]);
|
|
271
|
-
},
|
|
272
|
-
async clearSchema(params) {
|
|
273
|
-
await base.executeDefs([schemaDdl.getClearSchemaQueryDef(params)]);
|
|
274
|
-
},
|
|
275
|
-
async schemaExists(database, schema) {
|
|
276
|
-
const result = await base.executeDefs([schemaDdl.getSchemaExistsQueryDef(database, schema)]);
|
|
277
|
-
return result[0].length > 0;
|
|
278
|
-
},
|
|
279
|
-
async truncate(table) {
|
|
280
|
-
await base.executeDefs([schemaDdl.getTruncateQueryDef(table)]);
|
|
281
|
-
},
|
|
282
|
-
async switchFk(table, enabled) {
|
|
283
|
-
await base.executeDefs([schemaDdl.getSwitchFkQueryDef(table, enabled)]);
|
|
284
|
-
},
|
|
285
|
-
//#endregion
|
|
286
|
-
//#region ========== DDL QueryDef 생성기 ==========
|
|
287
|
-
getCreateTableQueryDef: (table) => tableDdl.getCreateTableQueryDef(base, table),
|
|
288
|
-
getCreateViewQueryDef: (view) => tableDdl.getCreateViewQueryDef(db, view),
|
|
289
|
-
getCreateProcQueryDef: (procedure) => tableDdl.getCreateProcQueryDef(base, procedure),
|
|
290
|
-
getCreateObjectQueryDef: (builder) => tableDdl.getCreateObjectQueryDef(db, builder),
|
|
291
|
-
getDropTableQueryDef: tableDdl.getDropTableQueryDef,
|
|
292
|
-
getRenameTableQueryDef: tableDdl.getRenameTableQueryDef,
|
|
293
|
-
getDropViewQueryDef: tableDdl.getDropViewQueryDef,
|
|
294
|
-
getDropProcQueryDef: tableDdl.getDropProcQueryDef,
|
|
295
|
-
getAddColumnQueryDef: columnDdl.getAddColumnQueryDef,
|
|
296
|
-
getDropColumnQueryDef: columnDdl.getDropColumnQueryDef,
|
|
297
|
-
getModifyColumnQueryDef: columnDdl.getModifyColumnQueryDef,
|
|
298
|
-
getRenameColumnQueryDef: columnDdl.getRenameColumnQueryDef,
|
|
299
|
-
getAddPrimaryKeyQueryDef: relationDdl.getAddPrimaryKeyQueryDef,
|
|
300
|
-
getDropPrimaryKeyQueryDef: relationDdl.getDropPrimaryKeyQueryDef,
|
|
301
|
-
getAddForeignKeyQueryDef: (table, relationName, relationDef) => relationDdl.getAddForeignKeyQueryDef(base, table, relationName, relationDef),
|
|
302
|
-
getAddIndexQueryDef: relationDdl.getAddIndexQueryDef,
|
|
303
|
-
getDropForeignKeyQueryDef: relationDdl.getDropForeignKeyQueryDef,
|
|
304
|
-
getDropIndexQueryDef: relationDdl.getDropIndexQueryDef,
|
|
305
|
-
getClearSchemaQueryDef: schemaDdl.getClearSchemaQueryDef,
|
|
306
|
-
getSchemaExistsQueryDef: schemaDdl.getSchemaExistsQueryDef,
|
|
307
|
-
getTruncateQueryDef: schemaDdl.getTruncateQueryDef,
|
|
308
|
-
getSwitchFkQueryDef: schemaDdl.getSwitchFkQueryDef,
|
|
309
|
-
//#endregion
|
|
310
|
-
//#region ========== 초기화 ==========
|
|
311
|
-
async initialize(options) {
|
|
312
|
-
await initializeImpl(db, def, options);
|
|
313
|
-
},
|
|
314
|
-
//#endregion
|
|
315
|
-
};
|
|
316
|
-
// ── Queryable 접근자 추가 ──
|
|
317
|
-
for (const [key, tableOrView] of Object.entries(def.meta.tables)) {
|
|
318
|
-
db[key] = queryable(db, tableOrView);
|
|
319
|
-
}
|
|
320
|
-
for (const [key, view] of Object.entries(def.meta.views)) {
|
|
321
|
-
db[key] = queryable(db, view);
|
|
322
|
-
}
|
|
323
|
-
// ── Executable 접근자 추가 ──
|
|
324
|
-
for (const [key, proc] of Object.entries(def.meta.procedures)) {
|
|
325
|
-
db[key] = executable(base, proc);
|
|
326
|
-
}
|
|
327
|
-
return db;
|
|
328
|
-
}
|
|
329
|
-
//# sourceMappingURL=create-db-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-db-context.js","sourceRoot":"","sources":["../src/create-db-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { TableBuilder } from "./schema/table-builder";
|
|
2
|
-
import type { ViewBuilder } from "./schema/view-builder";
|
|
3
|
-
import type { ProcedureBuilder } from "./schema/procedure-builder";
|
|
4
|
-
import type { Migration } from "./types/db";
|
|
5
|
-
import type { DbContextDef } from "./types/db-context-def";
|
|
6
|
-
import { _Migration } from "./models/system-migration";
|
|
7
|
-
export declare function defineDbContext<TTables extends Record<string, TableBuilder<any, any>> = {}, TViews extends Record<string, ViewBuilder<any, any, any>> = {}, TProcedures extends Record<string, ProcedureBuilder<any, any>> = {}>(config: {
|
|
8
|
-
tables?: TTables;
|
|
9
|
-
views?: TViews;
|
|
10
|
-
procedures?: TProcedures;
|
|
11
|
-
migrations?: Migration[];
|
|
12
|
-
}): DbContextDef<TTables & {
|
|
13
|
-
_migration: typeof _Migration;
|
|
14
|
-
}, TViews, TProcedures>;
|
|
15
|
-
//# sourceMappingURL=define-db-context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"define-db-context.d.ts","sourceRoot":"","sources":["../src/define-db-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,wBAAgB,eAAe,CAC7B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAC3D,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAC9D,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EACnE,MAAM,EAAE;IACR,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;CAC1B,GAAG,YAAY,CAAC,OAAO,GAAG;IAAE,UAAU,EAAE,OAAO,UAAU,CAAA;CAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAWjF"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { _Migration } from "./models/system-migration.js";
|
|
2
|
-
export function defineDbContext(config) {
|
|
3
|
-
return {
|
|
4
|
-
meta: {
|
|
5
|
-
tables: { ...(config.tables ?? {}), _migration: _Migration },
|
|
6
|
-
views: (config.views ?? {}),
|
|
7
|
-
procedures: (config.procedures ?? {}),
|
|
8
|
-
migrations: config.migrations ?? [],
|
|
9
|
-
},
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=define-db-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"define-db-context.js","sourceRoot":"","sources":["../src/define-db-context.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,MAAM,UAAU,eAAe,CAI7B,MAKD;IACC,OAAO;QACL,IAAI,EAAE;YACJ,MAAM,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,EAEzD;YACD,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAW;YACrC,UAAU,EAAE,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAgB;YACpD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;SACpC;KACF,CAAC;AACJ,CAAC"}
|