@simplysm/service-client 13.0.24 → 13.0.25

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 CHANGED
@@ -269,7 +269,7 @@ const connector = createOrmClientConnector(client);
269
269
  // Connect with transaction (auto rollback on error)
270
270
  await connector.connect(
271
271
  {
272
- dbContextType: MyDbContext,
272
+ dbContextDef: MyDbContext,
273
273
  connOpt: { configName: "default" },
274
274
  dbContextOpt: { database: "mydb", schema: "dbo" }, // Optional
275
275
  },
@@ -283,7 +283,7 @@ await connector.connect(
283
283
  // Connect without transaction (suitable for read-only operations)
284
284
  await connector.connectWithoutTransaction(
285
285
  {
286
- dbContextType: MyDbContext,
286
+ dbContextDef: MyDbContext,
287
287
  connOpt: { configName: "default" },
288
288
  },
289
289
  async (db) => {
@@ -370,7 +370,7 @@ ORM remote connection configuration interface.
370
370
 
371
371
  | Property | Type | Required | Description |
372
372
  |------|------|------|------|
373
- | `dbContextType` | `Type<T>` | Yes | DbContext class |
373
+ | `dbContextDef` | `TDef` | Yes | DbContext class |
374
374
  | `connOpt` | `DbConnOptions & { configName: string }` | Yes | DB connection options. `configName` identifies the server-side DB config; `config` can pass additional connection settings |
375
375
  | `dbContextOpt` | `{ database: string; schema: string }` | No | Database/schema override |
376
376
 
@@ -2,8 +2,8 @@ import type { OrmConnectConfig } from "./orm-connect-config";
2
2
  import { type DbContextDef, type DbContextInstance } from "@simplysm/orm-common";
3
3
  import type { ServiceClient } from "../../service-client";
4
4
  export interface OrmClientConnector {
5
- connect<TDef extends DbContextDef<any, any, any>, R>(config: OrmConnectConfig<TDef>, callback: (conn: DbContextInstance<TDef>) => Promise<R> | R): Promise<R>;
6
- connectWithoutTransaction<TDef extends DbContextDef<any, any, any>, R>(config: OrmConnectConfig<TDef>, callback: (conn: DbContextInstance<TDef>) => Promise<R> | R): Promise<R>;
5
+ connect<TDef extends DbContextDef<any, any, any>, R>(config: OrmConnectConfig<TDef>, callback: (db: DbContextInstance<TDef>) => Promise<R> | R): Promise<R>;
6
+ connectWithoutTransaction<TDef extends DbContextDef<any, any, any>, R>(config: OrmConnectConfig<TDef>, callback: (db: DbContextInstance<TDef>) => Promise<R> | R): Promise<R>;
7
7
  }
8
8
  export declare function createOrmClientConnector(serviceClient: ServiceClient): OrmClientConnector;
9
9
  //# sourceMappingURL=orm-client-connector.d.ts.map
@@ -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,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAmB,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EACjD,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC1D,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,yBAAyB,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EACnE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC1D,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,aAAa,GAAG,kBAAkB,CAqDzF"}
1
+ {"version":3,"file":"orm-client-connector.d.ts","sourceRoot":"","sources":["../../../src/features/orm/orm-client-connector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAmB,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EACjD,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAC9B,QAAQ,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GACxD,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,yBAAyB,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EACnE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAC9B,QAAQ,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GACxD,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,aAAa,GAAG,kBAAkB,CAkDzF"}
@@ -1,41 +1,34 @@
1
1
  import { OrmClientDbContextExecutor } from "./orm-client-db-context-executor.js";
2
2
  import { createDbContext } from "@simplysm/orm-common";
3
3
  function createOrmClientConnector(serviceClient) {
4
- async function connect(config, callback) {
4
+ async function _createConfiguredDb(config) {
5
5
  var _a, _b;
6
6
  const executor = new OrmClientDbContextExecutor(serviceClient, config.connOpt);
7
7
  const info = await executor.getInfo();
8
8
  const database = ((_a = config.dbContextOpt) == null ? void 0 : _a.database) ?? info.database;
9
9
  if (database == null || database === "") {
10
- throw new Error("Database name is required");
10
+ throw new Error("database is required");
11
11
  }
12
- const db = createDbContext(config.dbContextDef, executor, {
12
+ return createDbContext(config.dbContextDef, executor, {
13
13
  database,
14
14
  schema: ((_b = config.dbContextOpt) == null ? void 0 : _b.schema) ?? info.schema
15
15
  });
16
+ }
17
+ async function connect(config, callback) {
18
+ const db = await _createConfiguredDb(config);
16
19
  return db.connect(async () => {
17
20
  try {
18
21
  return await callback(db);
19
22
  } catch (err) {
20
23
  if (err instanceof Error && (err.message.includes("a parent row: a foreign key constraint") || err.message.includes("conflicted with the REFERENCE"))) {
21
- err.message = "\uACBD\uACE0! \uC5F0\uACB0\uB41C \uC791\uC5C5\uC5D0 \uC758\uD55C \uCC98\uB9AC \uAC70\uBD80. \uD6C4\uC18D\uC791\uC5C5 \uD655\uC778\uC694\uB9DD";
24
+ throw new Error("\uACBD\uACE0! \uC5F0\uACB0\uB41C \uC791\uC5C5\uC5D0 \uC758\uD55C \uCC98\uB9AC \uAC70\uBD80. \uD6C4\uC18D\uC791\uC5C5 \uD655\uC778\uC694\uB9DD", { cause: err });
22
25
  }
23
26
  throw err;
24
27
  }
25
28
  });
26
29
  }
27
30
  async function connectWithoutTransaction(config, callback) {
28
- var _a, _b;
29
- const executor = new OrmClientDbContextExecutor(serviceClient, config.connOpt);
30
- const info = await executor.getInfo();
31
- const database = ((_a = config.dbContextOpt) == null ? void 0 : _a.database) ?? info.database;
32
- if (database == null || database === "") {
33
- throw new Error("Database name is required");
34
- }
35
- const db = createDbContext(config.dbContextDef, executor, {
36
- database,
37
- schema: ((_b = config.dbContextOpt) == null ? void 0 : _b.schema) ?? info.schema
38
- });
31
+ const db = await _createConfiguredDb(config);
39
32
  return db.connectWithoutTransaction(async () => callback(db));
40
33
  }
41
34
  return {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/features/orm/orm-client-connector.ts"],
4
- "mappings": "AAAA,SAAS,kCAAkC;AAE3C,SAAS,uBAAkE;AAcpE,SAAS,yBAAyB,eAAkD;AACzF,iBAAe,QACb,QACA,UACY;AApBhB;AAqBI,UAAM,WAAW,IAAI,2BAA2B,eAAe,OAAO,OAAO;AAC7E,UAAM,OAAO,MAAM,SAAS,QAAQ;AACpC,UAAM,aAAW,YAAO,iBAAP,mBAAqB,aAAY,KAAK;AACvD,QAAI,YAAY,QAAQ,aAAa,IAAI;AACvC,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC7C;AACA,UAAM,KAAK,gBAAgB,OAAO,cAAc,UAAU;AAAA,MACxD;AAAA,MACA,UAAQ,YAAO,iBAAP,mBAAqB,WAAU,KAAK;AAAA,IAC9C,CAAC;AACD,WAAO,GAAG,QAAQ,YAAY;AAC5B,UAAI;AACF,eAAO,MAAM,SAAS,EAAE;AAAA,MAC1B,SAAS,KAAK;AACZ,YACE,eAAe,UACd,IAAI,QAAQ,SAAS,wCAAwC,KAC5D,IAAI,QAAQ,SAAS,+BAA+B,IACtD;AACA,cAAI,UAAU;AAAA,QAChB;AAEA,cAAM;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AAEA,iBAAe,0BACb,QACA,UACY;AAnDhB;AAoDI,UAAM,WAAW,IAAI,2BAA2B,eAAe,OAAO,OAAO;AAC7E,UAAM,OAAO,MAAM,SAAS,QAAQ;AACpC,UAAM,aAAW,YAAO,iBAAP,mBAAqB,aAAY,KAAK;AACvD,QAAI,YAAY,QAAQ,aAAa,IAAI;AACvC,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC7C;AACA,UAAM,KAAK,gBAAgB,OAAO,cAAc,UAAU;AAAA,MACxD;AAAA,MACA,UAAQ,YAAO,iBAAP,mBAAqB,WAAU,KAAK;AAAA,IAC9C,CAAC;AACD,WAAO,GAAG,0BAA0B,YAAY,SAAS,EAAE,CAAC;AAAA,EAC9D;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA,SAAS,kCAAkC;AAE3C,SAAS,uBAAkE;AAcpE,SAAS,yBAAyB,eAAkD;AACzF,iBAAe,oBACb,QACkC;AAnBtC;AAoBI,UAAM,WAAW,IAAI,2BAA2B,eAAe,OAAO,OAAO;AAC7E,UAAM,OAAO,MAAM,SAAS,QAAQ;AACpC,UAAM,aAAW,YAAO,iBAAP,mBAAqB,aAAY,KAAK;AACvD,QAAI,YAAY,QAAQ,aAAa,IAAI;AACvC,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AACA,WAAO,gBAAgB,OAAO,cAAc,UAAU;AAAA,MACpD;AAAA,MACA,UAAQ,YAAO,iBAAP,mBAAqB,WAAU,KAAK;AAAA,IAC9C,CAAC;AAAA,EACH;AAEA,iBAAe,QACb,QACA,UACY;AACZ,UAAM,KAAK,MAAM,oBAAoB,MAAM;AAC3C,WAAO,GAAG,QAAQ,YAAY;AAC5B,UAAI;AACF,eAAO,MAAM,SAAS,EAAE;AAAA,MAC1B,SAAS,KAAK;AACZ,YACE,eAAe,UACd,IAAI,QAAQ,SAAS,wCAAwC,KAC5D,IAAI,QAAQ,SAAS,+BAA+B,IACtD;AACA,gBAAM,IAAI,MAAM,iJAAmC,EAAE,OAAO,IAAI,CAAC;AAAA,QACnE;AAEA,cAAM;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AAEA,iBAAe,0BACb,QACA,UACY;AACZ,UAAM,KAAK,MAAM,oBAAoB,MAAM;AAC3C,WAAO,GAAG,0BAA0B,YAAY,SAAS,EAAE,CAAC;AAAA,EAC9D;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/service-client",
3
- "version": "13.0.24",
3
+ "version": "13.0.25",
4
4
  "description": "심플리즘 패키지 - 서비스 모듈 (client)",
5
5
  "author": "김석래",
6
6
  "license": "Apache-2.0",
@@ -19,9 +19,9 @@
19
19
  "sideEffects": false,
20
20
  "dependencies": {
21
21
  "consola": "^3.4.2",
22
- "@simplysm/core-common": "13.0.24",
23
- "@simplysm/service-common": "13.0.24",
24
- "@simplysm/orm-common": "13.0.24"
22
+ "@simplysm/core-common": "13.0.25",
23
+ "@simplysm/orm-common": "13.0.25",
24
+ "@simplysm/service-common": "13.0.25"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/ws": "^8.18.1",
@@ -6,29 +6,35 @@ import type { ServiceClient } from "../../service-client";
6
6
  export interface OrmClientConnector {
7
7
  connect<TDef extends DbContextDef<any, any, any>, R>(
8
8
  config: OrmConnectConfig<TDef>,
9
- callback: (conn: DbContextInstance<TDef>) => Promise<R> | R,
9
+ callback: (db: DbContextInstance<TDef>) => Promise<R> | R,
10
10
  ): Promise<R>;
11
11
  connectWithoutTransaction<TDef extends DbContextDef<any, any, any>, R>(
12
12
  config: OrmConnectConfig<TDef>,
13
- callback: (conn: DbContextInstance<TDef>) => Promise<R> | R,
13
+ callback: (db: DbContextInstance<TDef>) => Promise<R> | R,
14
14
  ): Promise<R>;
15
15
  }
16
16
 
17
17
  export function createOrmClientConnector(serviceClient: ServiceClient): OrmClientConnector {
18
- async function connect<TDef extends DbContextDef<any, any, any>, R>(
18
+ async function _createConfiguredDb<TDef extends DbContextDef<any, any, any>>(
19
19
  config: OrmConnectConfig<TDef>,
20
- callback: (conn: DbContextInstance<TDef>) => Promise<R> | R,
21
- ): Promise<R> {
20
+ ): Promise<DbContextInstance<TDef>> {
22
21
  const executor = new OrmClientDbContextExecutor(serviceClient, config.connOpt);
23
22
  const info = await executor.getInfo();
24
23
  const database = config.dbContextOpt?.database ?? info.database;
25
24
  if (database == null || database === "") {
26
- throw new Error("Database name is required");
25
+ throw new Error("database is required");
27
26
  }
28
- const db = createDbContext(config.dbContextDef, executor, {
27
+ return createDbContext(config.dbContextDef, executor, {
29
28
  database,
30
29
  schema: config.dbContextOpt?.schema ?? info.schema,
31
30
  });
31
+ }
32
+
33
+ async function connect<TDef extends DbContextDef<any, any, any>, R>(
34
+ config: OrmConnectConfig<TDef>,
35
+ callback: (db: DbContextInstance<TDef>) => Promise<R> | R,
36
+ ): Promise<R> {
37
+ const db = await _createConfiguredDb(config);
32
38
  return db.connect(async () => {
33
39
  try {
34
40
  return await callback(db);
@@ -38,7 +44,7 @@ export function createOrmClientConnector(serviceClient: ServiceClient): OrmClien
38
44
  (err.message.includes("a parent row: a foreign key constraint") ||
39
45
  err.message.includes("conflicted with the REFERENCE"))
40
46
  ) {
41
- err.message = "경고! 연결된 작업에 의한 처리 거부. 후속작업 확인요망";
47
+ throw new Error("경고! 연결된 작업에 의한 처리 거부. 후속작업 확인요망", { cause: err });
42
48
  }
43
49
 
44
50
  throw err;
@@ -48,18 +54,9 @@ export function createOrmClientConnector(serviceClient: ServiceClient): OrmClien
48
54
 
49
55
  async function connectWithoutTransaction<TDef extends DbContextDef<any, any, any>, R>(
50
56
  config: OrmConnectConfig<TDef>,
51
- callback: (conn: DbContextInstance<TDef>) => Promise<R> | R,
57
+ callback: (db: DbContextInstance<TDef>) => Promise<R> | R,
52
58
  ): Promise<R> {
53
- const executor = new OrmClientDbContextExecutor(serviceClient, config.connOpt);
54
- const info = await executor.getInfo();
55
- const database = config.dbContextOpt?.database ?? info.database;
56
- if (database == null || database === "") {
57
- throw new Error("Database name is required");
58
- }
59
- const db = createDbContext(config.dbContextDef, executor, {
60
- database,
61
- schema: config.dbContextOpt?.schema ?? info.schema,
62
- });
59
+ const db = await _createConfiguredDb(config);
63
60
  return db.connectWithoutTransaction(async () => callback(db));
64
61
  }
65
62