@simplysm/service-client 14.0.89 → 14.0.90
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/features/orm/orm-client-connector.d.ts.map +1 -1
- package/dist/features/orm/orm-client-connector.js +6 -3
- package/dist/features/orm/orm-client-connector.js.map +1 -1
- package/dist/features/orm/orm-connect-options.d.ts +1 -1
- package/dist/features/orm/orm-connect-options.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/features/orm/orm-client-connector.ts +72 -67
- package/src/features/orm/orm-connect-options.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orm-client-connector.d.ts","sourceRoot":"","sources":["../../../src/features/orm/orm-client-connector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"orm-client-connector.d.ts","sourceRoot":"","sources":["../../../src/features/orm/orm-client-connector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,EAC5B,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,yBAAyB,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,EAC9C,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,aAAa,GAAG,kBAAkB,CAsDzF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OrmClientDbContextExecutor } from "./orm-client-db-context-executor.js";
|
|
2
2
|
import {} from "@simplysm/orm-common";
|
|
3
|
+
import { SdError } from "@simplysm/core-common";
|
|
3
4
|
export function createOrmClientConnector(serviceClient) {
|
|
4
5
|
async function _createConfiguredDb(config) {
|
|
5
6
|
const executor = new OrmClientDbContextExecutor(serviceClient, config.connOpt);
|
|
@@ -21,9 +22,11 @@ export function createOrmClientConnector(serviceClient) {
|
|
|
21
22
|
}
|
|
22
23
|
catch (err) {
|
|
23
24
|
if (err instanceof Error &&
|
|
24
|
-
(err.message.includes("a parent row: a foreign key constraint") ||
|
|
25
|
-
err.message.includes("conflicted with the REFERENCE")
|
|
26
|
-
|
|
25
|
+
(err.message.includes("a parent row: a foreign key constraint") || // MySQL
|
|
26
|
+
err.message.includes("conflicted with the REFERENCE") || // MSSQL
|
|
27
|
+
err.message.includes("violates foreign key constraint")) // PostgreSQL
|
|
28
|
+
) {
|
|
29
|
+
throw new SdError(err, "경고! 연관된 작업으로 인해 작업이 거부되었습니다. 후속 작업을 확인해 주세요.");
|
|
27
30
|
}
|
|
28
31
|
throw err;
|
|
29
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orm-client-connector.js","sourceRoot":"","sources":["../../../src/features/orm/orm-client-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E,OAAO,EAAkB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"orm-client-connector.js","sourceRoot":"","sources":["../../../src/features/orm/orm-client-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAahD,MAAM,UAAU,wBAAwB,CAAC,aAA4B;IACnE,KAAK,UAAU,mBAAmB,CAChC,MAA4B;QAE5B,MAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QAChE,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;YAClC,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM;SACnD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,OAAO,CACpB,MAA4B,EAC5B,QAAmC;QAEnC,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC3B,IAAI,CAAC;gBACH,OAAO,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IACE,GAAG,YAAY,KAAK;oBACpB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAAC,IAAI,QAAQ;wBACzE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,QAAQ;wBACjE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC,CAAC,aAAa;kBACxE,CAAC;oBACD,MAAM,IAAI,OAAO,CACf,GAAG,EACH,8CAA8C,CAC/C,CAAC;gBACJ,CAAC;gBAED,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,yBAAyB,CACtC,MAA4B,EAC5B,QAAmC;QAEnC,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,yBAAyB,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,OAAO;QACP,yBAAyB;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orm-connect-options.d.ts","sourceRoot":"","sources":["../../../src/features/orm/orm-connect-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,SAAS;IACpD,OAAO,EAAE,KAAK,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,CAAC,CAAC;IAC5F,OAAO,EAAE,aAAa,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,YAAY,CAAC,EAAE;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"orm-connect-options.d.ts","sourceRoot":"","sources":["../../../src/features/orm/orm-connect-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,SAAS;IACpD,OAAO,EAAE,KAAK,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,CAAC,CAAC;IAC5F,OAAO,EAAE,aAAa,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,YAAY,CAAC,EAAE;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/service-client",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.90",
|
|
4
4
|
"description": "심플리즘 패키지 - 서비스 (client)",
|
|
5
5
|
"author": "심플리즘",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
],
|
|
19
19
|
"sideEffects": false,
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@simplysm/
|
|
22
|
-
"@simplysm/orm-common": "14.0.
|
|
23
|
-
"@simplysm/
|
|
21
|
+
"@simplysm/service-common": "14.0.90",
|
|
22
|
+
"@simplysm/orm-common": "14.0.90",
|
|
23
|
+
"@simplysm/core-common": "14.0.90"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/ws": "^8.18.1",
|
|
@@ -1,67 +1,72 @@
|
|
|
1
|
-
import { OrmClientDbContextExecutor } from "./orm-client-db-context-executor";
|
|
2
|
-
import type { OrmConnectOptions } from "./orm-connect-options";
|
|
3
|
-
import { type DbContext } from "@simplysm/orm-common";
|
|
4
|
-
import type { ServiceClient } from "../../service-client";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
connectWithoutTransaction
|
|
66
|
-
}
|
|
67
|
-
|
|
1
|
+
import { OrmClientDbContextExecutor } from "./orm-client-db-context-executor";
|
|
2
|
+
import type { OrmConnectOptions } from "./orm-connect-options";
|
|
3
|
+
import { type DbContext } from "@simplysm/orm-common";
|
|
4
|
+
import type { ServiceClient } from "../../service-client";
|
|
5
|
+
import { SdError } from "@simplysm/core-common";
|
|
6
|
+
|
|
7
|
+
export interface OrmClientConnector {
|
|
8
|
+
connect<T extends DbContext, R>(
|
|
9
|
+
config: OrmConnectOptions<T>,
|
|
10
|
+
callback: (db: T) => Promise<R> | R,
|
|
11
|
+
): Promise<R>;
|
|
12
|
+
connectWithoutTransaction<T extends DbContext, R>(
|
|
13
|
+
config: OrmConnectOptions<T>,
|
|
14
|
+
callback: (db: T) => Promise<R> | R,
|
|
15
|
+
): Promise<R>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function createOrmClientConnector(serviceClient: ServiceClient): OrmClientConnector {
|
|
19
|
+
async function _createConfiguredDb<T extends DbContext>(
|
|
20
|
+
config: OrmConnectOptions<T>,
|
|
21
|
+
): Promise<T> {
|
|
22
|
+
const executor = new OrmClientDbContextExecutor(serviceClient, config.connOpt);
|
|
23
|
+
const info = await executor.getInfo();
|
|
24
|
+
const database = config.dbContextOpt?.database ?? info.database;
|
|
25
|
+
if (database == null || database === "") {
|
|
26
|
+
throw new Error("database는 필수입니다.");
|
|
27
|
+
}
|
|
28
|
+
return new config.DbClass(executor, {
|
|
29
|
+
database,
|
|
30
|
+
schema: config.dbContextOpt?.schema ?? info.schema,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async function connect<T extends DbContext, R>(
|
|
35
|
+
config: OrmConnectOptions<T>,
|
|
36
|
+
callback: (db: T) => Promise<R> | R,
|
|
37
|
+
): Promise<R> {
|
|
38
|
+
const db = await _createConfiguredDb(config);
|
|
39
|
+
return db.connect(async () => {
|
|
40
|
+
try {
|
|
41
|
+
return await callback(db);
|
|
42
|
+
} catch (err) {
|
|
43
|
+
if (
|
|
44
|
+
err instanceof Error &&
|
|
45
|
+
(err.message.includes("a parent row: a foreign key constraint") || // MySQL
|
|
46
|
+
err.message.includes("conflicted with the REFERENCE") || // MSSQL
|
|
47
|
+
err.message.includes("violates foreign key constraint")) // PostgreSQL
|
|
48
|
+
) {
|
|
49
|
+
throw new SdError(
|
|
50
|
+
err,
|
|
51
|
+
"경고! 연관된 작업으로 인해 작업이 거부되었습니다. 후속 작업을 확인해 주세요.",
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async function connectWithoutTransaction<T extends DbContext, R>(
|
|
61
|
+
config: OrmConnectOptions<T>,
|
|
62
|
+
callback: (db: T) => Promise<R> | R,
|
|
63
|
+
): Promise<R> {
|
|
64
|
+
const db = await _createConfiguredDb(config);
|
|
65
|
+
return db.connectWithoutTransaction(async () => callback(db));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
connect,
|
|
70
|
+
connectWithoutTransaction,
|
|
71
|
+
};
|
|
72
|
+
}
|