@gingkoo/pandora-metabase 1.0.33 → 1.0.34

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.
@@ -20,7 +20,7 @@ import NextDom from './components/meta-icon';
20
20
  import Header from './components/header';
21
21
  import { useStore } from '../../hooks/use-provider';
22
22
  var TableData = function TableData(props) {
23
- var _meta$subquery, _meta$subquery2, _meta$subquery3, _meta$table2, _meta$table3, _meta$table5, _meta$table6, _store$showMainColumn;
23
+ var _meta$subquery, _meta$subquery2, _meta$subquery3, _meta$table3, _meta$table4, _meta$table6, _meta$table7, _store$showMainColumn;
24
24
  var meta = props.meta,
25
25
  groupIndex = props.groupIndex;
26
26
  var store = useStore();
@@ -35,10 +35,11 @@ var TableData = function TableData(props) {
35
35
  value: meta.table,
36
36
  onChange: function onChange(data) {
37
37
  if (meta.table.datasourceId !== data.datasourceId || meta.table.name !== data.name) {
38
+ var _store$preProps;
38
39
  var newMetaList = store.metaList[groupIndex].list.slice()[0];
39
40
  newMetaList.table = _objectSpread(_objectSpread({}, data), {}, {
40
41
  tableUuid: uuidv4('table'),
41
- alias: getAlias(data.name, store.metaList[groupIndex].list.slice())
42
+ alias: getAlias(data.name, store.metaList[groupIndex].list.slice(), ((_store$preProps = store.preProps) === null || _store$preProps === void 0 ? void 0 : _store$preProps.notExistsColumns) || [])
42
43
  });
43
44
  store.fetchColumns(data, data.datasourceId, [], function (columns) {
44
45
  newMetaList.columns = columns;
@@ -118,10 +119,10 @@ var TableData = function TableData(props) {
118
119
  // 子查询弹窗
119
120
  var showSubQuery = function showSubQuery() {
120
121
  var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
121
- var _store$preProps = store.preProps,
122
- subToolbar = _store$preProps.subToolbar,
123
- toolbar = _store$preProps.toolbar,
124
- other = _objectWithoutProperties(_store$preProps, _excluded);
122
+ var _store$preProps2 = store.preProps,
123
+ subToolbar = _store$preProps2.subToolbar,
124
+ toolbar = _store$preProps2.toolbar,
125
+ other = _objectWithoutProperties(_store$preProps2, _excluded);
125
126
  var newMetaList = store.metaList[groupIndex].list.slice()[0];
126
127
  var newMeta = store.metaList[groupIndex].list.slice();
127
128
  var oldList = cloneDeep(newMetaList.subquery);
@@ -205,6 +206,17 @@ var TableData = function TableData(props) {
205
206
  };
206
207
  store.setMeta(newMetaList, groupIndex);
207
208
  };
209
+ var tableIsError = function tableIsError() {
210
+ var _store$preProps3, _meta$table;
211
+ var aliass = ((_store$preProps3 = store.preProps) === null || _store$preProps3 === void 0 || (_store$preProps3 = _store$preProps3.notExistsColumns) === null || _store$preProps3 === void 0 ? void 0 : _store$preProps3.map(function (v) {
212
+ return v.alias;
213
+ })) || [];
214
+ var tableAlias = (_meta$table = meta.table) === null || _meta$table === void 0 ? void 0 : _meta$table.alias;
215
+ if (tableAlias && aliass.includes(tableAlias)) {
216
+ return true;
217
+ }
218
+ return false;
219
+ };
208
220
  return _jsx(Wrapper, {
209
221
  className: "Sqb-item",
210
222
  children: _jsxs("div", {
@@ -223,42 +235,48 @@ var TableData = function TableData(props) {
223
235
  showSubQuery(meta.subquery);
224
236
  },
225
237
  children: [subQuerySelected && _jsx(Tooltip, {
226
- title: __('SqlQueryBuilder.alias'),
238
+ title: __(tableIsError() ? 'SqlQueryBuilder.repeatAlias' : 'SqlQueryBuilder.alias'),
227
239
  children: _jsx(Button, {
228
- className: ':Sqb-TableName-as',
240
+ danger: tableIsError(),
241
+ className: cx(':Sqb-TableName-as', {
242
+ isError: tableIsError()
243
+ }),
229
244
  shape: 'circle',
230
245
  iconOnly: true,
231
246
  primary: true,
232
247
  icon: 'As',
233
248
  size: 'small',
234
249
  onClick: function onClick(e) {
235
- var _meta$table;
250
+ var _meta$table2;
236
251
  e.stopPropagation();
237
- onChangeTableAlias(((_meta$table = meta.table) === null || _meta$table === void 0 ? void 0 : _meta$table.alias) || '');
252
+ onChangeTableAlias(((_meta$table2 = meta.table) === null || _meta$table2 === void 0 ? void 0 : _meta$table2.alias) || '');
238
253
  }
239
254
  })
240
- }), subQuerySelected ? "".concat(((_meta$subquery2 = meta.subquery) === null || _meta$subquery2 === void 0 ? void 0 : _meta$subquery2[0]).table.datasourceName, ".").concat(((_meta$subquery3 = meta.subquery) === null || _meta$subquery3 === void 0 ? void 0 : _meta$subquery3[0]).table.name, " ").concat((_meta$table2 = meta.table) !== null && _meta$table2 !== void 0 && _meta$table2.alias ? "as ".concat((_meta$table3 = meta.table) === null || _meta$table3 === void 0 ? void 0 : _meta$table3.alias) : '', " ") : __('SqlQueryBuilder.setSubQuery')]
255
+ }), subQuerySelected ? "".concat(((_meta$subquery2 = meta.subquery) === null || _meta$subquery2 === void 0 ? void 0 : _meta$subquery2[0]).table.datasourceName, ".").concat(((_meta$subquery3 = meta.subquery) === null || _meta$subquery3 === void 0 ? void 0 : _meta$subquery3[0]).table.name, " ").concat((_meta$table3 = meta.table) !== null && _meta$table3 !== void 0 && _meta$table3.alias ? "as ".concat((_meta$table4 = meta.table) === null || _meta$table4 === void 0 ? void 0 : _meta$table4.alias) : '', " ") : __('SqlQueryBuilder.setSubQuery')]
241
256
  }) : _jsxs("div", {
242
257
  className: cx("Sqb-TableName", {
243
258
  notSelected: !selected
244
259
  }),
245
260
  onClick: selectTable,
246
261
  children: [selected && _jsx(Tooltip, {
247
- title: __('SqlQueryBuilder.alias'),
262
+ title: __(tableIsError() ? 'SqlQueryBuilder.repeatAlias' : 'SqlQueryBuilder.alias'),
248
263
  children: _jsx(Button, {
249
- className: ':Sqb-TableName-as',
264
+ danger: tableIsError(),
265
+ className: cx(':Sqb-TableName-as', {
266
+ isError: tableIsError()
267
+ }),
250
268
  shape: 'circle',
251
269
  iconOnly: true,
252
270
  primary: true,
253
271
  icon: 'As',
254
272
  size: 'small',
255
273
  onClick: function onClick(e) {
256
- var _meta$table4;
274
+ var _meta$table5;
257
275
  e.stopPropagation();
258
- onChangeTableAlias(((_meta$table4 = meta.table) === null || _meta$table4 === void 0 ? void 0 : _meta$table4.alias) || '');
276
+ onChangeTableAlias(((_meta$table5 = meta.table) === null || _meta$table5 === void 0 ? void 0 : _meta$table5.alias) || '');
259
277
  }
260
278
  })
261
- }), selected ? "".concat(meta.table.datasourceName, ".").concat(meta.table.name, " ").concat((_meta$table5 = meta.table) !== null && _meta$table5 !== void 0 && _meta$table5.alias ? "as ".concat((_meta$table6 = meta.table) === null || _meta$table6 === void 0 ? void 0 : _meta$table6.alias) : '') : __('SqlQueryBuilder.pickTable')]
279
+ }), selected ? "".concat(meta.table.datasourceName, ".").concat(meta.table.name, " ").concat((_meta$table6 = meta.table) !== null && _meta$table6 !== void 0 && _meta$table6.alias ? "as ".concat((_meta$table7 = meta.table) === null || _meta$table7 === void 0 ? void 0 : _meta$table7.alias) : '') : __('SqlQueryBuilder.pickTable')]
262
280
  }), store.showSubquery && _jsx(Tooltip, {
263
281
  title: __('SqlQueryBuilder.switchSubQuery'),
264
282
  children: _jsx(Button, {
@@ -271,9 +271,12 @@ var useStore = function useStore() {
271
271
  };
272
272
  }();
273
273
  var setMeta = function setMeta(curData, groupInd) {
274
- var newMeta = metaList.slice();
275
- newMeta[groupInd].list = curData;
276
- _setMeta(newMeta);
274
+ var _metaList = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : metaList;
275
+ var newMeta = _metaList.slice();
276
+ if (newMeta[groupInd]) {
277
+ newMeta[groupInd].list = curData;
278
+ _setMeta(newMeta);
279
+ }
277
280
  };
278
281
  // 回显
279
282
  var setPreData = function setPreData(data) {
@@ -287,27 +290,6 @@ var useStore = function useStore() {
287
290
  if (v.table) {
288
291
  v.table.tableUuid = v.table.tableUuid || uuidv4('table');
289
292
  }
290
- // // 兼容
291
- // if (patchVersion != '1.0.0') {
292
- // if (v.type === TypeEnum.joinData) {
293
- // v = joinDataPatch(v);
294
- // }
295
- // if (v.type === TypeEnum.filter) {
296
- // v = filterPatch(v);
297
- // }
298
- // if (v.type === TypeEnum.sort) {
299
- // v = sortPatch(v);
300
- // }
301
- // if (v.type === TypeEnum.customColumn) {
302
- // v = customColumnPatch(v);
303
- // }
304
- // if (v.type === TypeEnum.data) {
305
- // v = dataPatch(v);
306
- // }
307
- // }
308
- // if (v.type === TypeEnum.filter) {
309
- // newMeta[i] = setFilterQuotes(newMeta[i]);
310
- // }
311
293
  // 设置右侧column
312
294
  if ((_v$table = v.table2) !== null && _v$table !== void 0 && _v$table.datasourceId) {
313
295
  fetchColumns(newMeta[i].table2, newMeta[i].table2.datasourceId, v.columns, function () {
@@ -322,7 +304,7 @@ var useStore = function useStore() {
322
304
  } else {
323
305
  newMeta[i].columns = columns || [];
324
306
  }
325
- setMeta(newMeta, groupIndex);
307
+ setMeta(newMeta, groupIndex, data);
326
308
  });
327
309
  return _objectSpread({}, v);
328
310
  }
@@ -343,7 +325,7 @@ var useStore = function useStore() {
343
325
  // if (v.type === TypeEnum.joinData) {
344
326
  // newMeta[i] = setQuotes(newMeta[i]);
345
327
  // }
346
- setMeta(newMeta, groupIndex);
328
+ setMeta(newMeta, groupIndex, data);
347
329
  });
348
330
  return _objectSpread({}, v);
349
331
  }
@@ -50,6 +50,8 @@ export default register('en', {
50
50
  'SqlQueryBuilder.selectColumnAll': 'select all',
51
51
  'SqlQueryBuilder.alias': 'alias',
52
52
  'SqlQueryBuilder.aliasForRules': 'The alias only supports a combination of letters, numbers, and underscores. It must start with a letter and cannot exceed 30 bytes',
53
+ 'SqlQueryBuilder.pleaseSelectTable': 'The currently dependent table is empty or has been deleted',
54
+ 'SqlQueryBuilder.repeatAlias': 'If there are duplicate names, please modify them',
53
55
  'customColumn.operator': 'operator',
54
56
  'customColumn.collection': 'collection',
55
57
  'customColumn.field': 'field',
@@ -46,6 +46,8 @@ export default register('zh', {
46
46
  'SqlQueryBuilder.selectColumnAll': '全选',
47
47
  'SqlQueryBuilder.alias': '别名',
48
48
  'SqlQueryBuilder.aliasForRules': '别名只支持字母 + 数字 + 下划线组合,必须是字母开头,且不能超过30个字节',
49
+ 'SqlQueryBuilder.pleaseSelectTable': '当前依赖的表为空或被删除',
50
+ 'SqlQueryBuilder.repeatAlias': '有重名请修改',
49
51
  'customColumn.operator': '操作符',
50
52
  'customColumn.collection': '自定义组合',
51
53
  'customColumn.field': '字段',
@@ -16,4 +16,4 @@ export declare const replaceTpl: (inputString: string, values: {
16
16
  [key: string]: any;
17
17
  }) => string;
18
18
  export declare const uuidv4: (prefix?: string) => string;
19
- export declare const getAlias: (name: string | undefined, list: MetaListType[]) => string;
19
+ export declare const getAlias: (name: string | undefined, list: MetaListType[], columns?: any[]) => string;
@@ -134,6 +134,7 @@ export var uuidv4 = function uuidv4() {
134
134
  export var getAlias = function getAlias() {
135
135
  var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
136
136
  var list = arguments.length > 1 ? arguments[1] : undefined;
137
+ var columns = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
137
138
  // 提取所有有效的 alias
138
139
  if (!list || list.length < 1) return name;
139
140
  // const baseOld = oldName?.split('_')[0] ?? '';
@@ -151,9 +152,12 @@ export var getAlias = function getAlias() {
151
152
  return (_v$table2 = v.table2) === null || _v$table2 === void 0 ? void 0 : _v$table2.alias;
152
153
  }
153
154
  return undefined;
154
- }).filter(function (alias) {
155
+ }).concat(columns.map(function (v) {
156
+ return v.alias;
157
+ })).filter(function (alias) {
155
158
  return Boolean(alias);
156
159
  });
160
+ console.log('🚀 ~ getAlias ~ aliass:', aliass);
157
161
  // 收集所有 name_x 中的数字
158
162
  var regex = new RegExp("^".concat(name, "_(\\d+)$"));
159
163
  var indexes = aliass.map(function (alias) {
@@ -1,6 +1,5 @@
1
- import { MetaListType } from '../store/types';
2
- export declare const transformSql: (metas: MetaListType[], db?: string) => {
1
+ export declare const transformSql: (metas: any, db?: string) => {
3
2
  sql: string;
4
- fields: any[];
5
- union_fields: any[][];
3
+ fields: any;
4
+ union_fields: any[];
6
5
  };
@@ -2,6 +2,7 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
2
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
4
  var _excluded = ["children"];
5
+ // @ts-nocheck
5
6
  var procEnum = {
6
7
  mysql: 'mysql',
7
8
  oracle: 'oracle',
@@ -76,7 +77,7 @@ var _recursionArr2 = function _recursionArr(arr) {
76
77
  }
77
78
  return obj;
78
79
  };
79
- var _handleBaseType2Sql9 = function _handleBaseType2Sql(list) {
80
+ var _handleBaseType2Sql8 = function _handleBaseType2Sql(list) {
80
81
  var db = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : procEnum.mysql;
81
82
  var sql = '';
82
83
  var constants = [];
@@ -143,11 +144,11 @@ var _handleBaseType2Sql9 = function _handleBaseType2Sql(list) {
143
144
  var lhs = item.lhs,
144
145
  rhs = item.rhs;
145
146
  // 他很特殊 左边里面只有一种类型 右边面只有一种类型
146
- var _handleBaseType2Sql2 = _handleBaseType2Sql9(lhs, db),
147
+ var _handleBaseType2Sql2 = _handleBaseType2Sql8(lhs, db),
147
148
  leftSql = _handleBaseType2Sql2.sql,
148
149
  leftSqlItems = _handleBaseType2Sql2.sql_items,
149
150
  joinDefaultLeftConstants = _handleBaseType2Sql2.constants;
150
- var _handleBaseType2Sql3 = _handleBaseType2Sql9(rhs, db),
151
+ var _handleBaseType2Sql3 = _handleBaseType2Sql8(rhs, db),
151
152
  rightSql = _handleBaseType2Sql3.sql,
152
153
  rightSqlItems = _handleBaseType2Sql3.sql_items,
153
154
  joinDefaultRightConstants = _handleBaseType2Sql3.constants;
@@ -187,11 +188,11 @@ var _handleBaseType2Sql9 = function _handleBaseType2Sql(list) {
187
188
  condition = item.condition,
188
189
  database_type = item.database_type,
189
190
  formula = item.formula;
190
- var _handleBaseType2Sql4 = _handleBaseType2Sql9(_lhs, db),
191
+ var _handleBaseType2Sql4 = _handleBaseType2Sql8(_lhs, db),
191
192
  _leftSql = _handleBaseType2Sql4.sql,
192
193
  _leftSqlItems = _handleBaseType2Sql4.sql_items,
193
194
  _joinDefaultLeftConstants = _handleBaseType2Sql4.constants;
194
- var _handleBaseType2Sql5 = _handleBaseType2Sql9(_rhs, db),
195
+ var _handleBaseType2Sql5 = _handleBaseType2Sql8(_rhs, db),
195
196
  _rightSql = _handleBaseType2Sql5.sql,
196
197
  _rightSqlItems = _handleBaseType2Sql5.sql_items,
197
198
  _joinDefaultRightConstants = _handleBaseType2Sql5.constants;
@@ -462,40 +463,25 @@ var _handleBaseType2Sql9 = function _handleBaseType2Sql(list) {
462
463
  if ([BlockTypeEnum.notExists, BlockTypeEnum.exists].includes(type)) {
463
464
  var notExists = item.notExists;
464
465
  if (notExists && notExists !== null && notExists !== void 0 && notExists.length) {
465
- var _mainTable$table, _mainTable$table2;
466
- var mainTable = notExists.find(function (v) {
467
- return v.type === MetabaseTypeEnum.data;
468
- });
469
- var filterMeta = notExists.find(function (v) {
470
- return v.type === MetabaseTypeEnum.filter;
471
- });
472
- var where = '';
473
- if (filterMeta && filterMeta.filter && Array.isArray(filterMeta.filter) && filterMeta.filter.length) {
474
- var _handleBaseType2Sql6 = _handleBaseType2Sql9(filterMeta.filter, db),
475
- notExistsSql = _handleBaseType2Sql6.sql,
476
- constInNotExistsFilter = _handleBaseType2Sql6.constants;
477
- constants.push.apply(constants, _toConsumableArray(constInNotExistsFilter));
478
- where = "WHERE ".concat(notExistsSql);
479
- }
480
466
  if (type === BlockTypeEnum.notExists) {
481
467
  sql += ' NOT EXISTS';
482
468
  } else {
483
469
  sql += ' EXISTS';
484
470
  }
485
- sql += " (SELECT 1 FROM ".concat(mainTable === null || mainTable === void 0 || (_mainTable$table = mainTable.table) === null || _mainTable$table === void 0 ? void 0 : _mainTable$table.name, " AS ").concat(mainTable === null || mainTable === void 0 || (_mainTable$table2 = mainTable.table) === null || _mainTable$table2 === void 0 ? void 0 : _mainTable$table2.alias, " ").concat(where, ")");
471
+ sql += " (".concat(handleSqlUnion(notExists, db, true).sql, ")");
486
472
  }
487
473
  }
488
474
  if (type === BlockTypeEnum.FORMULA) {
489
- var _handleBaseType2Sql7 = _handleBaseType2Sql9(item.args, db),
490
- argSql = _handleBaseType2Sql7.sql,
491
- formulaConstants = _handleBaseType2Sql7.constants;
475
+ var _handleBaseType2Sql6 = _handleBaseType2Sql8(item.args, db),
476
+ argSql = _handleBaseType2Sql6.sql,
477
+ formulaConstants = _handleBaseType2Sql6.constants;
492
478
  sql += " ".concat(item.name, "(").concat(argSql, ")");
493
479
  constants.push.apply(constants, _toConsumableArray(formulaConstants));
494
480
  }
495
481
  if (type === BlockTypeEnum.collection) {
496
- var _handleBaseType2Sql8 = _handleBaseType2Sql9(item.list, db),
497
- collectionSql = _handleBaseType2Sql8.sql,
498
- collectionConstants = _handleBaseType2Sql8.constants;
482
+ var _handleBaseType2Sql7 = _handleBaseType2Sql8(item.list, db),
483
+ collectionSql = _handleBaseType2Sql7.sql,
484
+ collectionConstants = _handleBaseType2Sql7.constants;
499
485
  sql += " ".concat(collectionSql);
500
486
  constants.push.apply(constants, _toConsumableArray(collectionConstants));
501
487
  }
@@ -519,9 +505,9 @@ var _handleJoinData = function _handleJoinData(joinData) {
519
505
  if (isSubquery) {
520
506
  subQuery = subquery;
521
507
  }
522
- var _handleBaseType2Sql0 = _handleBaseType2Sql9(expressions, db),
523
- sql = _handleBaseType2Sql0.sql,
524
- joinConstants = _handleBaseType2Sql0.constants;
508
+ var _handleBaseType2Sql9 = _handleBaseType2Sql8(expressions, db),
509
+ sql = _handleBaseType2Sql9.sql,
510
+ joinConstants = _handleBaseType2Sql9.constants;
525
511
  var joinCondition = "on ".concat(sql);
526
512
  constants = joinConstants;
527
513
  return {
@@ -611,9 +597,9 @@ var _handleNesting = function handleNesting(data) {
611
597
  var customColumnsConstants = [];
612
598
  var handleCustomColumn = function handleCustomColumn(data) {
613
599
  return data.map(function (it) {
614
- var _handleBaseType2Sql1 = _handleBaseType2Sql9(it.formulaList, db),
615
- field_sql = _handleBaseType2Sql1.sql,
616
- constants = _handleBaseType2Sql1.constants;
600
+ var _handleBaseType2Sql0 = _handleBaseType2Sql8(it.formulaList, db),
601
+ field_sql = _handleBaseType2Sql0.sql,
602
+ constants = _handleBaseType2Sql0.constants;
617
603
  customColumnsConstants.push.apply(customColumnsConstants, _toConsumableArray(constants));
618
604
  return {
619
605
  field_sql: "".concat(field_sql, " as ").concat(it.name),
@@ -628,9 +614,9 @@ var _handleNesting = function handleNesting(data) {
628
614
  obj.customColumnsConstants = customColumnsConstants;
629
615
  }
630
616
  if (filterData && filterData.filter.length) {
631
- var _handleBaseType2Sql10 = _handleBaseType2Sql9(filterData.filter, db),
632
- sql = _handleBaseType2Sql10.sql,
633
- constants = _handleBaseType2Sql10.constants;
617
+ var _handleBaseType2Sql1 = _handleBaseType2Sql8(filterData.filter, db),
618
+ sql = _handleBaseType2Sql1.sql,
619
+ constants = _handleBaseType2Sql1.constants;
634
620
  obj.filters = 'WHERE ' + sql;
635
621
  obj.filtersConstants = constants;
636
622
  }
@@ -675,8 +661,8 @@ var _handleNesting = function handleNesting(data) {
675
661
  }
676
662
  if (sortData && sortData.sort.length) {
677
663
  obj.orderInfos = "ORDER BY ".concat(sortData.sort.map(function (v) {
678
- var _handleBaseType2Sql11 = _handleBaseType2Sql9(v.expression, db),
679
- sql = _handleBaseType2Sql11.sql;
664
+ var _handleBaseType2Sql10 = _handleBaseType2Sql8(v.expression, db),
665
+ sql = _handleBaseType2Sql10.sql;
680
666
  return "".concat(sql, " ").concat(v.sort);
681
667
  }).join(', '));
682
668
  }
@@ -747,6 +733,7 @@ var handleSqlStruct = function handleSqlStruct(list) {
747
733
  // 处理 union
748
734
  var handleSqlUnion = function handleSqlUnion(metas) {
749
735
  var db = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : procEnum.mysql;
736
+ var noFields = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
750
737
  var unionMetas = metas.filter(function (it) {
751
738
  return it.type === MetabaseTypeEnum.union;
752
739
  });
@@ -754,7 +741,7 @@ var handleSqlUnion = function handleSqlUnion(metas) {
754
741
  return it.type !== MetabaseTypeEnum.union;
755
742
  });
756
743
  var data = handleSqlStruct(baseMetas, db);
757
- var _sqlStruct2text = _sqlStruct2text3(data, 0, db),
744
+ var _sqlStruct2text = _sqlStruct2text3(data, 0, db, noFields),
758
745
  sql = _sqlStruct2text.sql,
759
746
  fields = _sqlStruct2text.fields;
760
747
  var union_fields = [fields];
@@ -785,6 +772,7 @@ var handleSqlUnion = function handleSqlUnion(metas) {
785
772
  var _sqlStruct2text3 = function sqlStruct2text(data) {
786
773
  var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
787
774
  var db = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : procEnum.mysql;
775
+ var noFields = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
788
776
  var sql = '';
789
777
  var hasInnerSql = data.hasInnerSql,
790
778
  innerSqlStruct = data.innerSqlStruct,
@@ -804,51 +792,55 @@ var _sqlStruct2text3 = function sqlStruct2text(data) {
804
792
  // 情况一、一层 带聚合 字段是 聚合字段
805
793
  // 情况二、一层 不带聚合 字段是 主表和关联表的字段
806
794
  // 情况三、二层 带聚合 第一层 聚合字段 + 关联表字段 第二层 聚合字段 第三层 聚合字段
807
- var flag = false; // 是否加逗号
808
- if (limit && db === procEnum.sqlserver) {
809
- sql += "TOP(".concat(limit, ") ");
810
- }
811
- if (hasInnerSql) {
812
- // 情况三 innerSqlStruct.queryColumns 是内层 聚合输出的字段,这种字段虽说是内层的,但是其实外层也需要
813
- if (innerSqlStruct.queryColumns && innerSqlStruct.queryColumns.length) {
814
- sql += innerSqlStruct.queryColumns.map(function (v) {
815
- return "".concat(alias, ".").concat(v.name, " as ").concat(v.name);
816
- }).join(', ') + ' ';
817
- flag = true;
818
- }
795
+ if (noFields) {
796
+ sql += '1 ';
819
797
  } else {
820
- if (Array.isArray(queryColumns) && queryColumns.length) {
821
- // 情况一 queryColumns 是聚合字段
822
- // 情况二 queryColumns 是主表字段
823
- // 情况三 queryColumns 是聚合字段
824
- flag = true;
825
- sql += queryColumns.map(function (v) {
826
- return v.field_sql;
827
- }).join(', ') + ' ';
798
+ var flag = false; // 是否加逗号
799
+ if (limit && db === procEnum.sqlserver) {
800
+ sql += "TOP(".concat(limit, ") ");
828
801
  }
829
- }
830
- if (firstEntry && joinTables && !groupBy) {
831
- // 情况二 joinTables 是关联表字段
832
- // 情况三 joinTables 是关联表字段
833
- joinTables.forEach(function (it) {
834
- if (Array.isArray(it.queryColumns) && it.queryColumns.length) {
835
- if (flag) {
836
- sql += ', ';
837
- }
838
- sql += it.queryColumns.map(function (v) {
839
- return v.field_sql;
802
+ if (hasInnerSql) {
803
+ // 情况三 innerSqlStruct.queryColumns 是内层 聚合输出的字段,这种字段虽说是内层的,但是其实外层也需要
804
+ if (innerSqlStruct.queryColumns && innerSqlStruct.queryColumns.length) {
805
+ sql += innerSqlStruct.queryColumns.map(function (v) {
806
+ return "".concat(alias, ".").concat(v.name, " as ").concat(v.name);
840
807
  }).join(', ') + ' ';
841
808
  flag = true;
842
809
  }
843
- });
844
- }
845
- if (customColumns && customColumns.length) {
846
- if (flag) {
847
- sql += ', ';
810
+ } else {
811
+ if (Array.isArray(queryColumns) && queryColumns.length) {
812
+ // 情况一 queryColumns 是聚合字段
813
+ // 情况二 queryColumns 是主表字段
814
+ // 情况三 queryColumns 是聚合字段
815
+ flag = true;
816
+ sql += queryColumns.map(function (v) {
817
+ return v.field_sql;
818
+ }).join(', ') + ' ';
819
+ }
820
+ }
821
+ if (firstEntry && joinTables && !groupBy) {
822
+ // 情况二 joinTables 是关联表字段
823
+ // 情况三 joinTables 是关联表字段
824
+ joinTables.forEach(function (it) {
825
+ if (Array.isArray(it.queryColumns) && it.queryColumns.length) {
826
+ if (flag) {
827
+ sql += ', ';
828
+ }
829
+ sql += it.queryColumns.map(function (v) {
830
+ return v.field_sql;
831
+ }).join(', ') + ' ';
832
+ flag = true;
833
+ }
834
+ });
835
+ }
836
+ if (customColumns && customColumns.length) {
837
+ if (flag) {
838
+ sql += ', ';
839
+ }
840
+ sql += customColumns.map(function (v) {
841
+ return v.field_sql;
842
+ }).join(', ') + ' ';
848
843
  }
849
- sql += customColumns.map(function (v) {
850
- return v.field_sql;
851
- }).join(', ') + ' ';
852
844
  }
853
845
  // -------- 处理 main table --------
854
846
  sql += 'FROM ';
@@ -901,7 +893,7 @@ var _sqlStruct2text3 = function sqlStruct2text(data) {
901
893
  }
902
894
  // -------- 获取 字段列表 --------
903
895
  var fields = [];
904
- if (firstEntry) {
896
+ if (firstEntry && !noFields) {
905
897
  function addFields(data) {
906
898
  var name = data.name,
907
899
  name_zh = data.name_zh,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gingkoo/pandora-metabase",
3
- "version": "1.0.33",
3
+ "version": "1.0.34",
4
4
  "description": "",
5
5
  "main": "lib/es/index.js",
6
6
  "module": "lib/es/index.js",