@stackpress/inquire-mysql2 0.3.27 → 0.3.29

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.
@@ -1,18 +1,19 @@
1
- import type { ResultSetHeader, Connection as Database } from 'mysql2/promise';
1
+ import type { ResultSetHeader } from 'mysql2/promise';
2
2
  import type { Dialect, Connection, QueryObject, Transaction } from '@stackpress/inquire/dist/types';
3
- import type { Results } from './types';
4
- export default class Mysql2Connection implements Connection {
3
+ import type { Connector, Resource, Results } from './types';
4
+ export default class Mysql2Connection implements Connection<Resource> {
5
5
  readonly dialect: Dialect;
6
- readonly resource: Database;
7
6
  protected _lastId?: number | string;
7
+ protected _resource: Connector;
8
8
  get lastId(): string | number | undefined;
9
- constructor(resource: Database);
9
+ constructor(resource: Connector);
10
10
  format(request: QueryObject): {
11
11
  query: string;
12
12
  values: import("@stackpress/inquire/dist/types").Value[];
13
13
  };
14
14
  query<R = unknown>(request: QueryObject): Promise<R[]>;
15
15
  raw<R = unknown>(request: QueryObject): Promise<[ResultSetHeader, undefined] | Results<R>>;
16
+ resource(): Promise<import("mysql2/promise").Connection>;
16
17
  transaction<R = unknown>(callback: Transaction<R>): Promise<R>;
17
18
  protected _query<R = unknown>(request: QueryObject): Promise<Results<R> | [ResultSetHeader, undefined]>;
18
19
  }
@@ -19,7 +19,7 @@ class Mysql2Connection {
19
19
  }
20
20
  constructor(resource) {
21
21
  this.dialect = Mysql_1.default;
22
- this.resource = resource;
22
+ this._resource = resource;
23
23
  }
24
24
  format(request) {
25
25
  let { query, values = [] } = request;
@@ -52,16 +52,25 @@ class Mysql2Connection {
52
52
  return yield this._query(formatted);
53
53
  });
54
54
  }
55
+ resource() {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ if (typeof this._resource === 'function') {
58
+ this._resource = yield this._resource();
59
+ }
60
+ return this._resource;
61
+ });
62
+ }
55
63
  transaction(callback) {
56
64
  return __awaiter(this, void 0, void 0, function* () {
65
+ const resource = yield this.resource();
57
66
  try {
58
- yield this.resource.beginTransaction();
67
+ yield resource.beginTransaction();
59
68
  const results = yield callback(this);
60
- yield this.resource.commit();
69
+ yield resource.commit();
61
70
  return results;
62
71
  }
63
72
  catch (e) {
64
- yield this.resource.rollback();
73
+ yield resource.rollback();
65
74
  throw e;
66
75
  }
67
76
  });
@@ -69,7 +78,8 @@ class Mysql2Connection {
69
78
  _query(request) {
70
79
  return __awaiter(this, void 0, void 0, function* () {
71
80
  const { query, values = [] } = request;
72
- const results = yield this.resource.execute(query, values);
81
+ const resource = yield this.resource();
82
+ const results = yield resource.execute(query, values);
73
83
  if (Array.isArray(results[0])) {
74
84
  return results;
75
85
  }
package/dist/helpers.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import type { Connection as Database } from 'mysql2/promise';
2
1
  import Engine from '@stackpress/inquire/dist/Engine';
3
- export declare function connect(resource: Database): Engine;
2
+ import type { Connector } from './types';
3
+ export declare function connect(resource: Connector): Engine<import("mysql2/promise").Connection>;
package/dist/types.d.ts CHANGED
@@ -1,2 +1,4 @@
1
- import type { FieldPacket } from 'mysql2/promise';
1
+ import type { Connection, FieldPacket } from 'mysql2/promise';
2
2
  export type Results<R = unknown> = [R[], FieldPacket[]];
3
+ export type Resource = Connection;
4
+ export type Connector = Resource | (() => Promise<Resource>);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackpress/inquire-mysql2",
3
- "version": "0.3.27",
3
+ "version": "0.3.29",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Generic typed mysql2",
6
6
  "author": "Chris <chris@incept.asia>",
@@ -28,7 +28,7 @@
28
28
  "test": "ts-mocha tests/*.test.ts"
29
29
  },
30
30
  "dependencies": {
31
- "@stackpress/inquire": "0.3.27"
31
+ "@stackpress/inquire": "0.3.29"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "mysql2": "^3.11.5"