@simplysm/orm-common 14.0.16 → 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 +25 -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
package/README.md
CHANGED
|
@@ -16,10 +16,13 @@ pnpm add @simplysm/orm-common
|
|
|
16
16
|
|
|
17
17
|
| Export | Type | Description |
|
|
18
18
|
|--------|------|-------------|
|
|
19
|
-
| [`
|
|
20
|
-
| [`
|
|
19
|
+
| [`DbContext`](./docs/core.md#dbcontext) | Abstract Class | Base class for database contexts with connection, transaction, DDL, and initialization |
|
|
20
|
+
| [`SD_BUILDER`](./docs/core.md#sd_builder) | Symbol | Internal marker for queryable/executable builder identification |
|
|
21
21
|
| [`DbTransactionError`](./docs/core.md#dbtransactionerror) | Class | Standardized database transaction error with DBMS-independent error codes |
|
|
22
22
|
| [`DbErrorCode`](./docs/core.md#dberrorcode) | Enum | Transaction error codes |
|
|
23
|
+
| [`DbContextBase`](./docs/core.md#dbcontextbase) | Interface | Core interface for Queryable/Executable internal use |
|
|
24
|
+
| [`DbContextDdlMethods`](./docs/core.md#dbcontextddlmethods) | Interface | DDL execution and QueryDef generator methods |
|
|
25
|
+
| [`DbContextStatus`](./docs/core.md#dbcontextstatus) | Type | Connection status: "ready", "connect", "transact" |
|
|
23
26
|
| [`_Migration`](./docs/core.md#_migration) | Constant | System migration table definition (TableBuilder) |
|
|
24
27
|
|
|
25
28
|
### Queryable / Executable
|
|
@@ -64,10 +67,10 @@ pnpm add @simplysm/orm-common
|
|
|
64
67
|
| [`createColumnFactory`](./docs/schema-builders.md#createcolumnfactory) | Function | Column type factory |
|
|
65
68
|
| [`IndexBuilder`](./docs/schema-builders.md#indexbuilder) | Class | Index definition builder |
|
|
66
69
|
| [`createIndexFactory`](./docs/schema-builders.md#createindexfactory) | Function | Index factory |
|
|
67
|
-
| [`ForeignKeyBuilder`](./docs/schema-builders.md#foreignkeybuilder) | Class | FK relation builder (N:1) |
|
|
68
|
-
| [`ForeignKeyTargetBuilder`](./docs/schema-builders.md#foreignkeytargetbuilder) | Class | FK reverse-reference builder (1:N/1:1) |
|
|
69
|
-
| [`RelationKeyBuilder`](./docs/schema-builders.md#relationkeybuilder) | Class | Logical relation builder (no DB FK) |
|
|
70
|
-
| [`RelationKeyTargetBuilder`](./docs/schema-builders.md#relationkeytargetbuilder) | Class | Logical reverse-reference builder |
|
|
70
|
+
| [`ForeignKeyBuilder`](./docs/schema-builders.md#foreignkeybuilder) | Class | FK relation builder (N:1, configured via factory opts) |
|
|
71
|
+
| [`ForeignKeyTargetBuilder`](./docs/schema-builders.md#foreignkeytargetbuilder) | Class | FK reverse-reference builder (1:N/1:1, configured via factory opts) |
|
|
72
|
+
| [`RelationKeyBuilder`](./docs/schema-builders.md#relationkeybuilder) | Class | Logical relation builder (no DB FK, configured via factory opts) |
|
|
73
|
+
| [`RelationKeyTargetBuilder`](./docs/schema-builders.md#relationkeytargetbuilder) | Class | Logical reverse-reference builder (configured via factory opts) |
|
|
71
74
|
| [`createRelationFactory`](./docs/schema-builders.md#createrelationfactory) | Function | Relation factory |
|
|
72
75
|
|
|
73
76
|
### Query Builder & Result Parsing
|
|
@@ -89,7 +92,6 @@ pnpm add @simplysm/orm-common
|
|
|
89
92
|
|
|
90
93
|
See [Types documentation](./docs/types.md) for all type exports including:
|
|
91
94
|
- Database: `Dialect`, `dialects`, `IsolationLevel`, `DataRecord`, `DbContextExecutor`, `ResultMeta`, `Migration`, `QueryBuildResult`
|
|
92
|
-
- DbContext: `DbContextDef`, `DbContextBase`, `DbContextStatus`, `DbContextInstance`, `DbContextConnectionMethods`, `DbContextDdlMethods`
|
|
93
95
|
- Column: `DataType`, `ColumnPrimitive`, `ColumnPrimitiveStr`, `ColumnPrimitiveMap`, `ColumnMeta`, `dataTypeStrToColumnPrimitiveStr`, `inferColumnPrimitiveStr`, `InferColumnPrimitiveFromDataType`
|
|
94
96
|
- Column Builder: `ColumnBuilderRecord`, `InferColumns`, `InferColumnExprs`, `InferInsertColumns`, `InferUpdateColumns`, `RequiredInsertKeys`, `OptionalInsertKeys`, `DataToColumnBuilderRecord`
|
|
95
97
|
- Relation: `RelationBuilderRecord`, `InferDeepRelations`, `ExtractRelationTarget`, `ExtractRelationTargetResult`
|
|
@@ -101,10 +103,9 @@ See [Types documentation](./docs/types.md) for all type exports including:
|
|
|
101
103
|
### Define Schema and DbContext
|
|
102
104
|
|
|
103
105
|
```typescript
|
|
104
|
-
import { Table,
|
|
106
|
+
import { Table, DbContext, expr } from "@simplysm/orm-common";
|
|
105
107
|
|
|
106
108
|
const User = Table("User")
|
|
107
|
-
.database("mydb")
|
|
108
109
|
.columns((c) => ({
|
|
109
110
|
id: c.bigint().autoIncrement(),
|
|
110
111
|
name: c.varchar(100),
|
|
@@ -114,12 +115,18 @@ const User = Table("User")
|
|
|
114
115
|
.primaryKey("id")
|
|
115
116
|
.indexes((i) => [i.index("email").unique()])
|
|
116
117
|
.relations((r) => ({
|
|
117
|
-
company: r.foreignKey(["companyId"], () => Company),
|
|
118
|
+
company: r.foreignKey(["companyId"], () => Company, { description: "Company" }),
|
|
118
119
|
posts: r.foreignKeyTarget(() => Post, "author"),
|
|
120
|
+
topPost: r.foreignKeyTarget(() => Post, "author", { single: true, description: "Top post" }),
|
|
119
121
|
}));
|
|
120
122
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
+
class MyDb extends DbContext {
|
|
124
|
+
user = this.queryable(User);
|
|
125
|
+
post = this.queryable(Post);
|
|
126
|
+
company = this.queryable(Company);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const db = new MyDb(executor, { database: "mydb" });
|
|
123
130
|
```
|
|
124
131
|
|
|
125
132
|
### Query Data
|
|
@@ -127,8 +134,8 @@ const db = createDbContext(MyDb, executor, { database: "mydb" });
|
|
|
127
134
|
```typescript
|
|
128
135
|
await db.connect(async () => {
|
|
129
136
|
const users = await db.user()
|
|
130
|
-
.where((u) => [expr.eq(u.
|
|
131
|
-
.orderBy((u) => u.name)
|
|
137
|
+
.where((u) => [expr.eq(u.name, "Alice")])
|
|
138
|
+
.orderBy((u) => [u.name])
|
|
132
139
|
.execute();
|
|
133
140
|
|
|
134
141
|
const posts = await db.post().include((p) => p.author).execute();
|
|
@@ -137,7 +144,7 @@ await db.connect(async () => {
|
|
|
137
144
|
|
|
138
145
|
await db.user()
|
|
139
146
|
.where((u) => [expr.eq(u.id, 1)])
|
|
140
|
-
.update(
|
|
147
|
+
.update({ name: "Updated" });
|
|
141
148
|
});
|
|
142
149
|
```
|
|
143
150
|
|
|
@@ -157,8 +164,7 @@ db.user().select((u) => ({
|
|
|
157
164
|
.default("C"),
|
|
158
165
|
}));
|
|
159
166
|
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}));
|
|
167
|
+
// Search parser
|
|
168
|
+
const parsed = parseSearchQuery('+apple -banana "exact phrase"');
|
|
169
|
+
// { must: ["%apple%", "%exact phrase%"], not: ["%banana%"], or: [] }
|
|
164
170
|
```
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import type { DbContextBase, DbContextStatus } from "./types/db-context-def";
|
|
2
|
+
import type { DataRecord, DbContextExecutor, IsolationLevel, Migration, ResultMeta } from "./types/db";
|
|
3
|
+
import type { QueryDef, QueryDefObjectName } from "./types/query-def";
|
|
4
|
+
import { TableBuilder } from "./schema/table-builder";
|
|
5
|
+
import { ViewBuilder } from "./schema/view-builder";
|
|
6
|
+
import type { ProcedureBuilder } from "./schema/procedure-builder";
|
|
7
|
+
import type { Queryable } from "./exec/queryable";
|
|
8
|
+
import type { Executable } from "./exec/executable";
|
|
9
|
+
import type { ColumnBuilder } from "./schema/factory/column-builder";
|
|
10
|
+
import type { ForeignKeyBuilder } from "./schema/factory/relation-builder";
|
|
11
|
+
import type { IndexBuilder } from "./schema/factory/index-builder";
|
|
12
|
+
export declare const SD_BUILDER: unique symbol;
|
|
13
|
+
/**
|
|
14
|
+
* DbContext base class
|
|
15
|
+
*
|
|
16
|
+
* 테이블/뷰/프로시저를 class 프로퍼티로 등록하고,
|
|
17
|
+
* 연결/트랜잭션/DDL/초기화를 제공한다.
|
|
18
|
+
*
|
|
19
|
+
* defineDbContext/createDbContext의 class 기반 대체.
|
|
20
|
+
* 각 프로퍼티가 독립 직렬화되어 40+ 테이블에서도 TS7056이 발생하지 않는다.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* class MainDb extends DbContext {
|
|
25
|
+
* user = this.queryable(User);
|
|
26
|
+
* post = this.queryable(Post);
|
|
27
|
+
* activeUsers = this.queryable(ActiveUsers);
|
|
28
|
+
* getUserById = this.executable(GetUserById);
|
|
29
|
+
*
|
|
30
|
+
* migrations = [{ name: "001", up: async (db) => { ... } }];
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* const db = new MainDb(executor, { database: "mydb" });
|
|
34
|
+
* await db.connect(async () => {
|
|
35
|
+
* const users = await db.user().execute();
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare abstract class DbContext implements DbContextBase {
|
|
40
|
+
private readonly _executor;
|
|
41
|
+
private readonly _opt;
|
|
42
|
+
status: DbContextStatus;
|
|
43
|
+
private _aliasCounter;
|
|
44
|
+
private _relationsValidated;
|
|
45
|
+
_migration: () => Queryable<import(".").InferColumns<{
|
|
46
|
+
code: ColumnBuilder<string, {
|
|
47
|
+
type: "string";
|
|
48
|
+
dataType: {
|
|
49
|
+
type: "varchar";
|
|
50
|
+
length: number;
|
|
51
|
+
};
|
|
52
|
+
}>;
|
|
53
|
+
}> & import(".").InferDeepRelations<import(".").RelationBuilderRecord>, TableBuilder<{
|
|
54
|
+
code: ColumnBuilder<string, {
|
|
55
|
+
type: "string";
|
|
56
|
+
dataType: {
|
|
57
|
+
type: "varchar";
|
|
58
|
+
length: number;
|
|
59
|
+
};
|
|
60
|
+
}>;
|
|
61
|
+
}, import(".").RelationBuilderRecord>>;
|
|
62
|
+
constructor(_executor: DbContextExecutor, _opt: {
|
|
63
|
+
database: string;
|
|
64
|
+
schema?: string;
|
|
65
|
+
});
|
|
66
|
+
get database(): string | undefined;
|
|
67
|
+
get schema(): string | undefined;
|
|
68
|
+
getNextAlias(): string;
|
|
69
|
+
resetAliasCounter(): void;
|
|
70
|
+
executeDefs<T = DataRecord>(defs: QueryDef[], resultMetas?: (ResultMeta | undefined)[]): Promise<T[][]>;
|
|
71
|
+
getQueryDefObjectName(tableOrView: TableBuilder<any, any> | ViewBuilder<any, any, any>): QueryDefObjectName;
|
|
72
|
+
switchFk(table: QueryDefObjectName, enabled: boolean): Promise<void>;
|
|
73
|
+
protected queryable<T extends TableBuilder<any, any> | ViewBuilder<any, any, any>>(builder: T): () => Queryable<T["$inferSelect"], T extends TableBuilder<any, any> ? T : never>;
|
|
74
|
+
protected executable<T extends ProcedureBuilder<any, any>>(builder: T): () => Executable<T["$params"], T["$returns"]>;
|
|
75
|
+
connect<TResult>(fn: () => Promise<TResult>, isolationLevel?: IsolationLevel): Promise<TResult>;
|
|
76
|
+
connectWithoutTransaction<TResult>(callback: () => Promise<TResult>): Promise<TResult>;
|
|
77
|
+
transaction<TResult>(fn: () => Promise<TResult>, isolationLevel?: IsolationLevel): Promise<TResult>;
|
|
78
|
+
createTable(table: TableBuilder<any, any>): Promise<void>;
|
|
79
|
+
dropTable(table: QueryDefObjectName): Promise<void>;
|
|
80
|
+
renameTable(table: QueryDefObjectName, newName: string): Promise<void>;
|
|
81
|
+
createView(view: ViewBuilder<any, any, any>): Promise<void>;
|
|
82
|
+
dropView(view: QueryDefObjectName): Promise<void>;
|
|
83
|
+
createProc(procedure: ProcedureBuilder<any, any>): Promise<void>;
|
|
84
|
+
dropProc(procedure: QueryDefObjectName): Promise<void>;
|
|
85
|
+
addColumn(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): Promise<void>;
|
|
86
|
+
dropColumn(table: QueryDefObjectName, column: string): Promise<void>;
|
|
87
|
+
modifyColumn(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): Promise<void>;
|
|
88
|
+
renameColumn(table: QueryDefObjectName, column: string, newName: string): Promise<void>;
|
|
89
|
+
addPrimaryKey(table: QueryDefObjectName, columns: string[]): Promise<void>;
|
|
90
|
+
dropPrimaryKey(table: QueryDefObjectName): Promise<void>;
|
|
91
|
+
addForeignKey(table: QueryDefObjectName, relationName: string, relationDef: ForeignKeyBuilder<any, any>): Promise<void>;
|
|
92
|
+
addIndex(table: QueryDefObjectName, indexBuilder: IndexBuilder<string[]>): Promise<void>;
|
|
93
|
+
dropForeignKey(table: QueryDefObjectName, relationName: string): Promise<void>;
|
|
94
|
+
dropIndex(table: QueryDefObjectName, columns: string[]): Promise<void>;
|
|
95
|
+
clearSchema(params: {
|
|
96
|
+
database: string;
|
|
97
|
+
schema?: string;
|
|
98
|
+
}): Promise<void>;
|
|
99
|
+
schemaExists(database: string, schema?: string): Promise<boolean>;
|
|
100
|
+
truncate(table: QueryDefObjectName): Promise<void>;
|
|
101
|
+
getCreateTableQueryDef(table: TableBuilder<any, any>): QueryDef;
|
|
102
|
+
getCreateViewQueryDef(view: ViewBuilder<any, any, any>): QueryDef;
|
|
103
|
+
getCreateProcQueryDef(procedure: ProcedureBuilder<any, any>): QueryDef;
|
|
104
|
+
getCreateObjectQueryDef(builder: TableBuilder<any, any> | ViewBuilder<any, any, any> | ProcedureBuilder<any, any>): QueryDef;
|
|
105
|
+
getDropTableQueryDef(table: QueryDefObjectName): QueryDef;
|
|
106
|
+
getRenameTableQueryDef(table: QueryDefObjectName, newName: string): QueryDef;
|
|
107
|
+
getDropViewQueryDef(view: QueryDefObjectName): QueryDef;
|
|
108
|
+
getDropProcQueryDef(procedure: QueryDefObjectName): QueryDef;
|
|
109
|
+
getAddColumnQueryDef(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): QueryDef;
|
|
110
|
+
getDropColumnQueryDef(table: QueryDefObjectName, column: string): QueryDef;
|
|
111
|
+
getModifyColumnQueryDef(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): QueryDef;
|
|
112
|
+
getRenameColumnQueryDef(table: QueryDefObjectName, column: string, newName: string): QueryDef;
|
|
113
|
+
getAddPrimaryKeyQueryDef(table: QueryDefObjectName, columns: string[]): QueryDef;
|
|
114
|
+
getDropPrimaryKeyQueryDef(table: QueryDefObjectName): QueryDef;
|
|
115
|
+
getAddForeignKeyQueryDef(table: QueryDefObjectName, relationName: string, relationDef: ForeignKeyBuilder<any, any>): QueryDef;
|
|
116
|
+
getAddIndexQueryDef(table: QueryDefObjectName, indexBuilder: IndexBuilder<string[]>): QueryDef;
|
|
117
|
+
getDropForeignKeyQueryDef(table: QueryDefObjectName, relationName: string): QueryDef;
|
|
118
|
+
getDropIndexQueryDef(table: QueryDefObjectName, columns: string[]): QueryDef;
|
|
119
|
+
getClearSchemaQueryDef(params: {
|
|
120
|
+
database: string;
|
|
121
|
+
schema?: string;
|
|
122
|
+
}): QueryDef;
|
|
123
|
+
getSchemaExistsQueryDef(database: string, schema?: string): QueryDef;
|
|
124
|
+
getTruncateQueryDef(table: QueryDefObjectName): QueryDef;
|
|
125
|
+
getSwitchFkQueryDef(table: QueryDefObjectName, enabled: boolean): QueryDef;
|
|
126
|
+
initialize(options?: {
|
|
127
|
+
dbs?: string[];
|
|
128
|
+
force?: boolean;
|
|
129
|
+
}): Promise<void>;
|
|
130
|
+
/** 마이그레이션 정의 — 서브클래스에서 오버라이드 */
|
|
131
|
+
migrations: Migration[];
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=db-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-context.d.ts","sourceRoot":"","sources":["../src/db-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { DDL_TYPES } from "./types/query-def.js";
|
|
2
|
+
const DDL_TYPE_SET = new Set(DDL_TYPES);
|
|
3
|
+
import { DbErrorCode, DbTransactionError } from "./errors/db-transaction-error.js";
|
|
4
|
+
import { TableBuilder } from "./schema/table-builder.js";
|
|
5
|
+
import { ViewBuilder } from "./schema/view-builder.js";
|
|
6
|
+
import { queryable as createQueryable } from "./exec/queryable.js";
|
|
7
|
+
import { executable as createExecutable } from "./exec/executable.js";
|
|
8
|
+
// DDL import
|
|
9
|
+
import * as tableDdl from "./ddl/table-ddl.js";
|
|
10
|
+
import { getQueryDefObjectName as getQueryDefObjectNameImpl } from "./ddl/table-ddl.js";
|
|
11
|
+
import * as columnDdl from "./ddl/column-ddl.js";
|
|
12
|
+
import * as relationDdl from "./ddl/relation-ddl.js";
|
|
13
|
+
import * as schemaDdl from "./ddl/schema-ddl.js";
|
|
14
|
+
import { initialize as initializeImpl, validateRelations as validateRelationsImpl, } from "./ddl/initialize.js";
|
|
15
|
+
import { _Migration } from "./models/system-migration.js";
|
|
16
|
+
export const SD_BUILDER = Symbol("sdBuilder");
|
|
17
|
+
/**
|
|
18
|
+
* DbContext base class
|
|
19
|
+
*
|
|
20
|
+
* 테이블/뷰/프로시저를 class 프로퍼티로 등록하고,
|
|
21
|
+
* 연결/트랜잭션/DDL/초기화를 제공한다.
|
|
22
|
+
*
|
|
23
|
+
* defineDbContext/createDbContext의 class 기반 대체.
|
|
24
|
+
* 각 프로퍼티가 독립 직렬화되어 40+ 테이블에서도 TS7056이 발생하지 않는다.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* class MainDb extends DbContext {
|
|
29
|
+
* user = this.queryable(User);
|
|
30
|
+
* post = this.queryable(Post);
|
|
31
|
+
* activeUsers = this.queryable(ActiveUsers);
|
|
32
|
+
* getUserById = this.executable(GetUserById);
|
|
33
|
+
*
|
|
34
|
+
* migrations = [{ name: "001", up: async (db) => { ... } }];
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* const db = new MainDb(executor, { database: "mydb" });
|
|
38
|
+
* await db.connect(async () => {
|
|
39
|
+
* const users = await db.user().execute();
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export class DbContext {
|
|
44
|
+
_executor;
|
|
45
|
+
_opt;
|
|
46
|
+
// ── 상태 ──
|
|
47
|
+
status = "ready";
|
|
48
|
+
_aliasCounter = 0;
|
|
49
|
+
_relationsValidated = false;
|
|
50
|
+
// ── 시스템 테이블 ──
|
|
51
|
+
_migration = this.queryable(_Migration);
|
|
52
|
+
constructor(_executor, _opt) {
|
|
53
|
+
this._executor = _executor;
|
|
54
|
+
this._opt = _opt;
|
|
55
|
+
}
|
|
56
|
+
// ── DbContextBase 구현 ──
|
|
57
|
+
get database() {
|
|
58
|
+
return this._opt.database;
|
|
59
|
+
}
|
|
60
|
+
get schema() {
|
|
61
|
+
return this._opt.schema;
|
|
62
|
+
}
|
|
63
|
+
getNextAlias() {
|
|
64
|
+
return `T${++this._aliasCounter}`;
|
|
65
|
+
}
|
|
66
|
+
resetAliasCounter() {
|
|
67
|
+
this._aliasCounter = 0;
|
|
68
|
+
}
|
|
69
|
+
executeDefs(defs, resultMetas) {
|
|
70
|
+
if (this.status === "transact" && defs.some((d) => DDL_TYPE_SET.has(d.type))) {
|
|
71
|
+
throw new Error("TRANSACTION 상태에서는 DDL을 실행할 수 없습니다.");
|
|
72
|
+
}
|
|
73
|
+
return this._executor.executeDefs(defs, resultMetas);
|
|
74
|
+
}
|
|
75
|
+
getQueryDefObjectName(tableOrView) {
|
|
76
|
+
return getQueryDefObjectNameImpl(this, tableOrView);
|
|
77
|
+
}
|
|
78
|
+
async switchFk(table, enabled) {
|
|
79
|
+
await this.executeDefs([schemaDdl.getSwitchFkQueryDef(table, enabled)]);
|
|
80
|
+
}
|
|
81
|
+
// ── 등록 메서드 ──
|
|
82
|
+
queryable(builder) {
|
|
83
|
+
const fn = createQueryable(this, builder);
|
|
84
|
+
Object.defineProperty(fn, SD_BUILDER, { value: builder });
|
|
85
|
+
return fn;
|
|
86
|
+
}
|
|
87
|
+
executable(builder) {
|
|
88
|
+
const fn = createExecutable(this, builder);
|
|
89
|
+
Object.defineProperty(fn, SD_BUILDER, { value: builder });
|
|
90
|
+
return fn;
|
|
91
|
+
}
|
|
92
|
+
// ── 연결 관리 ──
|
|
93
|
+
async connect(fn, isolationLevel) {
|
|
94
|
+
if (this.status !== "ready") {
|
|
95
|
+
throw new Error(`이미 ${this.status === "connect" ? "CONNECT" : "TRANSACTION"} 상태입니다.`);
|
|
96
|
+
}
|
|
97
|
+
if (!this._relationsValidated) {
|
|
98
|
+
validateRelationsImpl(this);
|
|
99
|
+
this._relationsValidated = true;
|
|
100
|
+
}
|
|
101
|
+
this.resetAliasCounter();
|
|
102
|
+
await this._executor.connect();
|
|
103
|
+
this.status = "connect";
|
|
104
|
+
try {
|
|
105
|
+
await this._executor.beginTransaction(isolationLevel);
|
|
106
|
+
this.status = "transact";
|
|
107
|
+
let result;
|
|
108
|
+
try {
|
|
109
|
+
result = await fn();
|
|
110
|
+
await this._executor.commitTransaction();
|
|
111
|
+
this.status = "connect";
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
try {
|
|
115
|
+
await this._executor.rollbackTransaction();
|
|
116
|
+
}
|
|
117
|
+
catch (err1) {
|
|
118
|
+
if (!(err1 instanceof DbTransactionError) ||
|
|
119
|
+
err1.code !== DbErrorCode.NO_ACTIVE_TRANSACTION) {
|
|
120
|
+
err.cause = err1;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
this.status = "connect";
|
|
124
|
+
throw err;
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
try {
|
|
130
|
+
await this._executor.close();
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
this.status = "ready";
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async connectWithoutTransaction(callback) {
|
|
138
|
+
if (this.status !== "ready") {
|
|
139
|
+
throw new Error(`이미 ${this.status === "connect" ? "CONNECT" : "TRANSACTION"} 상태입니다.`);
|
|
140
|
+
}
|
|
141
|
+
if (!this._relationsValidated) {
|
|
142
|
+
validateRelationsImpl(this);
|
|
143
|
+
this._relationsValidated = true;
|
|
144
|
+
}
|
|
145
|
+
this.resetAliasCounter();
|
|
146
|
+
await this._executor.connect();
|
|
147
|
+
this.status = "connect";
|
|
148
|
+
try {
|
|
149
|
+
return await callback();
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
try {
|
|
153
|
+
await this._executor.close();
|
|
154
|
+
}
|
|
155
|
+
finally {
|
|
156
|
+
this.status = "ready";
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async transaction(fn, isolationLevel) {
|
|
161
|
+
if (this.status === "transact") {
|
|
162
|
+
throw new Error("이미 TRANSACTION 상태입니다.");
|
|
163
|
+
}
|
|
164
|
+
await this._executor.beginTransaction(isolationLevel);
|
|
165
|
+
this.status = "transact";
|
|
166
|
+
let result;
|
|
167
|
+
try {
|
|
168
|
+
result = await fn();
|
|
169
|
+
await this._executor.commitTransaction();
|
|
170
|
+
this.status = "connect";
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
try {
|
|
174
|
+
await this._executor.rollbackTransaction();
|
|
175
|
+
}
|
|
176
|
+
catch (err1) {
|
|
177
|
+
if (!(err1 instanceof DbTransactionError) ||
|
|
178
|
+
err1.code !== DbErrorCode.NO_ACTIVE_TRANSACTION) {
|
|
179
|
+
err.cause = err1;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
this.status = "connect";
|
|
183
|
+
throw err;
|
|
184
|
+
}
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
// ── DDL 실행 메서드 ──
|
|
188
|
+
async createTable(table) {
|
|
189
|
+
await this.executeDefs([tableDdl.getCreateTableQueryDef(this, table)]);
|
|
190
|
+
}
|
|
191
|
+
async dropTable(table) {
|
|
192
|
+
await this.executeDefs([tableDdl.getDropTableQueryDef(table)]);
|
|
193
|
+
}
|
|
194
|
+
async renameTable(table, newName) {
|
|
195
|
+
await this.executeDefs([tableDdl.getRenameTableQueryDef(table, newName)]);
|
|
196
|
+
}
|
|
197
|
+
async createView(view) {
|
|
198
|
+
await this.executeDefs([tableDdl.getCreateViewQueryDef(this, view)]);
|
|
199
|
+
}
|
|
200
|
+
async dropView(view) {
|
|
201
|
+
await this.executeDefs([tableDdl.getDropViewQueryDef(view)]);
|
|
202
|
+
}
|
|
203
|
+
async createProc(procedure) {
|
|
204
|
+
await this.executeDefs([tableDdl.getCreateProcQueryDef(this, procedure)]);
|
|
205
|
+
}
|
|
206
|
+
async dropProc(procedure) {
|
|
207
|
+
await this.executeDefs([tableDdl.getDropProcQueryDef(procedure)]);
|
|
208
|
+
}
|
|
209
|
+
async addColumn(table, columnName, column) {
|
|
210
|
+
await this.executeDefs([columnDdl.getAddColumnQueryDef(table, columnName, column)]);
|
|
211
|
+
}
|
|
212
|
+
async dropColumn(table, column) {
|
|
213
|
+
await this.executeDefs([columnDdl.getDropColumnQueryDef(table, column)]);
|
|
214
|
+
}
|
|
215
|
+
async modifyColumn(table, columnName, column) {
|
|
216
|
+
await this.executeDefs([columnDdl.getModifyColumnQueryDef(table, columnName, column)]);
|
|
217
|
+
}
|
|
218
|
+
async renameColumn(table, column, newName) {
|
|
219
|
+
await this.executeDefs([columnDdl.getRenameColumnQueryDef(table, column, newName)]);
|
|
220
|
+
}
|
|
221
|
+
async addPrimaryKey(table, columns) {
|
|
222
|
+
await this.executeDefs([relationDdl.getAddPrimaryKeyQueryDef(table, columns)]);
|
|
223
|
+
}
|
|
224
|
+
async dropPrimaryKey(table) {
|
|
225
|
+
await this.executeDefs([relationDdl.getDropPrimaryKeyQueryDef(table)]);
|
|
226
|
+
}
|
|
227
|
+
async addForeignKey(table, relationName, relationDef) {
|
|
228
|
+
await this.executeDefs([
|
|
229
|
+
relationDdl.getAddForeignKeyQueryDef(this, table, relationName, relationDef),
|
|
230
|
+
]);
|
|
231
|
+
}
|
|
232
|
+
async addIndex(table, indexBuilder) {
|
|
233
|
+
await this.executeDefs([relationDdl.getAddIndexQueryDef(table, indexBuilder)]);
|
|
234
|
+
}
|
|
235
|
+
async dropForeignKey(table, relationName) {
|
|
236
|
+
await this.executeDefs([relationDdl.getDropForeignKeyQueryDef(table, relationName)]);
|
|
237
|
+
}
|
|
238
|
+
async dropIndex(table, columns) {
|
|
239
|
+
await this.executeDefs([relationDdl.getDropIndexQueryDef(table, columns)]);
|
|
240
|
+
}
|
|
241
|
+
async clearSchema(params) {
|
|
242
|
+
await this.executeDefs([schemaDdl.getClearSchemaQueryDef(params)]);
|
|
243
|
+
}
|
|
244
|
+
async schemaExists(database, schema) {
|
|
245
|
+
const result = await this.executeDefs([schemaDdl.getSchemaExistsQueryDef(database, schema)]);
|
|
246
|
+
return result[0].length > 0;
|
|
247
|
+
}
|
|
248
|
+
async truncate(table) {
|
|
249
|
+
await this.executeDefs([schemaDdl.getTruncateQueryDef(table)]);
|
|
250
|
+
}
|
|
251
|
+
// ── DDL QueryDef 생성기 ──
|
|
252
|
+
getCreateTableQueryDef(table) {
|
|
253
|
+
return tableDdl.getCreateTableQueryDef(this, table);
|
|
254
|
+
}
|
|
255
|
+
getCreateViewQueryDef(view) {
|
|
256
|
+
return tableDdl.getCreateViewQueryDef(this, view);
|
|
257
|
+
}
|
|
258
|
+
getCreateProcQueryDef(procedure) {
|
|
259
|
+
return tableDdl.getCreateProcQueryDef(this, procedure);
|
|
260
|
+
}
|
|
261
|
+
getCreateObjectQueryDef(builder) {
|
|
262
|
+
return tableDdl.getCreateObjectQueryDef(this, builder);
|
|
263
|
+
}
|
|
264
|
+
getDropTableQueryDef(table) {
|
|
265
|
+
return tableDdl.getDropTableQueryDef(table);
|
|
266
|
+
}
|
|
267
|
+
getRenameTableQueryDef(table, newName) {
|
|
268
|
+
return tableDdl.getRenameTableQueryDef(table, newName);
|
|
269
|
+
}
|
|
270
|
+
getDropViewQueryDef(view) {
|
|
271
|
+
return tableDdl.getDropViewQueryDef(view);
|
|
272
|
+
}
|
|
273
|
+
getDropProcQueryDef(procedure) {
|
|
274
|
+
return tableDdl.getDropProcQueryDef(procedure);
|
|
275
|
+
}
|
|
276
|
+
getAddColumnQueryDef(table, columnName, column) {
|
|
277
|
+
return columnDdl.getAddColumnQueryDef(table, columnName, column);
|
|
278
|
+
}
|
|
279
|
+
getDropColumnQueryDef(table, column) {
|
|
280
|
+
return columnDdl.getDropColumnQueryDef(table, column);
|
|
281
|
+
}
|
|
282
|
+
getModifyColumnQueryDef(table, columnName, column) {
|
|
283
|
+
return columnDdl.getModifyColumnQueryDef(table, columnName, column);
|
|
284
|
+
}
|
|
285
|
+
getRenameColumnQueryDef(table, column, newName) {
|
|
286
|
+
return columnDdl.getRenameColumnQueryDef(table, column, newName);
|
|
287
|
+
}
|
|
288
|
+
getAddPrimaryKeyQueryDef(table, columns) {
|
|
289
|
+
return relationDdl.getAddPrimaryKeyQueryDef(table, columns);
|
|
290
|
+
}
|
|
291
|
+
getDropPrimaryKeyQueryDef(table) {
|
|
292
|
+
return relationDdl.getDropPrimaryKeyQueryDef(table);
|
|
293
|
+
}
|
|
294
|
+
getAddForeignKeyQueryDef(table, relationName, relationDef) {
|
|
295
|
+
return relationDdl.getAddForeignKeyQueryDef(this, table, relationName, relationDef);
|
|
296
|
+
}
|
|
297
|
+
getAddIndexQueryDef(table, indexBuilder) {
|
|
298
|
+
return relationDdl.getAddIndexQueryDef(table, indexBuilder);
|
|
299
|
+
}
|
|
300
|
+
getDropForeignKeyQueryDef(table, relationName) {
|
|
301
|
+
return relationDdl.getDropForeignKeyQueryDef(table, relationName);
|
|
302
|
+
}
|
|
303
|
+
getDropIndexQueryDef(table, columns) {
|
|
304
|
+
return relationDdl.getDropIndexQueryDef(table, columns);
|
|
305
|
+
}
|
|
306
|
+
getClearSchemaQueryDef(params) {
|
|
307
|
+
return schemaDdl.getClearSchemaQueryDef(params);
|
|
308
|
+
}
|
|
309
|
+
getSchemaExistsQueryDef(database, schema) {
|
|
310
|
+
return schemaDdl.getSchemaExistsQueryDef(database, schema);
|
|
311
|
+
}
|
|
312
|
+
getTruncateQueryDef(table) {
|
|
313
|
+
return schemaDdl.getTruncateQueryDef(table);
|
|
314
|
+
}
|
|
315
|
+
getSwitchFkQueryDef(table, enabled) {
|
|
316
|
+
return schemaDdl.getSwitchFkQueryDef(table, enabled);
|
|
317
|
+
}
|
|
318
|
+
// ── 초기화 ──
|
|
319
|
+
async initialize(options) {
|
|
320
|
+
await initializeImpl(this, options);
|
|
321
|
+
}
|
|
322
|
+
/** 마이그레이션 정의 — 서브클래스에서 오버라이드 */
|
|
323
|
+
migrations = [];
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=db-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-context.js","sourceRoot":"","sources":["../src/db-context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,aAAa;AACb,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,IAAI,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,UAAU,IAAI,cAAc,EAC5B,iBAAiB,IAAI,qBAAqB,GAC3C,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAgB,SAAS;IAUV;IACA;IAVnB,WAAW;IACX,MAAM,GAAoB,OAAO,CAAC;IAC1B,aAAa,GAAG,CAAC,CAAC;IAClB,mBAAmB,GAAG,KAAK,CAAC;IAEpC,gBAAgB;IAChB,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAExC,YACmB,SAA4B,EAC5B,IAA2C;QAD3C,cAAS,GAAT,SAAS,CAAmB;QAC5B,SAAI,GAAJ,IAAI,CAAuC;IAC3D,CAAC;IAEJ,yBAAyB;IAEzB,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,WAAW,CACT,IAAgB,EAChB,WAAwC;QAExC,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC7E,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,qBAAqB,CACnB,WAAgE;QAEhE,OAAO,yBAAyB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAyB,EAAE,OAAgB;QACxD,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,eAAe;IAEL,SAAS,CACjB,OAAU;QAEV,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,UAAU,CAClB,OAAU;QAEV,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,cAAc;IAEd,KAAK,CAAC,OAAO,CACX,EAA0B,EAC1B,cAA+B;QAE/B,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,MAAM,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,SAAS,CACrE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAExB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YAEzB,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;gBAEpB,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;gBACzC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;gBAC7C,CAAC;gBAAC,OAAO,IAAI,EAAE,CAAC;oBACd,IACE,CAAC,CAAC,IAAI,YAAY,kBAAkB,CAAC;wBACrC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,qBAAqB,EAC/C,CAAC;wBACA,GAAa,CAAC,KAAK,GAAG,IAAI,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxB,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC/B,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAU,QAAgC;QACvE,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,MAAM,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,SAAS,CACrE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAExB,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,EAAE,CAAC;QAC1B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC/B,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,EAA0B,EAC1B,cAA+B;QAE/B,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAEzB,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAEpB,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;YAC7C,CAAC;YAAC,OAAO,IAAI,EAAE,CAAC;gBACd,IACE,CAAC,CAAC,IAAI,YAAY,kBAAkB,CAAC;oBACrC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,qBAAqB,EAC/C,CAAC;oBACA,GAAa,CAAC,KAAK,GAAG,IAAI,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mBAAmB;IAEnB,KAAK,CAAC,WAAW,CAAC,KAA6B;QAC7C,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAyB;QACvC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAyB,EAAE,OAAe;QAC1D,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAgC;QAC/C,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAwB;QACrC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAqC;QACpD,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAA6B;QAC1C,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,SAAS,CACb,KAAyB,EACzB,UAAkB,EAClB,MAA+B;QAE/B,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAyB,EAAE,MAAc;QACxD,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAAyB,EACzB,UAAkB,EAClB,MAA+B;QAE/B,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAyB,EAAE,MAAc,EAAE,OAAe;QAC3E,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAyB,EAAE,OAAiB;QAC9D,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAyB;QAC5C,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAAyB,EACzB,YAAoB,EACpB,WAAwC;QAExC,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,WAAW,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC;SAC7E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAyB,EAAE,YAAoC;QAC5E,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAyB,EAAE,YAAoB;QAClE,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAyB,EAAE,OAAiB;QAC1D,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAA6C;QAC7D,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,MAAe;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7F,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAyB;QACtC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,yBAAyB;IAEzB,sBAAsB,CAAC,KAA6B;QAClD,OAAO,QAAQ,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,qBAAqB,CAAC,IAAgC;QACpD,OAAO,QAAQ,CAAC,qBAAqB,CAAC,IAAW,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,qBAAqB,CAAC,SAAqC;QACzD,OAAO,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,uBAAuB,CACrB,OAAyF;QAEzF,OAAO,QAAQ,CAAC,uBAAuB,CAAC,IAAW,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,oBAAoB,CAAC,KAAyB;QAC5C,OAAO,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,sBAAsB,CAAC,KAAyB,EAAE,OAAe;QAC/D,OAAO,QAAQ,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,mBAAmB,CAAC,IAAwB;QAC1C,OAAO,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,mBAAmB,CAAC,SAA6B;QAC/C,OAAO,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAED,oBAAoB,CAClB,KAAyB,EACzB,UAAkB,EAClB,MAA+B;QAE/B,OAAO,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,qBAAqB,CAAC,KAAyB,EAAE,MAAc;QAC7D,OAAO,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,uBAAuB,CACrB,KAAyB,EACzB,UAAkB,EAClB,MAA+B;QAE/B,OAAO,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,uBAAuB,CAAC,KAAyB,EAAE,MAAc,EAAE,OAAe;QAChF,OAAO,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,wBAAwB,CAAC,KAAyB,EAAE,OAAiB;QACnE,OAAO,WAAW,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,yBAAyB,CAAC,KAAyB;QACjD,OAAO,WAAW,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,wBAAwB,CACtB,KAAyB,EACzB,YAAoB,EACpB,WAAwC;QAExC,OAAO,WAAW,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACtF,CAAC;IAED,mBAAmB,CAAC,KAAyB,EAAE,YAAoC;QACjF,OAAO,WAAW,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,yBAAyB,CAAC,KAAyB,EAAE,YAAoB;QACvE,OAAO,WAAW,CAAC,yBAAyB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACpE,CAAC;IAED,oBAAoB,CAAC,KAAyB,EAAE,OAAiB;QAC/D,OAAO,WAAW,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,sBAAsB,CAAC,MAA6C;QAClE,OAAO,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,uBAAuB,CAAC,QAAgB,EAAE,MAAe;QACvD,OAAO,SAAS,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,mBAAmB,CAAC,KAAyB;QAC3C,OAAO,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,mBAAmB,CAAC,KAAyB,EAAE,OAAgB;QAC7D,OAAO,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,YAAY;IAEZ,KAAK,CAAC,UAAU,CAAC,OAA6C;QAC5D,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,gCAAgC;IAChC,UAAU,GAAgB,EAAE,CAAC;CAC9B"}
|
package/dist/ddl/initialize.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { DbContextBase,
|
|
1
|
+
import type { DbContextBase, DbContextDdlMethods } from "../types/db-context-def";
|
|
2
2
|
import type { Queryable } from "../exec/queryable";
|
|
3
|
+
import type { Migration } from "../types/db";
|
|
3
4
|
/**
|
|
4
5
|
* Code First 데이터베이스 초기화
|
|
5
6
|
*
|
|
@@ -24,7 +25,8 @@ export declare function initialize(db: DbContextBase & DbContextDdlMethods & {
|
|
|
24
25
|
_migration: () => Queryable<{
|
|
25
26
|
code: string;
|
|
26
27
|
}, any>;
|
|
27
|
-
|
|
28
|
+
migrations: Migration[];
|
|
29
|
+
}, options?: {
|
|
28
30
|
dbs?: string[];
|
|
29
31
|
force?: boolean;
|
|
30
32
|
}): Promise<void>;
|
|
@@ -32,5 +34,5 @@ export declare function initialize(db: DbContextBase & DbContextDdlMethods & {
|
|
|
32
34
|
* ForeignKeyTarget/RelationKeyTarget 관계 검증
|
|
33
35
|
* - targetTableFn()이 반환하는 테이블에 relationName과 일치하는 FK/RelationKey가 있는지 확인
|
|
34
36
|
*/
|
|
35
|
-
export declare function validateRelations(
|
|
37
|
+
export declare function validateRelations(dbContext: object): void;
|
|
36
38
|
//# sourceMappingURL=initialize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../src/ddl/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../src/ddl/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAe7C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,aAAa,GACf,mBAAmB,GAAG;IACpB,UAAU,EAAE,MAAM,SAAS,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,CAAC,CAAC;IACnD,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB,EACH,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAqEf;AAqFD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CA4BzD"}
|