@gingkoo/pandora-metabase 1.0.32 → 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,15 +35,19 @@ 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;
45
46
  // ① 主表动了 其他都得重新选
46
- store.setMeta([newMetaList], groupIndex);
47
+ var newMetas = store.metaList[groupIndex].list.slice();
48
+ newMetas[0] = newMetaList;
49
+ store.setMeta(newMetas, groupIndex);
50
+ // store.setMeta([newMetaList], groupIndex);
47
51
  });
48
52
  }
49
53
  store.setPopup({
@@ -115,10 +119,10 @@ var TableData = function TableData(props) {
115
119
  // 子查询弹窗
116
120
  var showSubQuery = function showSubQuery() {
117
121
  var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
118
- var _store$preProps = store.preProps,
119
- subToolbar = _store$preProps.subToolbar,
120
- toolbar = _store$preProps.toolbar,
121
- 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);
122
126
  var newMetaList = store.metaList[groupIndex].list.slice()[0];
123
127
  var newMeta = store.metaList[groupIndex].list.slice();
124
128
  var oldList = cloneDeep(newMetaList.subquery);
@@ -165,7 +169,9 @@ var TableData = function TableData(props) {
165
169
  return existingCol ? existingCol : newCol;
166
170
  });
167
171
  // (newMeta[index] as MetaJoin).expressions = [];
168
- store.setMeta([newMetaList], groupIndex);
172
+ var newMetas = store.metaList[groupIndex].list.slice();
173
+ newMetas[0] = newMetaList;
174
+ store.setMeta(newMetas, groupIndex);
169
175
  o.close();
170
176
  } catch (e) {
171
177
  console.warn(e);
@@ -180,11 +186,11 @@ var TableData = function TableData(props) {
180
186
  };
181
187
  // 切换子查询
182
188
  var switchSubQuery = function switchSubQuery() {
183
- var newMetaList = store.metaList[groupIndex].list.slice()[0];
184
- newMetaList.isSubquery = !newMetaList.isSubquery;
189
+ var newMetaList = store.metaList[groupIndex].list.slice();
190
+ newMetaList[0].isSubquery = !newMetaList[0].isSubquery;
185
191
  //重置表数据
186
- newMetaList.subquery = [];
187
- newMetaList.table = {
192
+ newMetaList[0].subquery = [];
193
+ newMetaList[0].table = {
188
194
  name: '',
189
195
  // 表名
190
196
  name_zh: '',
@@ -198,7 +204,18 @@ var TableData = function TableData(props) {
198
204
  // 数据源名
199
205
  datasourceId: '' // 数据源id
200
206
  };
201
- store.setMeta([newMetaList], groupIndex);
207
+ store.setMeta(newMetaList, groupIndex);
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;
202
219
  };
203
220
  return _jsx(Wrapper, {
204
221
  className: "Sqb-item",
@@ -218,42 +235,48 @@ var TableData = function TableData(props) {
218
235
  showSubQuery(meta.subquery);
219
236
  },
220
237
  children: [subQuerySelected && _jsx(Tooltip, {
221
- title: __('SqlQueryBuilder.alias'),
238
+ title: __(tableIsError() ? 'SqlQueryBuilder.repeatAlias' : 'SqlQueryBuilder.alias'),
222
239
  children: _jsx(Button, {
223
- className: ':Sqb-TableName-as',
240
+ danger: tableIsError(),
241
+ className: cx(':Sqb-TableName-as', {
242
+ isError: tableIsError()
243
+ }),
224
244
  shape: 'circle',
225
245
  iconOnly: true,
226
246
  primary: true,
227
247
  icon: 'As',
228
248
  size: 'small',
229
249
  onClick: function onClick(e) {
230
- var _meta$table;
250
+ var _meta$table2;
231
251
  e.stopPropagation();
232
- 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) || '');
233
253
  }
234
254
  })
235
- }), 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')]
236
256
  }) : _jsxs("div", {
237
257
  className: cx("Sqb-TableName", {
238
258
  notSelected: !selected
239
259
  }),
240
260
  onClick: selectTable,
241
261
  children: [selected && _jsx(Tooltip, {
242
- title: __('SqlQueryBuilder.alias'),
262
+ title: __(tableIsError() ? 'SqlQueryBuilder.repeatAlias' : 'SqlQueryBuilder.alias'),
243
263
  children: _jsx(Button, {
244
- className: ':Sqb-TableName-as',
264
+ danger: tableIsError(),
265
+ className: cx(':Sqb-TableName-as', {
266
+ isError: tableIsError()
267
+ }),
245
268
  shape: 'circle',
246
269
  iconOnly: true,
247
270
  primary: true,
248
271
  icon: 'As',
249
272
  size: 'small',
250
273
  onClick: function onClick(e) {
251
- var _meta$table4;
274
+ var _meta$table5;
252
275
  e.stopPropagation();
253
- 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) || '');
254
277
  }
255
278
  })
256
- }), 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')]
257
280
  }), store.showSubquery && _jsx(Tooltip, {
258
281
  title: __('SqlQueryBuilder.switchSubQuery'),
259
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
  }
@@ -511,7 +493,7 @@ var useStore = function useStore() {
511
493
  if (meta.type === TypeEnum.summarize) {
512
494
  if (meta.by.length || meta.group.length) {
513
495
  var _metaList3 = newMeta.filter(function (v, i) {
514
- return i < index;
496
+ return i != index;
515
497
  });
516
498
  setMeta(_metaList3, groupIndex);
517
499
  return void 0;
@@ -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.32",
3
+ "version": "1.0.34",
4
4
  "description": "",
5
5
  "main": "lib/es/index.js",
6
6
  "module": "lib/es/index.js",