@gingkoo/pandora-metabase 1.0.33 → 1.0.35
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/lib/cjs/components/dialog/formula-list/index.js +4 -2
- package/lib/cjs/components/dialog/formula-list/utils.js +8 -0
- package/lib/cjs/components/dialog/select-column-multiple/index.js +11 -9
- package/lib/cjs/components/dialog/select-permission-table/index.js +0 -1
- package/lib/cjs/components/modules/filter.js +14 -1
- package/lib/cjs/components/modules/join-data.js +48 -20
- package/lib/cjs/components/modules/summarize/group-by.js +2 -1
- package/lib/cjs/components/modules/table-data.js +34 -16
- package/lib/cjs/hooks/use-state.js +8 -26
- package/lib/cjs/locale/en.js +2 -0
- package/lib/cjs/locale/zh.js +2 -0
- package/lib/cjs/utils/helper.d.ts +1 -1
- package/lib/cjs/utils/helper.js +5 -1
- package/lib/cjs/utils/transformSql.d.ts +3 -4
- package/lib/cjs/utils/transformSql.js +72 -80
- package/lib/es/components/dialog/formula-list/index.js +4 -2
- package/lib/es/components/dialog/formula-list/utils.js +8 -0
- package/lib/es/components/dialog/select-column-multiple/index.js +11 -9
- package/lib/es/components/dialog/select-permission-table/index.js +0 -1
- package/lib/es/components/modules/filter.js +14 -1
- package/lib/es/components/modules/join-data.js +48 -20
- package/lib/es/components/modules/summarize/group-by.js +3 -2
- package/lib/es/components/modules/table-data.js +34 -16
- package/lib/es/hooks/use-state.js +8 -26
- package/lib/es/locale/en.js +2 -0
- package/lib/es/locale/zh.js +2 -0
- package/lib/es/utils/helper.d.ts +1 -1
- package/lib/es/utils/helper.js +5 -1
- package/lib/es/utils/transformSql.d.ts +3 -4
- package/lib/es/utils/transformSql.js +72 -80
- package/package.json +1 -1
|
@@ -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$
|
|
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$
|
|
122
|
-
subToolbar = _store$
|
|
123
|
-
toolbar = _store$
|
|
124
|
-
other = _objectWithoutProperties(_store$
|
|
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
|
-
|
|
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$
|
|
250
|
+
var _meta$table2;
|
|
236
251
|
e.stopPropagation();
|
|
237
|
-
onChangeTableAlias(((_meta$
|
|
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$
|
|
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
|
-
|
|
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$
|
|
274
|
+
var _meta$table5;
|
|
257
275
|
e.stopPropagation();
|
|
258
|
-
onChangeTableAlias(((_meta$
|
|
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$
|
|
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
|
|
275
|
-
newMeta
|
|
276
|
-
|
|
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
|
}
|
package/lib/es/locale/en.js
CHANGED
|
@@ -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',
|
package/lib/es/locale/zh.js
CHANGED
|
@@ -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': '字段',
|
package/lib/es/utils/helper.d.ts
CHANGED
|
@@ -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;
|
package/lib/es/utils/helper.js
CHANGED
|
@@ -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
|
-
}).
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 += " (
|
|
471
|
+
sql += " (".concat(handleSqlUnion(notExists, db, true).sql, ")");
|
|
486
472
|
}
|
|
487
473
|
}
|
|
488
474
|
if (type === BlockTypeEnum.FORMULA) {
|
|
489
|
-
var
|
|
490
|
-
argSql =
|
|
491
|
-
formulaConstants =
|
|
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
|
|
497
|
-
collectionSql =
|
|
498
|
-
collectionConstants =
|
|
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
|
|
523
|
-
sql =
|
|
524
|
-
joinConstants =
|
|
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
|
|
615
|
-
field_sql =
|
|
616
|
-
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
|
|
632
|
-
sql =
|
|
633
|
-
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
|
|
679
|
-
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
|
-
|
|
808
|
-
|
|
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
|
-
|
|
821
|
-
|
|
822
|
-
|
|
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
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
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
|
-
|
|
846
|
-
|
|
847
|
-
|
|
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,
|
|
@@ -949,7 +941,7 @@ var _sqlStruct2text3 = function sqlStruct2text(data) {
|
|
|
949
941
|
export var transformSql = function transformSql(metas) {
|
|
950
942
|
var db = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : procEnum.mysql;
|
|
951
943
|
// let new_metas = upgradeLegacyData(metas);
|
|
952
|
-
var _handleSqlUnion = handleSqlUnion(metas, db),
|
|
944
|
+
var _handleSqlUnion = handleSqlUnion(metas, db, true),
|
|
953
945
|
sql = _handleSqlUnion.sql,
|
|
954
946
|
fields = _handleSqlUnion.fields,
|
|
955
947
|
union_fields = _handleSqlUnion.union_fields;
|