@autonoma-ai/sdk-mysql2 0.1.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/dist/index.d.ts +36 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/package.json +40 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { SQLExecutor } from '@autonoma-ai/sdk';
|
|
2
|
+
|
|
3
|
+
interface MySQL2Pool {
|
|
4
|
+
query<T = unknown>(sql: string, values?: unknown[]): Promise<[T, unknown]>;
|
|
5
|
+
getConnection(): Promise<MySQL2Connection>;
|
|
6
|
+
}
|
|
7
|
+
interface MySQL2Connection {
|
|
8
|
+
query<T = unknown>(sql: string, values?: unknown[]): Promise<[T, unknown]>;
|
|
9
|
+
beginTransaction(): Promise<void>;
|
|
10
|
+
commit(): Promise<void>;
|
|
11
|
+
rollback(): Promise<void>;
|
|
12
|
+
release(): void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create a SQLExecutor from a mysql2 pool (promise-based).
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { mysql2Executor } from '@autonoma-ai/sdk-mysql2'
|
|
20
|
+
* import mysql from 'mysql2/promise'
|
|
21
|
+
*
|
|
22
|
+
* const pool = mysql.createPool({ host: 'localhost', database: 'mydb', user: 'root' })
|
|
23
|
+
*
|
|
24
|
+
* const handler = createHandler({
|
|
25
|
+
* executor: mysql2Executor(pool),
|
|
26
|
+
* dialect: 'mysql',
|
|
27
|
+
* dbSchema: 'mydb',
|
|
28
|
+
* scopeField: 'organizationId',
|
|
29
|
+
* sharedSecret: process.env.AUTONOMA_SECRET!,
|
|
30
|
+
* signingSecret: process.env.AUTONOMA_SIGNING_SECRET!,
|
|
31
|
+
* })
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
declare function mysql2Executor(pool: MySQL2Pool): SQLExecutor;
|
|
35
|
+
|
|
36
|
+
export { mysql2Executor };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
function toRows(result) {
|
|
3
|
+
if (Array.isArray(result)) return result;
|
|
4
|
+
return [];
|
|
5
|
+
}
|
|
6
|
+
function mysql2Executor(pool) {
|
|
7
|
+
return {
|
|
8
|
+
async query(sql, params) {
|
|
9
|
+
const [result] = await pool.query(sql, params);
|
|
10
|
+
return toRows(result);
|
|
11
|
+
},
|
|
12
|
+
async transaction(fn) {
|
|
13
|
+
const conn = await pool.getConnection();
|
|
14
|
+
await conn.beginTransaction();
|
|
15
|
+
try {
|
|
16
|
+
const txExecutor = {
|
|
17
|
+
async query(sql, params) {
|
|
18
|
+
const [result2] = await conn.query(sql, params);
|
|
19
|
+
return toRows(result2);
|
|
20
|
+
},
|
|
21
|
+
transaction: (innerFn) => innerFn(txExecutor)
|
|
22
|
+
};
|
|
23
|
+
const result = await fn(txExecutor);
|
|
24
|
+
await conn.commit();
|
|
25
|
+
return result;
|
|
26
|
+
} catch (err) {
|
|
27
|
+
await conn.rollback();
|
|
28
|
+
throw err;
|
|
29
|
+
} finally {
|
|
30
|
+
conn.release();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
mysql2Executor
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { SQLExecutor } from '@autonoma-ai/sdk'\n\ninterface MySQL2Pool {\n query<T = unknown>(sql: string, values?: unknown[]): Promise<[T, unknown]>\n getConnection(): Promise<MySQL2Connection>\n}\n\ninterface MySQL2Connection {\n query<T = unknown>(sql: string, values?: unknown[]): Promise<[T, unknown]>\n beginTransaction(): Promise<void>\n commit(): Promise<void>\n rollback(): Promise<void>\n release(): void\n}\n\n/**\n * Safely extract rows from a mysql2 query result.\n * SELECT returns RowDataPacket[], but INSERT/UPDATE/DELETE returns ResultSetHeader.\n */\nfunction toRows<T>(result: unknown): T[] {\n if (Array.isArray(result)) return result as T[]\n return []\n}\n\n/**\n * Create a SQLExecutor from a mysql2 pool (promise-based).\n *\n * @example\n * ```ts\n * import { mysql2Executor } from '@autonoma-ai/sdk-mysql2'\n * import mysql from 'mysql2/promise'\n *\n * const pool = mysql.createPool({ host: 'localhost', database: 'mydb', user: 'root' })\n *\n * const handler = createHandler({\n * executor: mysql2Executor(pool),\n * dialect: 'mysql',\n * dbSchema: 'mydb',\n * scopeField: 'organizationId',\n * sharedSecret: process.env.AUTONOMA_SECRET!,\n * signingSecret: process.env.AUTONOMA_SIGNING_SECRET!,\n * })\n * ```\n */\nexport function mysql2Executor(pool: MySQL2Pool): SQLExecutor {\n return {\n async query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<T[]> {\n const [result] = await pool.query(sql, params)\n return toRows<T>(result)\n },\n\n async transaction<T>(fn: (tx: SQLExecutor) => Promise<T>): Promise<T> {\n const conn = await pool.getConnection()\n await conn.beginTransaction()\n try {\n const txExecutor: SQLExecutor = {\n async query<U = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<U[]> {\n const [result] = await conn.query(sql, params)\n return toRows<U>(result)\n },\n transaction: (innerFn) => innerFn(txExecutor),\n }\n const result = await fn(txExecutor)\n await conn.commit()\n return result\n } catch (err) {\n await conn.rollback()\n throw err\n } finally {\n conn.release()\n }\n },\n }\n}\n"],"mappings":";AAmBA,SAAS,OAAU,QAAsB;AACvC,MAAI,MAAM,QAAQ,MAAM,EAAG,QAAO;AAClC,SAAO,CAAC;AACV;AAsBO,SAAS,eAAe,MAA+B;AAC5D,SAAO;AAAA,IACL,MAAM,MAAmC,KAAa,QAAkC;AACtF,YAAM,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,KAAK,MAAM;AAC7C,aAAO,OAAU,MAAM;AAAA,IACzB;AAAA,IAEA,MAAM,YAAe,IAAiD;AACpE,YAAM,OAAO,MAAM,KAAK,cAAc;AACtC,YAAM,KAAK,iBAAiB;AAC5B,UAAI;AACF,cAAM,aAA0B;AAAA,UAC9B,MAAM,MAAmC,KAAa,QAAkC;AACtF,kBAAM,CAACA,OAAM,IAAI,MAAM,KAAK,MAAM,KAAK,MAAM;AAC7C,mBAAO,OAAUA,OAAM;AAAA,UACzB;AAAA,UACA,aAAa,CAAC,YAAY,QAAQ,UAAU;AAAA,QAC9C;AACA,cAAM,SAAS,MAAM,GAAG,UAAU;AAClC,cAAM,KAAK,OAAO;AAClB,eAAO;AAAA,MACT,SAAS,KAAK;AACZ,cAAM,KAAK,SAAS;AACpB,cAAM;AAAA,MACR,UAAE;AACA,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACF;","names":["result"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@autonoma-ai/sdk-mysql2",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MySQL2 adapter for Autonoma SDK",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"import": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"dist"
|
|
14
|
+
],
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@autonoma-ai/sdk": "0.1.3"
|
|
20
|
+
},
|
|
21
|
+
"peerDependencies": {
|
|
22
|
+
"mysql2": ">=3.0.0"
|
|
23
|
+
},
|
|
24
|
+
"peerDependenciesMeta": {
|
|
25
|
+
"mysql2": {
|
|
26
|
+
"optional": false
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^22.0.0",
|
|
31
|
+
"typescript": "^5.7.0",
|
|
32
|
+
"vitest": "^3.0.0",
|
|
33
|
+
"tsup": "^8.4.0"
|
|
34
|
+
},
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsup",
|
|
37
|
+
"test": "vitest run --passWithNoTests",
|
|
38
|
+
"clean": "rm -rf dist"
|
|
39
|
+
}
|
|
40
|
+
}
|