@an5/adapters 0.2.1 → 0.2.2
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 +263 -263
- package/dotnet/An5Adapter.cs +275 -275
- package/package.json +54 -53
- package/python/base/metadata.py +10 -10
- package/python/table_client.py +216 -216
- package/typescript/an5Adapter.d.ts +4 -2
- package/typescript/an5Adapter.js +58 -21
- package/typescript/browser.d.ts +5 -0
- package/typescript/browser.js +12 -0
- package/typescript/googlesheets/adapter.js +3 -3
- package/typescript/googlesheets/an5SheetsAdapter.d.ts +1 -1
- package/typescript/googlesheets/index.d.ts +2 -1
- package/typescript/index.d.ts +4 -2
- package/typescript/{an5Adapter.ts → src/an5Adapter.ts} +505 -474
- package/typescript/{base → src/base}/index.ts +3 -3
- package/typescript/{base → src/base}/metadata.ts +28 -28
- package/typescript/{base → src/base}/sql.ts +98 -98
- package/typescript/{base → src/base}/types.ts +24 -24
- package/typescript/src/browser.ts +6 -0
- package/typescript/{config.ts → src/config.ts} +95 -95
- package/typescript/{googlesheets → src/googlesheets}/adapter.ts +242 -241
- package/typescript/{googlesheets → src/googlesheets}/an5SheetsAdapter.ts +3 -3
- package/typescript/{googlesheets → src/googlesheets}/config.ts +44 -44
- package/typescript/{googlesheets → src/googlesheets}/helpers.ts +124 -124
- package/typescript/{googlesheets → src/googlesheets}/index.ts +3 -2
- package/typescript/{googlesheets → src/googlesheets}/parseConnectionString.ts +44 -44
- package/typescript/{googlesheets → src/googlesheets}/retry.ts +32 -32
- package/typescript/{googlesheets → src/googlesheets}/sqlExecutor.ts +301 -301
- package/typescript/{googlesheets → src/googlesheets}/tableClient.ts +435 -435
- package/typescript/{googlesheets → src/googlesheets}/types.ts +6 -6
- package/typescript/{index.ts → src/index.ts} +19 -15
- package/typescript/{mssql → src/mssql}/engine.ts +132 -132
- package/typescript/{mysql → src/mssql}/index.ts +1 -1
- package/typescript/{mysql → src/mysql}/engine.ts +80 -80
- package/typescript/{postgres → src/mysql}/index.ts +1 -1
- package/typescript/{postgres → src/postgres}/engine.ts +87 -87
- package/typescript/{sqlite → src/postgres}/index.ts +1 -1
- package/typescript/{sqlite → src/sqlite}/engine.ts +55 -55
- package/typescript/{mssql → src/sqlite}/index.ts +1 -1
package/typescript/an5Adapter.js
CHANGED
|
@@ -7,10 +7,6 @@ const googlesheets_1 = require("./googlesheets");
|
|
|
7
7
|
const parseConnectionString_1 = require("./googlesheets/parseConnectionString");
|
|
8
8
|
const sql_1 = require("./base/sql");
|
|
9
9
|
const metadata_1 = require("./base/metadata");
|
|
10
|
-
const mssql_1 = require("./mssql");
|
|
11
|
-
const postgres_1 = require("./postgres");
|
|
12
|
-
const mysql_1 = require("./mysql");
|
|
13
|
-
const sqlite_1 = require("./sqlite");
|
|
14
10
|
var metadata_2 = require("./base/metadata");
|
|
15
11
|
Object.defineProperty(exports, "setAdapterMetadata", { enumerable: true, get: function () { return metadata_2.setAdapterMetadata; } });
|
|
16
12
|
function isSheetsConfig(config) {
|
|
@@ -18,9 +14,23 @@ function isSheetsConfig(config) {
|
|
|
18
14
|
}
|
|
19
15
|
// ─── An5Adapter ────────────────────────────────────────────────────────────────────
|
|
20
16
|
class An5Adapter {
|
|
21
|
-
get dialect() {
|
|
17
|
+
get dialect() {
|
|
18
|
+
if (this.sheetsAdapter)
|
|
19
|
+
return 'googlesheets';
|
|
20
|
+
if (this._engine)
|
|
21
|
+
return this._engine.dialect;
|
|
22
|
+
if (this._engineType === 'postgres')
|
|
23
|
+
return 'postgres';
|
|
24
|
+
if (this._engineType === 'mysql')
|
|
25
|
+
return 'mysql';
|
|
26
|
+
if (this._engineType === 'sqlite')
|
|
27
|
+
return 'sqlite';
|
|
28
|
+
return 'mssql';
|
|
29
|
+
}
|
|
22
30
|
constructor(adapterConfig) {
|
|
23
|
-
this.
|
|
31
|
+
this._engine = null;
|
|
32
|
+
this._engineType = null;
|
|
33
|
+
this._engineConfig = null;
|
|
24
34
|
this.sheetsAdapter = null;
|
|
25
35
|
if (isSheetsConfig(adapterConfig)) {
|
|
26
36
|
this.sheetsAdapter = new googlesheets_1.An5SheetsAdapter(adapterConfig);
|
|
@@ -31,23 +41,48 @@ class An5Adapter {
|
|
|
31
41
|
this.sheetsAdapter = new googlesheets_1.An5SheetsAdapter((0, parseConnectionString_1.parseSheetsConnectionString)(cs));
|
|
32
42
|
return;
|
|
33
43
|
}
|
|
44
|
+
this._engineConfig = adapterConfig;
|
|
34
45
|
if (cs.startsWith('postgres://') || cs.startsWith('postgresql://')) {
|
|
35
|
-
this.
|
|
46
|
+
this._engineType = 'postgres';
|
|
36
47
|
}
|
|
37
48
|
else if (cs.startsWith('mysql://') || cs.startsWith('mariadb://')) {
|
|
38
|
-
this.
|
|
49
|
+
this._engineType = 'mysql';
|
|
39
50
|
}
|
|
40
51
|
else if (cs.startsWith('sqlite://') || cs.endsWith('.sqlite') || cs.endsWith('.db')) {
|
|
41
|
-
this.
|
|
52
|
+
this._engineType = 'sqlite';
|
|
42
53
|
}
|
|
43
54
|
else {
|
|
44
|
-
this.
|
|
55
|
+
this._engineType = 'mssql';
|
|
45
56
|
}
|
|
46
57
|
}
|
|
47
|
-
requireEngine() {
|
|
48
|
-
if (!this.
|
|
58
|
+
async requireEngine() {
|
|
59
|
+
if (!this._engine && this._engineType) {
|
|
60
|
+
switch (this._engineType) {
|
|
61
|
+
case 'postgres': {
|
|
62
|
+
const { PostgresEngine } = require('./postgres.js');
|
|
63
|
+
this._engine = new PostgresEngine(this._engineConfig);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case 'mysql': {
|
|
67
|
+
const { MysqlEngine } = require('./mysql.js');
|
|
68
|
+
this._engine = new MysqlEngine(this._engineConfig);
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case 'sqlite': {
|
|
72
|
+
const { SqliteEngine } = require('./sqlite.js');
|
|
73
|
+
this._engine = new SqliteEngine(this._engineConfig);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case 'mssql': {
|
|
77
|
+
const { MssqlEngine } = require('./mssql.js');
|
|
78
|
+
this._engine = new MssqlEngine(this._engineConfig);
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (!this._engine)
|
|
49
84
|
throw new Error('SQL engine is not available for Google Sheets adapter');
|
|
50
|
-
return this.
|
|
85
|
+
return this._engine;
|
|
51
86
|
}
|
|
52
87
|
requireSheetsAdapter() {
|
|
53
88
|
if (!this.sheetsAdapter)
|
|
@@ -57,19 +92,19 @@ class An5Adapter {
|
|
|
57
92
|
async exec(query, params) {
|
|
58
93
|
if (this.sheetsAdapter)
|
|
59
94
|
return this.sheetsAdapter.exec(query, params);
|
|
60
|
-
return this.requireEngine().exec(query, params);
|
|
95
|
+
return (await this.requireEngine()).exec(query, params);
|
|
61
96
|
}
|
|
62
97
|
/** INTERNAL: used by AdapterTableClient for DML statements needing row count */
|
|
63
98
|
async _executeRaw(query, params) {
|
|
64
|
-
return this.requireEngine().executeRaw(query, params);
|
|
99
|
+
return (await this.requireEngine()).executeRaw(query, params);
|
|
65
100
|
}
|
|
66
101
|
/** Execute a raw query with positional values → @p_0, @p_1, ... per dialect */
|
|
67
102
|
async $queryRawUnsafe(query, ...values) {
|
|
68
103
|
if (this.sheetsAdapter)
|
|
69
104
|
return this.sheetsAdapter.$queryRawUnsafe(query, ...values);
|
|
105
|
+
const engine = await this.requireEngine();
|
|
70
106
|
const params = {};
|
|
71
107
|
values.forEach((v, i) => { params[`p_${i}`] = v; });
|
|
72
|
-
// Normalise external positional placeholders → @p_N so each engine can re-transform
|
|
73
108
|
let q = query;
|
|
74
109
|
if (this.dialect === 'postgres') {
|
|
75
110
|
let idx = 0;
|
|
@@ -79,11 +114,12 @@ class An5Adapter {
|
|
|
79
114
|
let idx = 0;
|
|
80
115
|
q = q.replace(/\?/g, () => `@p_${idx++}`);
|
|
81
116
|
}
|
|
82
|
-
return
|
|
117
|
+
return engine.exec(q, params);
|
|
83
118
|
}
|
|
84
119
|
async $executeRaw(query, ...values) {
|
|
85
120
|
if (this.sheetsAdapter)
|
|
86
121
|
return this.sheetsAdapter.$executeRaw(query, ...values);
|
|
122
|
+
const engine = await this.requireEngine();
|
|
87
123
|
const params = {};
|
|
88
124
|
values.forEach((v, i) => { params[`p_${i}`] = v; });
|
|
89
125
|
let q = query;
|
|
@@ -95,7 +131,7 @@ class An5Adapter {
|
|
|
95
131
|
let idx = 0;
|
|
96
132
|
q = q.replace(/\?/g, () => `@p_${idx++}`);
|
|
97
133
|
}
|
|
98
|
-
return
|
|
134
|
+
return engine.executeRaw(q, params);
|
|
99
135
|
}
|
|
100
136
|
async $executeRawUnsafe(query, ...values) {
|
|
101
137
|
return this.$executeRaw(query, ...values);
|
|
@@ -103,19 +139,20 @@ class An5Adapter {
|
|
|
103
139
|
async $connect() {
|
|
104
140
|
if (this.sheetsAdapter)
|
|
105
141
|
return this.sheetsAdapter.$connect();
|
|
106
|
-
await this.requireEngine().connect();
|
|
142
|
+
await (await this.requireEngine()).connect();
|
|
107
143
|
}
|
|
108
144
|
async $disconnect() {
|
|
109
145
|
if (this.sheetsAdapter)
|
|
110
146
|
return this.sheetsAdapter.$disconnect();
|
|
111
|
-
await this.requireEngine().disconnect();
|
|
147
|
+
await (await this.requireEngine()).disconnect();
|
|
112
148
|
}
|
|
113
149
|
async $transaction(fn, _options) {
|
|
114
150
|
if (this.sheetsAdapter)
|
|
115
151
|
return this.sheetsAdapter.$transaction(fn, _options);
|
|
116
152
|
if (Array.isArray(fn))
|
|
117
153
|
return Promise.all(fn);
|
|
118
|
-
const
|
|
154
|
+
const engine = await this.requireEngine();
|
|
155
|
+
const handle = await engine.beginTransaction();
|
|
119
156
|
const txAdapter = new An5AdapterTx(handle, this.dialect);
|
|
120
157
|
try {
|
|
121
158
|
const result = await fn(txAdapter);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { An5SheetsAdapter, SheetsTableClient, createAn5SheetsAdapter } from './googlesheets';
|
|
2
|
+
export type { An5SheetsAdapterConfig } from './googlesheets';
|
|
3
|
+
export type { An5AdapterConfig, Dialect } from './base/types';
|
|
4
|
+
export { getFieldsForModel, getModelToTable, setAdapterMetadata } from './base/metadata';
|
|
5
|
+
export type { AdapterMetadata } from './base/metadata';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setAdapterMetadata = exports.getModelToTable = exports.getFieldsForModel = exports.createAn5SheetsAdapter = exports.SheetsTableClient = exports.An5SheetsAdapter = void 0;
|
|
4
|
+
// Browser-safe entry — no SQL engine imports
|
|
5
|
+
var googlesheets_1 = require("./googlesheets");
|
|
6
|
+
Object.defineProperty(exports, "An5SheetsAdapter", { enumerable: true, get: function () { return googlesheets_1.An5SheetsAdapter; } });
|
|
7
|
+
Object.defineProperty(exports, "SheetsTableClient", { enumerable: true, get: function () { return googlesheets_1.SheetsTableClient; } });
|
|
8
|
+
Object.defineProperty(exports, "createAn5SheetsAdapter", { enumerable: true, get: function () { return googlesheets_1.createAn5SheetsAdapter; } });
|
|
9
|
+
var metadata_1 = require("./base/metadata");
|
|
10
|
+
Object.defineProperty(exports, "getFieldsForModel", { enumerable: true, get: function () { return metadata_1.getFieldsForModel; } });
|
|
11
|
+
Object.defineProperty(exports, "getModelToTable", { enumerable: true, get: function () { return metadata_1.getModelToTable; } });
|
|
12
|
+
Object.defineProperty(exports, "setAdapterMetadata", { enumerable: true, get: function () { return metadata_1.setAdapterMetadata; } });
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.An5SheetsAdapter = void 0;
|
|
4
4
|
exports.createAn5SheetsAdapter = createAn5SheetsAdapter;
|
|
5
|
-
const googleapis_1 = require("googleapis");
|
|
6
5
|
const config_1 = require("./config");
|
|
7
6
|
const sqlExecutor_1 = require("./sqlExecutor");
|
|
8
7
|
const tableClient_1 = require("./tableClient");
|
|
@@ -85,12 +84,13 @@ class An5SheetsAdapter {
|
|
|
85
84
|
return this.fetchApi;
|
|
86
85
|
}
|
|
87
86
|
if (!this.sheets) {
|
|
88
|
-
const
|
|
87
|
+
const { google } = await import('googleapis');
|
|
88
|
+
const auth = new google.auth.JWT({
|
|
89
89
|
email: this.config.clientEmail,
|
|
90
90
|
key: this.config.privateKey,
|
|
91
91
|
scopes: ['https://www.googleapis.com/auth/spreadsheets'],
|
|
92
92
|
});
|
|
93
|
-
this.sheets =
|
|
93
|
+
this.sheets = google.sheets({ version: 'v4', auth });
|
|
94
94
|
}
|
|
95
95
|
return this.sheets;
|
|
96
96
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export { An5SheetsAdapter, SheetsTableClient, createAn5SheetsAdapter
|
|
1
|
+
export { An5SheetsAdapter, SheetsTableClient, createAn5SheetsAdapter } from './an5SheetsAdapter';
|
|
2
|
+
export type { An5SheetsAdapterConfig } from './an5SheetsAdapter';
|
|
2
3
|
export { parseSheetsConnectionString } from './parseConnectionString';
|
package/typescript/index.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export { An5Adapter, AdapterTableClient, createAn5Adapter, setAdapterMetadata,
|
|
2
|
-
export {
|
|
1
|
+
export { An5Adapter, AdapterTableClient, createAn5Adapter, setAdapterMetadata, } from './an5Adapter';
|
|
2
|
+
export type { An5AdapterConfig, AdapterMetadata, Dialect, } from './an5Adapter';
|
|
3
|
+
export { getLlmConfig, setLlmConfig, getEmbeddingConfig, setEmbeddingConfig, resetAdapter, } from './config';
|
|
4
|
+
export type { LlmConfigData, EmbeddingConfigData, } from './config';
|