@sqg/sqg 0.8.0 → 0.9.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/sqg.mjs +22 -3
- package/package.json +1 -1
package/dist/sqg.mjs
CHANGED
|
@@ -680,6 +680,8 @@ var EnumType = class {
|
|
|
680
680
|
var SQLQuery = class {
|
|
681
681
|
columns;
|
|
682
682
|
allColumns;
|
|
683
|
+
/** Database-reported parameter types (variable name → SQL type name), set by database adapters */
|
|
684
|
+
parameterTypes;
|
|
683
685
|
constructor(filename, id, rawQuery, queryAnonymous, queryNamed, queryPositional, type, isOne, isPluck, variables, config) {
|
|
684
686
|
this.filename = filename;
|
|
685
687
|
this.id = id;
|
|
@@ -1205,6 +1207,23 @@ const postgres = new class {
|
|
|
1205
1207
|
if (value.startsWith("'") && value.endsWith("'") || value.startsWith("\"") && value.endsWith("\"")) return value.slice(1, -1);
|
|
1206
1208
|
return value;
|
|
1207
1209
|
});
|
|
1210
|
+
if (statement.parameters.length > 0) try {
|
|
1211
|
+
await db.query(`DEALLOCATE ALL`);
|
|
1212
|
+
await db.query(`PREPARE sqg_param_check AS ${statement.sql}`);
|
|
1213
|
+
const paramTypeResult = await db.query(`SELECT unnest(parameter_types)::oid AS oid FROM pg_prepared_statements WHERE name = 'sqg_param_check'`);
|
|
1214
|
+
await db.query(`DEALLOCATE sqg_param_check`);
|
|
1215
|
+
if (paramTypeResult.rows.length === statement.parameters.length) {
|
|
1216
|
+
const paramTypes = /* @__PURE__ */ new Map();
|
|
1217
|
+
for (let i = 0; i < statement.parameters.length; i++) {
|
|
1218
|
+
const typeName = getTypeName(Number(paramTypeResult.rows[i].oid));
|
|
1219
|
+
paramTypes.set(statement.parameters[i].name, typeName);
|
|
1220
|
+
}
|
|
1221
|
+
query.parameterTypes = paramTypes;
|
|
1222
|
+
consola.debug("Parameter types:", Object.fromEntries(paramTypes));
|
|
1223
|
+
}
|
|
1224
|
+
} catch (e) {
|
|
1225
|
+
consola.debug(`Parameter type introspection failed for ${query.id}, using heuristic:`, e.message);
|
|
1226
|
+
}
|
|
1208
1227
|
let result;
|
|
1209
1228
|
try {
|
|
1210
1229
|
await db.query("BEGIN");
|
|
@@ -2304,7 +2323,7 @@ var SqlQueryHelper = class {
|
|
|
2304
2323
|
get variables() {
|
|
2305
2324
|
return Array.from(this.query.variables.entries()).map(([name, value]) => ({
|
|
2306
2325
|
name,
|
|
2307
|
-
type: this.generator.mapParameterType(detectParameterType(value), false)
|
|
2326
|
+
type: this.generator.mapParameterType(this.query.parameterTypes?.get(name) ?? detectParameterType(value), false)
|
|
2308
2327
|
}));
|
|
2309
2328
|
}
|
|
2310
2329
|
get sqlQuery() {
|
|
@@ -2668,7 +2687,7 @@ async function processProject(projectPath) {
|
|
|
2668
2687
|
//#region src/mcp-server.ts
|
|
2669
2688
|
const server = new Server({
|
|
2670
2689
|
name: "sqg-mcp",
|
|
2671
|
-
version: process.env.npm_package_version ?? "0.
|
|
2690
|
+
version: process.env.npm_package_version ?? "0.9.0"
|
|
2672
2691
|
}, { capabilities: {
|
|
2673
2692
|
tools: {},
|
|
2674
2693
|
resources: {}
|
|
@@ -2997,7 +3016,7 @@ async function startMcpServer() {
|
|
|
2997
3016
|
|
|
2998
3017
|
//#endregion
|
|
2999
3018
|
//#region src/sqg.ts
|
|
3000
|
-
const version = process.env.npm_package_version ?? "0.
|
|
3019
|
+
const version = process.env.npm_package_version ?? "0.9.0";
|
|
3001
3020
|
const description = process.env.npm_package_description ?? "SQG - SQL Query Generator - Type-safe code generation from SQL (https://sqg.dev)";
|
|
3002
3021
|
consola.level = LogLevels.info;
|
|
3003
3022
|
const program = new Command().name("sqg").description(`${description}
|