@technicity/data-service-generator 0.21.0 → 0.22.0

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
@@ -49,6 +49,8 @@ async function main() {
49
49
 
50
50
  - `yarn test`
51
51
 
52
+ Might need to run `docker pull --platform linux/amd64 mysql:5.7.41` ahead of time.
53
+
52
54
  #### Unit Tests
53
55
 
54
56
  Comment out `globalSetup` in `jest.config.js`, then:
@@ -296,11 +296,12 @@ async function getSDKSource(input, specialCaseUuidColumn, supplementClientOpts,
296
296
  | "REPEATABLE READ"
297
297
  | "SERIALIZABLE"
298
298
  }) {
299
- const { dbCall, commit, rollback } = await this.runtime.$startTransaction(input);
299
+ const { dbCall, queryRaw, commit, rollback } = await this.runtime.$startTransaction(input);
300
300
  const runtime = this.runtime;
301
301
  const eventTarget = this.eventTarget;
302
302
  const onHandlerMap = this.onHandlerMap;
303
303
  return {
304
+ $queryRaw: queryRaw,
304
305
  $commit: commit,
305
306
  $rollback: rollback,
306
307
  ${(await Promise.all(input.flatMap(async (x) => {
@@ -48,6 +48,7 @@ type TBeginTransactionResult = {
48
48
  dbCall: (q: string) => Promise<any>;
49
49
  commit: () => Promise<void>;
50
50
  rollback: () => Promise<void>;
51
+ queryRaw: (q: string, values: any[]) => Promise<any>;
51
52
  };
52
53
  export type ISupplementClientOpts = boolean;
53
54
  export type IOrderBy = {
@@ -19,6 +19,7 @@ export declare class RuntimeMySQL implements IRuntime {
19
19
  commit: () => Promise<void>;
20
20
  rollback: () => Promise<void>;
21
21
  dbCall: (q: string) => Promise<import("mysql2").OkPacket | import("mysql2").ResultSetHeader | import("mysql2").ResultSetHeader[] | import("mysql2").RowDataPacket[] | import("mysql2").RowDataPacket[][] | import("mysql2").OkPacket[] | [import("mysql2").RowDataPacket[], import("mysql2").ResultSetHeader]>;
22
+ queryRaw: (q: string, values: any[]) => Promise<import("mysql2").OkPacket | import("mysql2").ResultSetHeader | import("mysql2").ResultSetHeader[] | import("mysql2").RowDataPacket[] | import("mysql2").RowDataPacket[][] | import("mysql2").OkPacket[] | [import("mysql2").RowDataPacket[], import("mysql2").ResultSetHeader]>;
22
23
  }>;
23
24
  private dbCall;
24
25
  private formatQuery;
@@ -28,10 +28,14 @@ export declare class RuntimeSQLite implements IRuntime {
28
28
  dbCall: (q: string) => Promise<unknown[] | {
29
29
  insertId: number | bigint;
30
30
  }>;
31
+ queryRaw: (sql: string, values?: any[] | undefined) => Promise<unknown[] | {
32
+ insertId: number | bigint;
33
+ }>;
31
34
  }>;
32
35
  private dbCall;
33
36
  private formatQuery;
34
37
  private dbCallTransaction;
38
+ private queryRawTransaction;
35
39
  private commit;
36
40
  private rollback;
37
41
  }
@@ -92,7 +92,8 @@ class RuntimeSQLite {
92
92
  return {
93
93
  commit: this.commit.bind(this),
94
94
  rollback: this.rollback.bind(this),
95
- dbCall: this.dbCallTransaction.bind(this)
95
+ dbCall: this.dbCallTransaction.bind(this),
96
+ queryRaw: this.queryRawTransaction.bind(this)
96
97
  };
97
98
  }
98
99
  async dbCall(q) {
@@ -118,6 +119,15 @@ class RuntimeSQLite {
118
119
  throw err;
119
120
  }
120
121
  }
122
+ async queryRawTransaction(...args) {
123
+ try {
124
+ return await this.$queryRaw(...args);
125
+ }
126
+ catch (err) {
127
+ __classPrivateFieldGet(this, _RuntimeSQLite_db, "f").prepare("ROLLBACK").run();
128
+ throw err;
129
+ }
130
+ }
121
131
  async commit() {
122
132
  try {
123
133
  __classPrivateFieldGet(this, _RuntimeSQLite_db, "f").prepare("COMMIT").run();
@@ -7,6 +7,7 @@ export declare class MySQL {
7
7
  commit: () => Promise<void>;
8
8
  rollback: () => Promise<void>;
9
9
  dbCall: (q: string) => Promise<mysql.OkPacket | mysql.ResultSetHeader | mysql.ResultSetHeader[] | mysql.RowDataPacket[] | mysql.RowDataPacket[][] | mysql.OkPacket[] | [mysql.RowDataPacket[], mysql.ResultSetHeader]>;
10
+ queryRaw: (q: string, values: any[]) => Promise<mysql.OkPacket | mysql.ResultSetHeader | mysql.ResultSetHeader[] | mysql.RowDataPacket[] | mysql.RowDataPacket[][] | mysql.OkPacket[] | [mysql.RowDataPacket[], mysql.ResultSetHeader]>;
10
11
  }>;
11
12
  endPool(): Promise<void>;
12
13
  }
@@ -94,6 +94,18 @@ class MySQL {
94
94
  connection.release();
95
95
  }
96
96
  throw err;
97
+ }),
98
+ queryRaw: (q, values) => connection
99
+ .query(q, values)
100
+ .then(([rows]) => rows)
101
+ .catch(async (err) => {
102
+ try {
103
+ await connection.rollback();
104
+ }
105
+ finally {
106
+ connection.release();
107
+ }
108
+ throw err;
97
109
  })
98
110
  };
99
111
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@technicity/data-service-generator",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "main": "./dist/index.js",
5
5
  "files": [
6
6
  "dist"