@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.
- 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 +46 -23
- package/lib/cjs/hooks/use-state.js +9 -27
- 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 +71 -79
- 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 +46 -23
- package/lib/es/hooks/use-state.js +9 -27
- 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 +71 -79
- 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,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.
|
|
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$
|
|
119
|
-
subToolbar = _store$
|
|
120
|
-
toolbar = _store$
|
|
121
|
-
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);
|
|
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.
|
|
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()
|
|
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(
|
|
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
|
-
|
|
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$
|
|
250
|
+
var _meta$table2;
|
|
231
251
|
e.stopPropagation();
|
|
232
|
-
onChangeTableAlias(((_meta$
|
|
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$
|
|
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
|
-
|
|
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$
|
|
274
|
+
var _meta$table5;
|
|
252
275
|
e.stopPropagation();
|
|
253
|
-
onChangeTableAlias(((_meta$
|
|
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$
|
|
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
|
|
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
|
}
|
|
@@ -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
|
|
496
|
+
return i != index;
|
|
515
497
|
});
|
|
516
498
|
setMeta(_metaList3, groupIndex);
|
|
517
499
|
return void 0;
|
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,
|