@rex0220/kintone-sql-tools 1.0.0 → 1.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/README.md CHANGED
@@ -21,7 +21,7 @@ kintone アプリを SQL 風の構文で操作するツールセットです。
21
21
  ## npm(グローバル)
22
22
 
23
23
  ```bash
24
- npm install -g kintone-sql-tools
24
+ npm install -g @rex0220/kintone-sql-tools
25
25
  ksql --help
26
26
  ```
27
27
 
@@ -168,6 +168,9 @@ Options:
168
168
  5. `@profile` を使った DELETE が失敗する
169
169
  - 現在 `DELETE` の `@profile` は未対応です。
170
170
 
171
+ 6. Windows で `ksql --help` 実行時にエディタが開いてしまう
172
+ - `.js` 関連付けの影響の可能性があります。`ksql.cmd --help` または `node dist-cli/ksql.js --help` で確認してください。
173
+
171
174
  ## 機密情報の取り扱い
172
175
 
173
176
  - token / password は直書きせず、環境変数または `env:` 参照を推奨します。
package/dist-cli/ksql.js CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  "use strict";
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -3595,6 +3596,7 @@ function project(rows, columns, scalarCache) {
3595
3596
  return { rows: projected2, columns: cols };
3596
3597
  }
3597
3598
  const orderedKeys = [];
3599
+ const defaultFieldKeys = buildDefaultFieldOutputKeys(columns);
3598
3600
  const projected = rows.map((row, rowIdx) => {
3599
3601
  const out = {};
3600
3602
  for (const [colIdx, col] of columns.entries()) {
@@ -3611,7 +3613,7 @@ function project(rows, columns, scalarCache) {
3611
3613
  break;
3612
3614
  }
3613
3615
  case "FIELD": {
3614
- const key = col.alias ?? col.field;
3616
+ const key = col.alias ?? defaultFieldKeys.get(colIdx) ?? col.field;
3615
3617
  out[key] = resolveFieldRef(row, col.field);
3616
3618
  if (rowIdx === 0) orderedKeys.push(key);
3617
3619
  break;
@@ -3666,6 +3668,30 @@ function project(rows, columns, scalarCache) {
3666
3668
  });
3667
3669
  return { rows: projected, columns: orderedKeys };
3668
3670
  }
3671
+ function buildDefaultFieldOutputKeys(columns) {
3672
+ const qualifierCollisionCount = /* @__PURE__ */ new Map();
3673
+ for (const col of columns) {
3674
+ if (col.type !== "FIELD" || col.alias) continue;
3675
+ const unqualified = stripTableQualifier(col.field);
3676
+ qualifierCollisionCount.set(unqualified, (qualifierCollisionCount.get(unqualified) ?? 0) + 1);
3677
+ }
3678
+ const keys = /* @__PURE__ */ new Map();
3679
+ for (const [idx, col] of columns.entries()) {
3680
+ if (col.type !== "FIELD" || col.alias) continue;
3681
+ const unqualified = stripTableQualifier(col.field);
3682
+ const duplicate = (qualifierCollisionCount.get(unqualified) ?? 0) > 1;
3683
+ const hasTableQualifier = col.field.includes(".") && !col.field.startsWith("_p.");
3684
+ keys.set(idx, duplicate && hasTableQualifier ? col.field : unqualified);
3685
+ }
3686
+ return keys;
3687
+ }
3688
+ function stripTableQualifier(field) {
3689
+ if (field.startsWith("_p.")) return field;
3690
+ const dot = field.indexOf(".");
3691
+ if (dot <= 0) return field;
3692
+ const unqualified = field.slice(dot + 1);
3693
+ return unqualified || field;
3694
+ }
3669
3695
  function stripParentShortcutColumns(row) {
3670
3696
  const out = {};
3671
3697
  for (const [k, v] of Object.entries(row)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rex0220/kintone-sql-tools",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "kintone SQL plugin and CLI tools (ksql)",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -25,7 +25,7 @@
25
25
  "prepack": "npm run build:cli",
26
26
  "start": "run-p develop upload",
27
27
  "develop": "node build.mjs --watch",
28
- "upload": "rex0220-plugin-uploader -f dist/ksql-plugin-v1.0.0.zip --watch"
28
+ "upload": "rex0220-plugin-uploader -f dist/ksql-plugin-v1.1.0.zip --watch"
29
29
  },
30
30
  "files": [
31
31
  "dist-cli/",