@sqg/sqg 0.17.3 → 0.17.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/dist/index.mjs CHANGED
@@ -1870,7 +1870,10 @@ var JavaGenerator = class extends BaseGenerator {
1870
1870
  }).join(" + ");
1871
1871
  }
1872
1872
  readColumn(column, index, path) {
1873
- return this.typeMapper.parseValue(column, `rs.getObject(${index + 1})`, path);
1873
+ const idx = index + 1;
1874
+ const readExpr = jdbcReadExpression(column, idx, this.typeMapper);
1875
+ if (readExpr !== null) return readExpr;
1876
+ return this.typeMapper.parseValue(column, `rs.getObject(${idx})`, path);
1874
1877
  }
1875
1878
  async beforeGenerate(_projectDir, _gen, _queries, _tables) {
1876
1879
  Handlebars.registerHelper("isDuckDB", () => this.engine === "duckdb");
@@ -1979,6 +1982,39 @@ var JavaGenerator = class extends BaseGenerator {
1979
1982
  }
1980
1983
  }
1981
1984
  };
1985
+ const JDBC_GETTER_MAP = {
1986
+ String: (i) => `rs.getString(${i})`,
1987
+ "byte[]": (i) => `rs.getBytes(${i})`,
1988
+ BigDecimal: (i) => `rs.getBigDecimal(${i})`,
1989
+ Integer: (i) => `rs.getObject(${i}, Integer.class)`,
1990
+ Long: (i) => `rs.getObject(${i}, Long.class)`,
1991
+ Short: (i) => `rs.getObject(${i}, Short.class)`,
1992
+ Byte: (i) => `rs.getObject(${i}, Byte.class)`,
1993
+ Boolean: (i) => `rs.getObject(${i}, Boolean.class)`,
1994
+ Double: (i) => `rs.getObject(${i}, Double.class)`,
1995
+ Float: (i) => `rs.getObject(${i}, Float.class)`
1996
+ };
1997
+ const OPAQUE_SQL_TYPES = new Set([
1998
+ "TIMESTAMP",
1999
+ "DATETIME",
2000
+ "TIMESTAMPTZ",
2001
+ "TIMESTAMP WITH TIME ZONE",
2002
+ "TIMESTAMP_S",
2003
+ "TIMESTAMP_MS",
2004
+ "TIMESTAMP_NS",
2005
+ "DATE",
2006
+ "TIME",
2007
+ "TIME WITH TIME ZONE",
2008
+ "JSON",
2009
+ "JSONB"
2010
+ ]);
2011
+ function jdbcReadExpression(column, index, typeMapper) {
2012
+ if (column.type instanceof EnumType || column.type instanceof ListType || column.type instanceof StructType) return null;
2013
+ const upperType = column.type?.toString().toUpperCase() ?? "";
2014
+ if (OPAQUE_SQL_TYPES.has(upperType) || upperType.startsWith("_")) return null;
2015
+ const getter = JDBC_GETTER_MAP[typeMapper.getTypeName(column)];
2016
+ return getter ? getter(index) : null;
2017
+ }
1982
2018
  const JDBC_SETTER_MAP = {
1983
2019
  String: {
1984
2020
  setter: "setString",
package/dist/sqg.mjs CHANGED
@@ -2189,7 +2189,10 @@ var JavaGenerator = class extends BaseGenerator {
2189
2189
  }).join(" + ");
2190
2190
  }
2191
2191
  readColumn(column, index, path) {
2192
- return this.typeMapper.parseValue(column, `rs.getObject(${index + 1})`, path);
2192
+ const idx = index + 1;
2193
+ const readExpr = jdbcReadExpression(column, idx, this.typeMapper);
2194
+ if (readExpr !== null) return readExpr;
2195
+ return this.typeMapper.parseValue(column, `rs.getObject(${idx})`, path);
2193
2196
  }
2194
2197
  async beforeGenerate(_projectDir, _gen, _queries, _tables) {
2195
2198
  Handlebars.registerHelper("isDuckDB", () => this.engine === "duckdb");
@@ -2298,6 +2301,39 @@ var JavaGenerator = class extends BaseGenerator {
2298
2301
  }
2299
2302
  }
2300
2303
  };
2304
+ const JDBC_GETTER_MAP = {
2305
+ String: (i) => `rs.getString(${i})`,
2306
+ "byte[]": (i) => `rs.getBytes(${i})`,
2307
+ BigDecimal: (i) => `rs.getBigDecimal(${i})`,
2308
+ Integer: (i) => `rs.getObject(${i}, Integer.class)`,
2309
+ Long: (i) => `rs.getObject(${i}, Long.class)`,
2310
+ Short: (i) => `rs.getObject(${i}, Short.class)`,
2311
+ Byte: (i) => `rs.getObject(${i}, Byte.class)`,
2312
+ Boolean: (i) => `rs.getObject(${i}, Boolean.class)`,
2313
+ Double: (i) => `rs.getObject(${i}, Double.class)`,
2314
+ Float: (i) => `rs.getObject(${i}, Float.class)`
2315
+ };
2316
+ const OPAQUE_SQL_TYPES = new Set([
2317
+ "TIMESTAMP",
2318
+ "DATETIME",
2319
+ "TIMESTAMPTZ",
2320
+ "TIMESTAMP WITH TIME ZONE",
2321
+ "TIMESTAMP_S",
2322
+ "TIMESTAMP_MS",
2323
+ "TIMESTAMP_NS",
2324
+ "DATE",
2325
+ "TIME",
2326
+ "TIME WITH TIME ZONE",
2327
+ "JSON",
2328
+ "JSONB"
2329
+ ]);
2330
+ function jdbcReadExpression(column, index, typeMapper) {
2331
+ if (column.type instanceof EnumType || column.type instanceof ListType || column.type instanceof StructType) return null;
2332
+ const upperType = column.type?.toString().toUpperCase() ?? "";
2333
+ if (OPAQUE_SQL_TYPES.has(upperType) || upperType.startsWith("_")) return null;
2334
+ const getter = JDBC_GETTER_MAP[typeMapper.getTypeName(column)];
2335
+ return getter ? getter(index) : null;
2336
+ }
2301
2337
  const JDBC_SETTER_MAP = {
2302
2338
  String: {
2303
2339
  setter: "setString",
@@ -3418,7 +3454,7 @@ async function processProject(projectPath, ui) {
3418
3454
  //#region src/mcp-server.ts
3419
3455
  const server = new Server({
3420
3456
  name: "sqg-mcp",
3421
- version: process.env.npm_package_version ?? "0.17.3"
3457
+ version: process.env.npm_package_version ?? "0.17.4"
3422
3458
  }, { capabilities: {
3423
3459
  tools: {},
3424
3460
  resources: {}
@@ -3883,7 +3919,7 @@ function formatMs(ms) {
3883
3919
  }
3884
3920
  //#endregion
3885
3921
  //#region src/sqg.ts
3886
- const version = process.env.npm_package_version ?? "0.17.3";
3922
+ const version = process.env.npm_package_version ?? "0.17.4";
3887
3923
  updateNotifier({ pkg: {
3888
3924
  name: "@sqg/sqg",
3889
3925
  version
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sqg/sqg",
3
- "version": "0.17.3",
3
+ "version": "0.17.4",
4
4
  "description": "SQG - SQL Query Generator - Type-safe code generation from SQL (https://sqg.dev)",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",