mythik 0.1.2 → 0.1.4
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 +64 -16
- package/dist/actions/dispatcher.d.ts.map +1 -1
- package/dist/actions/dispatcher.js +21 -2
- package/dist/actions/dispatcher.js.map +1 -1
- package/dist/expressions/handlers/let.d.ts +6 -0
- package/dist/expressions/handlers/let.d.ts.map +1 -1
- package/dist/expressions/handlers/let.js +29 -4
- package/dist/expressions/handlers/let.js.map +1 -1
- package/dist/expressions/handlers/template.d.ts.map +1 -1
- package/dist/expressions/handlers/template.js +2 -1
- package/dist/expressions/handlers/template.js.map +1 -1
- package/dist/renderer/prop-schemas.js +1 -1
- package/dist/renderer/prop-schemas.js.map +1 -1
- package/dist/security/api-spec-validator.d.ts.map +1 -1
- package/dist/security/api-spec-validator.js +4 -0
- package/dist/security/api-spec-validator.js.map +1 -1
- package/dist/security/spec-validator.d.ts.map +1 -1
- package/dist/security/spec-validator.js +43 -31
- package/dist/security/spec-validator.js.map +1 -1
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -0
- package/dist/server.js.map +1 -1
- package/dist/spec-stores/sql-versioned.d.ts +38 -0
- package/dist/spec-stores/sql-versioned.d.ts.map +1 -0
- package/dist/spec-stores/sql-versioned.js +186 -0
- package/dist/spec-stores/sql-versioned.js.map +1 -0
- package/dist/spec-stores/sql.d.ts +21 -0
- package/dist/spec-stores/sql.d.ts.map +1 -0
- package/dist/spec-stores/sql.js +65 -0
- package/dist/spec-stores/sql.js.map +1 -0
- package/dist/spec-stores/sqlserver-versioned.d.ts +5 -30
- package/dist/spec-stores/sqlserver-versioned.d.ts.map +1 -1
- package/dist/spec-stores/sqlserver-versioned.js +16 -245
- package/dist/spec-stores/sqlserver-versioned.js.map +1 -1
- package/dist/spec-stores/sqlserver.d.ts +4 -11
- package/dist/spec-stores/sqlserver.d.ts.map +1 -1
- package/dist/spec-stores/sqlserver.js +16 -66
- package/dist/spec-stores/sqlserver.js.map +1 -1
- package/dist/sql/ddl.d.ts +7 -0
- package/dist/sql/ddl.d.ts.map +1 -0
- package/dist/sql/ddl.js +134 -0
- package/dist/sql/ddl.js.map +1 -0
- package/dist/sql/drivers/mysql.d.ts +25 -0
- package/dist/sql/drivers/mysql.d.ts.map +1 -0
- package/dist/sql/drivers/mysql.js +329 -0
- package/dist/sql/drivers/mysql.js.map +1 -0
- package/dist/sql/drivers/postgres.d.ts +30 -0
- package/dist/sql/drivers/postgres.d.ts.map +1 -0
- package/dist/sql/drivers/postgres.js +321 -0
- package/dist/sql/drivers/postgres.js.map +1 -0
- package/dist/sql/drivers/sqlite.d.ts +28 -0
- package/dist/sql/drivers/sqlite.d.ts.map +1 -0
- package/dist/sql/drivers/sqlite.js +369 -0
- package/dist/sql/drivers/sqlite.js.map +1 -0
- package/dist/sql/drivers/sqlserver.d.ts +46 -0
- package/dist/sql/drivers/sqlserver.d.ts.map +1 -0
- package/dist/sql/drivers/sqlserver.js +405 -0
- package/dist/sql/drivers/sqlserver.js.map +1 -0
- package/dist/sql/errors.d.ts +22 -0
- package/dist/sql/errors.d.ts.map +1 -0
- package/dist/sql/errors.js +27 -0
- package/dist/sql/errors.js.map +1 -0
- package/dist/sql/factory.d.ts +3 -0
- package/dist/sql/factory.d.ts.map +1 -0
- package/dist/sql/factory.js +24 -0
- package/dist/sql/factory.js.map +1 -0
- package/dist/sql/index.d.ts +17 -0
- package/dist/sql/index.d.ts.map +1 -0
- package/dist/sql/index.js +9 -0
- package/dist/sql/index.js.map +1 -0
- package/dist/sql/named-params.d.ts +8 -0
- package/dist/sql/named-params.d.ts.map +1 -0
- package/dist/sql/named-params.js +182 -0
- package/dist/sql/named-params.js.map +1 -0
- package/dist/sql/types.d.ts +49 -0
- package/dist/sql/types.d.ts.map +1 -0
- package/dist/sql/types.js +2 -0
- package/dist/sql/types.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/consumer/README.md +1 -1
- package/docs/consumer/WHERE-TO-LOOK.md +4 -4
- package/docs/consumer/ai-context-api.md +44 -0
- package/docs/consumer/ai-context-primitives.md +3 -0
- package/docs/consumer/ai-context-runtime-semantics.md +8 -3
- package/docs/consumer/ai-context.md +123 -39
- package/docs/consumer/reference-doc.md +30 -8
- package/docs/wiki/compiled/README.md +1 -1
- package/docs/wiki/compiled/_lint.md +13 -8
- package/docs/wiki/compiled/action-fetch.md +7 -2
- package/docs/wiki/compiled/concept-action-chains.md +62 -24
- package/docs/wiki/compiled/concept-package-layout.md +11 -9
- package/docs/wiki/compiled/concept-public-package-names.md +24 -13
- package/docs/wiki/compiled/concept-shape-animations.md +1 -1
- package/docs/wiki/compiled/concept-spec-stores-catalog.md +28 -16
- package/docs/wiki/compiled/concept-transactions.md +20 -12
- package/docs/wiki/compiled/expression-let-ref.md +36 -18
- package/docs/wiki/compiled/expression-template.md +28 -17
- package/docs/wiki/compiled/path-ui-loading-error.md +5 -0
- package/docs/wiki/compiled/pattern-fetch-vs-datasources.md +5 -0
- package/docs/wiki/compiled/pattern-loading-content-empty.md +3 -2
- package/docs/wiki/compiled/primitive-select.md +16 -2
- package/package.json +25 -2
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import { compileNamedParams as compileSqlNamedParams } from '../named-params.js';
|
|
2
|
+
import { missingSqlDriverDependencyError, SqlDriverError } from '../errors.js';
|
|
3
|
+
const MYSQL_CAPABILITIES = {
|
|
4
|
+
dialect: 'mysql',
|
|
5
|
+
namedParams: true,
|
|
6
|
+
positionalParams: true,
|
|
7
|
+
nativeJson: true,
|
|
8
|
+
nativeBoolean: false,
|
|
9
|
+
returning: false,
|
|
10
|
+
upsert: true,
|
|
11
|
+
transactions: true,
|
|
12
|
+
};
|
|
13
|
+
function isRecord(value) {
|
|
14
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
function connectionConfig(connection) {
|
|
17
|
+
return isRecord(connection) || typeof connection === 'string' ? connection : {};
|
|
18
|
+
}
|
|
19
|
+
function trimStatement(statement) {
|
|
20
|
+
return statement.trim().replace(/;\s*$/, '');
|
|
21
|
+
}
|
|
22
|
+
function hasOrderBy(statement) {
|
|
23
|
+
return /\border\s+by\b/i.test(statement);
|
|
24
|
+
}
|
|
25
|
+
function whereClause(where) {
|
|
26
|
+
const sql = trimStatement(where.sql);
|
|
27
|
+
return /^where\b/i.test(sql) ? sql : `WHERE ${sql}`;
|
|
28
|
+
}
|
|
29
|
+
function requireIdentifier(identifier) {
|
|
30
|
+
if (identifier.trim() === '') {
|
|
31
|
+
throw new SqlDriverError('MySQL identifier cannot be empty.', {
|
|
32
|
+
code: 'SQL_IDENTIFIER_INVALID',
|
|
33
|
+
dialect: 'mysql',
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return identifier;
|
|
37
|
+
}
|
|
38
|
+
function normalizeModule(mod) {
|
|
39
|
+
return mod.default ?? mod;
|
|
40
|
+
}
|
|
41
|
+
async function loadMysqlModule() {
|
|
42
|
+
try {
|
|
43
|
+
return (await import('mysql2/promise'));
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
throw missingSqlDriverDependencyError({
|
|
47
|
+
label: 'MySQL',
|
|
48
|
+
dialect: 'mysql',
|
|
49
|
+
packageName: 'mysql2',
|
|
50
|
+
cause: error,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function mysqlValue(value) {
|
|
55
|
+
if (value === undefined)
|
|
56
|
+
return null;
|
|
57
|
+
if (value === null)
|
|
58
|
+
return null;
|
|
59
|
+
if (typeof value === 'boolean')
|
|
60
|
+
return value ? 1 : 0;
|
|
61
|
+
if (value instanceof Date)
|
|
62
|
+
return value;
|
|
63
|
+
if (Buffer.isBuffer(value))
|
|
64
|
+
return value;
|
|
65
|
+
if (typeof value === 'object')
|
|
66
|
+
return JSON.stringify(value);
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
function mysqlParams(params) {
|
|
70
|
+
if (params === undefined)
|
|
71
|
+
return undefined;
|
|
72
|
+
if (Array.isArray(params))
|
|
73
|
+
return params.map(mysqlValue);
|
|
74
|
+
throw new SqlDriverError('MySQL driver requires positional params after compilation.', {
|
|
75
|
+
code: 'SQL_PARAMS_INVALID',
|
|
76
|
+
dialect: 'mysql',
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function normalizeStatement(statement, params) {
|
|
80
|
+
const source = typeof statement === 'string' ? { sql: statement, params } : statement;
|
|
81
|
+
if (isRecord(source.params)) {
|
|
82
|
+
return compileSqlNamedParams('mysql', source.sql, source.params);
|
|
83
|
+
}
|
|
84
|
+
return source;
|
|
85
|
+
}
|
|
86
|
+
function requireObjectParams(statement, purpose) {
|
|
87
|
+
if (statement.params === undefined)
|
|
88
|
+
return {};
|
|
89
|
+
if (!isRecord(statement.params)) {
|
|
90
|
+
throw new SqlDriverError(`${purpose} requires named object params.`, {
|
|
91
|
+
code: 'SQL_PARAMS_INVALID',
|
|
92
|
+
dialect: 'mysql',
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return statement.params;
|
|
96
|
+
}
|
|
97
|
+
function uniqueParamName(base, used) {
|
|
98
|
+
const safeBase = base.replace(/[^A-Za-z0-9_]/g, '_').replace(/^[^A-Za-z_]+/, '') || 'value';
|
|
99
|
+
let name = safeBase;
|
|
100
|
+
let suffix = 1;
|
|
101
|
+
while (used.has(name)) {
|
|
102
|
+
suffix += 1;
|
|
103
|
+
name = `${safeBase}_${suffix}`;
|
|
104
|
+
}
|
|
105
|
+
used.add(name);
|
|
106
|
+
return name;
|
|
107
|
+
}
|
|
108
|
+
function rowsFromResult(result) {
|
|
109
|
+
return Array.isArray(result) ? result : [];
|
|
110
|
+
}
|
|
111
|
+
function affectedRows(result, rowsLength) {
|
|
112
|
+
if (isRecord(result) && typeof result.affectedRows === 'number')
|
|
113
|
+
return result.affectedRows;
|
|
114
|
+
return rowsLength;
|
|
115
|
+
}
|
|
116
|
+
function insertId(result) {
|
|
117
|
+
if (isRecord(result) && Object.prototype.hasOwnProperty.call(result, 'insertId'))
|
|
118
|
+
return result.insertId;
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
export function createMysqlDriver(config, deps = {}) {
|
|
122
|
+
let mysqlModule;
|
|
123
|
+
let poolInstance;
|
|
124
|
+
const loadMysql = deps.loadMysql ?? loadMysqlModule;
|
|
125
|
+
function mapError(error, code = 'SQL_DRIVER_QUERY_FAILED') {
|
|
126
|
+
if (error instanceof SqlDriverError)
|
|
127
|
+
return error;
|
|
128
|
+
return new SqlDriverError(error instanceof Error ? error.message : 'MySQL driver error.', {
|
|
129
|
+
code,
|
|
130
|
+
dialect: 'mysql',
|
|
131
|
+
cause: error,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
async function mysql() {
|
|
135
|
+
if (mysqlModule)
|
|
136
|
+
return mysqlModule;
|
|
137
|
+
try {
|
|
138
|
+
mysqlModule = normalizeModule(await loadMysql());
|
|
139
|
+
return mysqlModule;
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (error instanceof SqlDriverError)
|
|
143
|
+
throw error;
|
|
144
|
+
throw missingSqlDriverDependencyError({
|
|
145
|
+
label: 'MySQL',
|
|
146
|
+
dialect: 'mysql',
|
|
147
|
+
packageName: 'mysql2',
|
|
148
|
+
cause: error,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
async function pool() {
|
|
153
|
+
if (poolInstance)
|
|
154
|
+
return poolInstance;
|
|
155
|
+
const mod = await mysql();
|
|
156
|
+
poolInstance = mod.createPool(connectionConfig(config.connection));
|
|
157
|
+
return poolInstance;
|
|
158
|
+
}
|
|
159
|
+
async function runQuery(target, statement, params) {
|
|
160
|
+
const normalized = normalizeStatement(statement, params);
|
|
161
|
+
const source = target ?? (await pool());
|
|
162
|
+
const [result] = await source.execute(normalized.sql, mysqlParams(normalized.params));
|
|
163
|
+
return rowsFromResult(result);
|
|
164
|
+
}
|
|
165
|
+
async function runExec(target, statement, params) {
|
|
166
|
+
const normalized = normalizeStatement(statement, params);
|
|
167
|
+
const source = target ?? (await pool());
|
|
168
|
+
const [result] = await source.execute(normalized.sql, mysqlParams(normalized.params));
|
|
169
|
+
const rows = rowsFromResult(result);
|
|
170
|
+
return {
|
|
171
|
+
rows,
|
|
172
|
+
affectedRows: affectedRows(result, rows.length),
|
|
173
|
+
insertId: insertId(result),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
const driver = {
|
|
177
|
+
dialect: 'mysql',
|
|
178
|
+
capabilities: MYSQL_CAPABILITIES,
|
|
179
|
+
async connect() {
|
|
180
|
+
await pool();
|
|
181
|
+
},
|
|
182
|
+
async close() {
|
|
183
|
+
await poolInstance?.end();
|
|
184
|
+
poolInstance = undefined;
|
|
185
|
+
},
|
|
186
|
+
async query(statement, params) {
|
|
187
|
+
try {
|
|
188
|
+
return await runQuery(undefined, statement, params);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
throw mapError(error);
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
async exec(statement, params) {
|
|
195
|
+
try {
|
|
196
|
+
return await runExec(undefined, statement, params);
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
throw mapError(error);
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
async transaction(run) {
|
|
203
|
+
const connection = await (await pool()).getConnection();
|
|
204
|
+
await connection.beginTransaction();
|
|
205
|
+
try {
|
|
206
|
+
const result = await run({
|
|
207
|
+
query: (statement, params) => runQuery(connection, statement, params),
|
|
208
|
+
exec: (statement, params) => runExec(connection, statement, params),
|
|
209
|
+
});
|
|
210
|
+
await connection.commit();
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
await connection.rollback();
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
217
|
+
finally {
|
|
218
|
+
connection.release();
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
quoteIdent(identifier) {
|
|
222
|
+
return `\`${requireIdentifier(identifier).replace(/`/g, '``')}\``;
|
|
223
|
+
},
|
|
224
|
+
quoteQualified(...identifiers) {
|
|
225
|
+
return identifiers.map((identifier) => driver.quoteIdent(identifier)).join('.');
|
|
226
|
+
},
|
|
227
|
+
compileNamedParams(statement, params) {
|
|
228
|
+
return compileSqlNamedParams('mysql', statement, params);
|
|
229
|
+
},
|
|
230
|
+
paginate(statement, limit, offset) {
|
|
231
|
+
const cleanLimit = Math.trunc(limit);
|
|
232
|
+
const cleanOffset = Math.trunc(offset);
|
|
233
|
+
if (!Number.isFinite(cleanLimit) || cleanLimit < 0 || !Number.isFinite(cleanOffset) || cleanOffset < 0) {
|
|
234
|
+
throw new SqlDriverError('MySQL pagination limit and offset must be finite non-negative numbers.', {
|
|
235
|
+
code: 'SQL_PAGINATION_INVALID',
|
|
236
|
+
dialect: 'mysql',
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
const base = trimStatement(statement);
|
|
240
|
+
const ordered = hasOrderBy(base) ? base : `${base} ORDER BY 1`;
|
|
241
|
+
return `${ordered} LIMIT ${cleanLimit} OFFSET ${cleanOffset}`;
|
|
242
|
+
},
|
|
243
|
+
countQuery(statement) {
|
|
244
|
+
return `SELECT COUNT(*) AS total FROM (${trimStatement(statement)}) AS _mythik_count`;
|
|
245
|
+
},
|
|
246
|
+
totalsQuery(statement) {
|
|
247
|
+
return `SELECT * FROM (${trimStatement(statement)}) AS _mythik_totals`;
|
|
248
|
+
},
|
|
249
|
+
buildInsertReturning(table, values) {
|
|
250
|
+
const columns = Object.keys(values);
|
|
251
|
+
if (columns.length === 0) {
|
|
252
|
+
throw new SqlDriverError('MySQL insert requires at least one value.', {
|
|
253
|
+
code: 'SQL_VALUES_EMPTY',
|
|
254
|
+
dialect: 'mysql',
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
const used = new Set();
|
|
258
|
+
const params = {};
|
|
259
|
+
const placeholders = columns.map((column) => {
|
|
260
|
+
const name = uniqueParamName(column, used);
|
|
261
|
+
params[name] = values[column];
|
|
262
|
+
return `@${name}`;
|
|
263
|
+
});
|
|
264
|
+
return {
|
|
265
|
+
sql: `INSERT INTO ${driver.quoteIdent(table)} (${columns.map((column) => driver.quoteIdent(column)).join(', ')}) VALUES (${placeholders.join(', ')})`,
|
|
266
|
+
params,
|
|
267
|
+
};
|
|
268
|
+
},
|
|
269
|
+
buildUpdateReturning(table, values, where) {
|
|
270
|
+
const columns = Object.keys(values);
|
|
271
|
+
if (columns.length === 0) {
|
|
272
|
+
throw new SqlDriverError('MySQL update requires at least one value.', {
|
|
273
|
+
code: 'SQL_VALUES_EMPTY',
|
|
274
|
+
dialect: 'mysql',
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
const params = { ...requireObjectParams(where, 'MySQL update') };
|
|
278
|
+
const used = new Set(Object.keys(params));
|
|
279
|
+
const assignments = columns.map((column) => {
|
|
280
|
+
const name = uniqueParamName(`set_${column}`, used);
|
|
281
|
+
params[name] = values[column];
|
|
282
|
+
return `${driver.quoteIdent(column)} = @${name}`;
|
|
283
|
+
});
|
|
284
|
+
return {
|
|
285
|
+
sql: `UPDATE ${driver.quoteIdent(table)} SET ${assignments.join(', ')} ${whereClause(where)}`,
|
|
286
|
+
params,
|
|
287
|
+
};
|
|
288
|
+
},
|
|
289
|
+
buildDelete(table, where) {
|
|
290
|
+
return {
|
|
291
|
+
sql: `DELETE FROM ${driver.quoteIdent(table)} ${whereClause(where)}`,
|
|
292
|
+
params: where.params,
|
|
293
|
+
};
|
|
294
|
+
},
|
|
295
|
+
buildUpsert(table, values, keys) {
|
|
296
|
+
const columns = Object.keys(values);
|
|
297
|
+
if (columns.length === 0) {
|
|
298
|
+
throw new SqlDriverError('MySQL upsert requires at least one value.', {
|
|
299
|
+
code: 'SQL_VALUES_EMPTY',
|
|
300
|
+
dialect: 'mysql',
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
if (keys.length === 0) {
|
|
304
|
+
throw new SqlDriverError('MySQL upsert requires at least one conflict key.', {
|
|
305
|
+
code: 'SQL_KEYS_EMPTY',
|
|
306
|
+
dialect: 'mysql',
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
const insert = driver.buildInsertReturning(table, values);
|
|
310
|
+
const updateColumns = columns.filter((column) => !keys.includes(column));
|
|
311
|
+
const insertWithAlias = `${insert.sql} AS _mythik_upsert`;
|
|
312
|
+
const assignments = updateColumns.length === 0
|
|
313
|
+
? [`${driver.quoteIdent(keys[0])} = _mythik_upsert.${driver.quoteIdent(keys[0])}`]
|
|
314
|
+
: updateColumns.map((column) => `${driver.quoteIdent(column)} = _mythik_upsert.${driver.quoteIdent(column)}`);
|
|
315
|
+
return {
|
|
316
|
+
sql: `${insertWithAlias} ON DUPLICATE KEY UPDATE ${assignments.join(', ')}`,
|
|
317
|
+
params: insert.params,
|
|
318
|
+
};
|
|
319
|
+
},
|
|
320
|
+
async tableExists(table) {
|
|
321
|
+
const [schema, name] = table.includes('.') ? table.split('.', 2) : [null, table];
|
|
322
|
+
const rows = await driver.query('SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = COALESCE(@schema, DATABASE()) AND TABLE_NAME = @name', { schema, name });
|
|
323
|
+
return rows.length > 0;
|
|
324
|
+
},
|
|
325
|
+
mapError,
|
|
326
|
+
};
|
|
327
|
+
return driver;
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=mysql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../../src/sql/drivers/mysql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { SqlDriver, SqlDriverConfig } from '../types.js';
|
|
2
|
+
interface PgQueryResult {
|
|
3
|
+
rows: Record<string, unknown>[];
|
|
4
|
+
rowCount?: number | null;
|
|
5
|
+
}
|
|
6
|
+
interface PgQueryable {
|
|
7
|
+
query(statement: string, values?: readonly unknown[]): Promise<PgQueryResult>;
|
|
8
|
+
}
|
|
9
|
+
interface PgClient extends PgQueryable {
|
|
10
|
+
release(): void;
|
|
11
|
+
}
|
|
12
|
+
interface PgPool extends PgQueryable {
|
|
13
|
+
connect(): Promise<PgClient>;
|
|
14
|
+
end(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
interface PgPoolConstructor {
|
|
17
|
+
new (config?: unknown): PgPool;
|
|
18
|
+
}
|
|
19
|
+
interface PgModuleShape {
|
|
20
|
+
Pool: PgPoolConstructor;
|
|
21
|
+
}
|
|
22
|
+
type PgModuleImport = PgModuleShape & {
|
|
23
|
+
default?: PgModuleShape;
|
|
24
|
+
};
|
|
25
|
+
export interface PostgresDriverDeps {
|
|
26
|
+
loadPg?: () => Promise<PgModuleImport>;
|
|
27
|
+
}
|
|
28
|
+
export declare function createPostgresDriver(config: SqlDriverConfig, deps?: PostgresDriverDeps): SqlDriver;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=postgres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/sql/drivers/postgres.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAA8D,MAAM,aAAa,CAAC;AAE1H,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,UAAU,WAAW;IACnB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC/E;AAED,UAAU,QAAS,SAAQ,WAAW;IACpC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,UAAU,MAAO,SAAQ,WAAW;IAClC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,UAAU,iBAAiB;IACzB,KAAK,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAChC;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,KAAK,cAAc,GAAG,aAAa,GAAG;IAAE,OAAO,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACxC;AAuHD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,GAAE,kBAAuB,GAAG,SAAS,CAoPtG"}
|