@simplysm/orm-node 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/dist/create-orm.d.ts +16 -10
- package/dist/create-orm.d.ts.map +1 -1
- package/dist/create-orm.js +11 -11
- package/dist/create-orm.js.map +1 -1
- package/package.json +3 -3
- package/src/create-orm.ts +21 -19
package/dist/create-orm.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DbContext, type DbContextExecutor, type IsolationLevel } from "@simplysm/orm-common";
|
|
2
2
|
import type { DbConnConfig } from "./types/db-conn";
|
|
3
3
|
/**
|
|
4
4
|
* ORM 옵션
|
|
@@ -20,8 +20,11 @@ export interface OrmOptions {
|
|
|
20
20
|
*
|
|
21
21
|
* createOrm에서 반환하는 객체의 타입
|
|
22
22
|
*/
|
|
23
|
-
export interface Orm<
|
|
24
|
-
readonly
|
|
23
|
+
export interface Orm<T extends DbContext> {
|
|
24
|
+
readonly DbClass: new (executor: DbContextExecutor, opt: {
|
|
25
|
+
database: string;
|
|
26
|
+
schema?: string;
|
|
27
|
+
}) => T;
|
|
25
28
|
readonly config: DbConnConfig;
|
|
26
29
|
readonly options?: OrmOptions;
|
|
27
30
|
/**
|
|
@@ -31,26 +34,26 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
|
|
|
31
34
|
* @param isolationLevel - 트랜잭션 격리 수준
|
|
32
35
|
* @returns 콜백 결과
|
|
33
36
|
*/
|
|
34
|
-
connect<R>(callback: (conn:
|
|
37
|
+
connect<R>(callback: (conn: T) => Promise<R>, isolationLevel?: IsolationLevel): Promise<R>;
|
|
35
38
|
/**
|
|
36
39
|
* 트랜잭션 없이 콜백을 실행한다
|
|
37
40
|
*
|
|
38
41
|
* @param callback - DB 연결 후 실행할 콜백
|
|
39
42
|
* @returns 콜백 결과
|
|
40
43
|
*/
|
|
41
|
-
connectWithoutTransaction<R>(callback: (conn:
|
|
44
|
+
connectWithoutTransaction<R>(callback: (conn: T) => Promise<R>): Promise<R>;
|
|
42
45
|
}
|
|
43
46
|
/**
|
|
44
47
|
* Node.js ORM 팩토리 함수
|
|
45
48
|
*
|
|
46
49
|
* DbContext와 DB 연결을 관리하는 인스턴스를 생성한다.
|
|
47
|
-
* DbContext
|
|
50
|
+
* DbContext 서브클래스와 연결 설정을 받아 트랜잭션을 관리한다.
|
|
48
51
|
*
|
|
49
52
|
* @example
|
|
50
53
|
* ```typescript
|
|
51
|
-
*
|
|
52
|
-
* user
|
|
53
|
-
* }
|
|
54
|
+
* class MyDb extends DbContext {
|
|
55
|
+
* user = this.queryable(User);
|
|
56
|
+
* }
|
|
54
57
|
*
|
|
55
58
|
* const orm = createOrm(MyDb, {
|
|
56
59
|
* dialect: "mysql",
|
|
@@ -74,5 +77,8 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
|
|
|
74
77
|
* });
|
|
75
78
|
* ```
|
|
76
79
|
*/
|
|
77
|
-
export declare function createOrm<
|
|
80
|
+
export declare function createOrm<T extends DbContext>(DbClass: new (executor: DbContextExecutor, opt: {
|
|
81
|
+
database: string;
|
|
82
|
+
schema?: string;
|
|
83
|
+
}) => T, config: DbConnConfig, options?: OrmOptions): Orm<T>;
|
|
78
84
|
//# sourceMappingURL=create-orm.d.ts.map
|
package/dist/create-orm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-orm.d.ts","sourceRoot":"","sources":["../src/create-orm.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"create-orm.d.ts","sourceRoot":"","sources":["../src/create-orm.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,SAAS;IACtC,QAAQ,CAAC,OAAO,EAAE,KAChB,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KACvC,CAAC,CAAC;IACP,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAE9B;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EACP,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EACjC,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,CAAC,CAAC,CAAC;IAEd;;;;;OAKG;IACH,yBAAyB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAC3C,OAAO,EAAE,KAAK,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,CAAC,EAC3F,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,UAAU,GACnB,GAAG,CAAC,CAAC,CAAC,CA8BR"}
|
package/dist/create-orm.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DbContext, } from "@simplysm/orm-common";
|
|
2
2
|
import { NodeDbContextExecutor } from "./node-db-context-executor.js";
|
|
3
3
|
/**
|
|
4
4
|
* Node.js ORM 팩토리 함수
|
|
5
5
|
*
|
|
6
6
|
* DbContext와 DB 연결을 관리하는 인스턴스를 생성한다.
|
|
7
|
-
* DbContext
|
|
7
|
+
* DbContext 서브클래스와 연결 설정을 받아 트랜잭션을 관리한다.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```typescript
|
|
11
|
-
*
|
|
12
|
-
* user
|
|
13
|
-
* }
|
|
11
|
+
* class MyDb extends DbContext {
|
|
12
|
+
* user = this.queryable(User);
|
|
13
|
+
* }
|
|
14
14
|
*
|
|
15
15
|
* const orm = createOrm(MyDb, {
|
|
16
16
|
* dialect: "mysql",
|
|
@@ -34,8 +34,8 @@ import { NodeDbContextExecutor } from "./node-db-context-executor.js";
|
|
|
34
34
|
* });
|
|
35
35
|
* ```
|
|
36
36
|
*/
|
|
37
|
-
export function createOrm(
|
|
38
|
-
function
|
|
37
|
+
export function createOrm(DbClass, config, options) {
|
|
38
|
+
function _createInstance() {
|
|
39
39
|
// options의 database를 우선 사용, 없으면 config에서
|
|
40
40
|
const database = options?.database ?? ("database" in config ? config.database : undefined);
|
|
41
41
|
if (database == null || database === "") {
|
|
@@ -43,21 +43,21 @@ export function createOrm(dbContextDef, config, options) {
|
|
|
43
43
|
}
|
|
44
44
|
// options의 schema를 우선 사용, 없으면 config에서
|
|
45
45
|
const schema = options?.schema ?? ("schema" in config ? config.schema : undefined);
|
|
46
|
-
return
|
|
46
|
+
return new DbClass(new NodeDbContextExecutor(config), {
|
|
47
47
|
database,
|
|
48
48
|
schema,
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
51
|
return {
|
|
52
|
-
|
|
52
|
+
DbClass,
|
|
53
53
|
config,
|
|
54
54
|
options,
|
|
55
55
|
async connect(callback, isolationLevel) {
|
|
56
|
-
const db =
|
|
56
|
+
const db = _createInstance();
|
|
57
57
|
return db.connect(async () => callback(db), isolationLevel);
|
|
58
58
|
},
|
|
59
59
|
async connectWithoutTransaction(callback) {
|
|
60
|
-
const db =
|
|
60
|
+
const db = _createInstance();
|
|
61
61
|
return db.connectWithoutTransaction(async () => callback(db));
|
|
62
62
|
},
|
|
63
63
|
};
|
package/dist/create-orm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-orm.js","sourceRoot":"","sources":["../src/create-orm.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"create-orm.js","sourceRoot":"","sources":["../src/create-orm.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAGV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAqDnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,SAAS,CACvB,OAA2F,EAC3F,MAAoB,EACpB,OAAoB;IAEpB,SAAS,eAAe;QACtB,yCAAyC;QACzC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3F,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,uCAAuC;QACvC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEnF,OAAO,IAAI,OAAO,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE;YACpD,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO;QACP,MAAM;QACN,OAAO;QACP,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAe;YACrC,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,yBAAyB,CAAC,QAAQ;YACtC,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC,yBAAyB,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/orm-node",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.17",
|
|
4
4
|
"description": "심플리즘 패키지 - ORM (node)",
|
|
5
5
|
"author": "심플리즘",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"sideEffects": false,
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"consola": "^3.4.2",
|
|
23
|
-
"@simplysm/core-common": "14.0.
|
|
24
|
-
"@simplysm/orm-common": "14.0.
|
|
23
|
+
"@simplysm/core-common": "14.0.17",
|
|
24
|
+
"@simplysm/orm-common": "14.0.17"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/pg": "^8.20.0",
|
package/src/create-orm.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
type
|
|
4
|
-
type DbContextInstance,
|
|
2
|
+
DbContext,
|
|
3
|
+
type DbContextExecutor,
|
|
5
4
|
type IsolationLevel,
|
|
6
5
|
} from "@simplysm/orm-common";
|
|
7
6
|
import type { DbConnConfig } from "./types/db-conn";
|
|
@@ -29,8 +28,11 @@ export interface OrmOptions {
|
|
|
29
28
|
*
|
|
30
29
|
* createOrm에서 반환하는 객체의 타입
|
|
31
30
|
*/
|
|
32
|
-
export interface Orm<
|
|
33
|
-
readonly
|
|
31
|
+
export interface Orm<T extends DbContext> {
|
|
32
|
+
readonly DbClass: new (
|
|
33
|
+
executor: DbContextExecutor,
|
|
34
|
+
opt: { database: string; schema?: string },
|
|
35
|
+
) => T;
|
|
34
36
|
readonly config: DbConnConfig;
|
|
35
37
|
readonly options?: OrmOptions;
|
|
36
38
|
|
|
@@ -42,7 +44,7 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
|
|
|
42
44
|
* @returns 콜백 결과
|
|
43
45
|
*/
|
|
44
46
|
connect<R>(
|
|
45
|
-
callback: (conn:
|
|
47
|
+
callback: (conn: T) => Promise<R>,
|
|
46
48
|
isolationLevel?: IsolationLevel,
|
|
47
49
|
): Promise<R>;
|
|
48
50
|
|
|
@@ -52,20 +54,20 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
|
|
|
52
54
|
* @param callback - DB 연결 후 실행할 콜백
|
|
53
55
|
* @returns 콜백 결과
|
|
54
56
|
*/
|
|
55
|
-
connectWithoutTransaction<R>(callback: (conn:
|
|
57
|
+
connectWithoutTransaction<R>(callback: (conn: T) => Promise<R>): Promise<R>;
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
/**
|
|
59
61
|
* Node.js ORM 팩토리 함수
|
|
60
62
|
*
|
|
61
63
|
* DbContext와 DB 연결을 관리하는 인스턴스를 생성한다.
|
|
62
|
-
* DbContext
|
|
64
|
+
* DbContext 서브클래스와 연결 설정을 받아 트랜잭션을 관리한다.
|
|
63
65
|
*
|
|
64
66
|
* @example
|
|
65
67
|
* ```typescript
|
|
66
|
-
*
|
|
67
|
-
* user
|
|
68
|
-
* }
|
|
68
|
+
* class MyDb extends DbContext {
|
|
69
|
+
* user = this.queryable(User);
|
|
70
|
+
* }
|
|
69
71
|
*
|
|
70
72
|
* const orm = createOrm(MyDb, {
|
|
71
73
|
* dialect: "mysql",
|
|
@@ -89,12 +91,12 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
|
|
|
89
91
|
* });
|
|
90
92
|
* ```
|
|
91
93
|
*/
|
|
92
|
-
export function createOrm<
|
|
93
|
-
|
|
94
|
+
export function createOrm<T extends DbContext>(
|
|
95
|
+
DbClass: new (executor: DbContextExecutor, opt: { database: string; schema?: string }) => T,
|
|
94
96
|
config: DbConnConfig,
|
|
95
97
|
options?: OrmOptions,
|
|
96
|
-
): Orm<
|
|
97
|
-
function
|
|
98
|
+
): Orm<T> {
|
|
99
|
+
function _createInstance(): T {
|
|
98
100
|
// options의 database를 우선 사용, 없으면 config에서
|
|
99
101
|
const database = options?.database ?? ("database" in config ? config.database : undefined);
|
|
100
102
|
if (database == null || database === "") {
|
|
@@ -104,22 +106,22 @@ export function createOrm<TDef extends DbContextDef<any, any, any>>(
|
|
|
104
106
|
// options의 schema를 우선 사용, 없으면 config에서
|
|
105
107
|
const schema = options?.schema ?? ("schema" in config ? config.schema : undefined);
|
|
106
108
|
|
|
107
|
-
return
|
|
109
|
+
return new DbClass(new NodeDbContextExecutor(config), {
|
|
108
110
|
database,
|
|
109
111
|
schema,
|
|
110
112
|
});
|
|
111
113
|
}
|
|
112
114
|
|
|
113
115
|
return {
|
|
114
|
-
|
|
116
|
+
DbClass,
|
|
115
117
|
config,
|
|
116
118
|
options,
|
|
117
119
|
async connect(callback, isolationLevel?) {
|
|
118
|
-
const db =
|
|
120
|
+
const db = _createInstance();
|
|
119
121
|
return db.connect(async () => callback(db), isolationLevel);
|
|
120
122
|
},
|
|
121
123
|
async connectWithoutTransaction(callback) {
|
|
122
|
-
const db =
|
|
124
|
+
const db = _createInstance();
|
|
123
125
|
return db.connectWithoutTransaction(async () => callback(db));
|
|
124
126
|
},
|
|
125
127
|
};
|