dbgate-tools 6.1.3 → 6.1.4
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/SqlGenerator.js +2 -1
- package/lib/dbKeysLoader.d.ts +35 -0
- package/lib/dbKeysLoader.js +132 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/package.json +3 -3
package/lib/SqlGenerator.js
CHANGED
|
@@ -237,7 +237,8 @@ class SqlGenerator {
|
|
|
237
237
|
});
|
|
238
238
|
}
|
|
239
239
|
extract(objectTypeField) {
|
|
240
|
-
|
|
240
|
+
var _a, _b;
|
|
241
|
+
return ((_b = (_a = this.dbinfo[objectTypeField]) === null || _a === void 0 ? void 0 : _a.filter(x => this.objects.find(y => x.pureName == y.pureName && x.schemaName == y.schemaName && y.objectTypeField == objectTypeField))) !== null && _b !== void 0 ? _b : []);
|
|
241
242
|
}
|
|
242
243
|
enableConstraints(enabled) {
|
|
243
244
|
if (this.options.disableConstraints) {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface DbKeysNodeModelBase {
|
|
2
|
+
text?: string;
|
|
3
|
+
count?: number;
|
|
4
|
+
level: number;
|
|
5
|
+
}
|
|
6
|
+
export interface DbKeysLeafNodeModel extends DbKeysNodeModelBase {
|
|
7
|
+
key: string;
|
|
8
|
+
type: 'string' | 'hash' | 'set' | 'list' | 'zset' | 'stream' | 'binary' | 'ReJSON-RL';
|
|
9
|
+
}
|
|
10
|
+
export interface DbKeysFolderNodeModel extends DbKeysNodeModelBase {
|
|
11
|
+
root: string;
|
|
12
|
+
type: 'dir';
|
|
13
|
+
maxShowCount?: number;
|
|
14
|
+
isExpanded?: boolean;
|
|
15
|
+
shouldLoadNext?: boolean;
|
|
16
|
+
hasNext?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface DbKeysTreeModel {
|
|
19
|
+
root: DbKeysFolderNodeModel;
|
|
20
|
+
dirsByKey: {
|
|
21
|
+
[key: string]: DbKeysFolderNodeModel;
|
|
22
|
+
};
|
|
23
|
+
childrenByKey: {
|
|
24
|
+
[key: string]: DbKeysNodeModel[];
|
|
25
|
+
};
|
|
26
|
+
refreshAll?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export type DbKeysNodeModel = DbKeysLeafNodeModel | DbKeysFolderNodeModel;
|
|
29
|
+
export type DbKeysLoadFunction = (root: string, limit: number) => Promise<DbKeysNodeModel[]>;
|
|
30
|
+
export type DbKeysChangeModelFunction = (func: (model: DbKeysTreeModel) => DbKeysTreeModel) => void;
|
|
31
|
+
export declare function dbKeys_loadMissing(tree: DbKeysTreeModel, loader: DbKeysLoadFunction): Promise<DbKeysTreeModel>;
|
|
32
|
+
export declare function dbKeys_markNodeExpanded(tree: DbKeysTreeModel, root: string, isExpanded: boolean): DbKeysTreeModel;
|
|
33
|
+
export declare function dbKeys_refreshAll(tree?: DbKeysTreeModel): DbKeysTreeModel;
|
|
34
|
+
export declare function dbKeys_reloadFolder(tree: DbKeysTreeModel, root: string): DbKeysTreeModel;
|
|
35
|
+
export declare function dbKeys_getFlatList(tree: DbKeysTreeModel): DbKeysNodeModel[];
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.dbKeys_getFlatList = exports.dbKeys_reloadFolder = exports.dbKeys_refreshAll = exports.dbKeys_markNodeExpanded = exports.dbKeys_loadMissing = void 0;
|
|
16
|
+
const omit_1 = __importDefault(require("lodash/omit"));
|
|
17
|
+
const SHOW_INCREMENT = 100;
|
|
18
|
+
// function dbKeys_findFolderNode(node: DbKeysNodeModel, root: string) {
|
|
19
|
+
// if (node.type != 'dir') {
|
|
20
|
+
// return null;
|
|
21
|
+
// }
|
|
22
|
+
// if (node.root === root) {
|
|
23
|
+
// return node;
|
|
24
|
+
// }
|
|
25
|
+
// for (const child of node.children ?? []) {
|
|
26
|
+
// const res = dbKeys_findFolderNode(child, root);
|
|
27
|
+
// if (res) {
|
|
28
|
+
// return res;
|
|
29
|
+
// }
|
|
30
|
+
// }
|
|
31
|
+
// return null;
|
|
32
|
+
// }
|
|
33
|
+
// export async function dbKeys_loadKeysFromNode(
|
|
34
|
+
// tree: DbKeysTreeModel,
|
|
35
|
+
// callingRoot: string,
|
|
36
|
+
// separator: string,
|
|
37
|
+
// loader: DbKeysLoadFunction
|
|
38
|
+
// ): Promise<DbKeysTreeModel> {
|
|
39
|
+
// const callingRootNode = tree.dirsByKey[callingRoot];
|
|
40
|
+
// if (!callingRootNode) {
|
|
41
|
+
// return tree;
|
|
42
|
+
// }
|
|
43
|
+
// const newItems = await loader(callingRoot, callingRootNode.maxShowCount ?? SHOW_INCREMENT);
|
|
44
|
+
// return {
|
|
45
|
+
// ...tree,
|
|
46
|
+
// childrenByKey: {
|
|
47
|
+
// ...tree.childrenByKey,
|
|
48
|
+
// [callingRoot]: newItems,
|
|
49
|
+
// },
|
|
50
|
+
// };
|
|
51
|
+
// }
|
|
52
|
+
function dbKeys_loadMissing(tree, loader) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
const childrenByKey = Object.assign({}, tree.childrenByKey);
|
|
55
|
+
const dirsByKey = Object.assign({}, tree.dirsByKey);
|
|
56
|
+
for (const root in tree.dirsByKey) {
|
|
57
|
+
const dir = tree.dirsByKey[root];
|
|
58
|
+
if (dir.isExpanded && dir.shouldLoadNext) {
|
|
59
|
+
if (!tree.childrenByKey[root] || dir.hasNext) {
|
|
60
|
+
const loadCount = dir.maxShowCount && dir.shouldLoadNext ? dir.maxShowCount + SHOW_INCREMENT : SHOW_INCREMENT;
|
|
61
|
+
const items = yield loader(root, loadCount + 1);
|
|
62
|
+
childrenByKey[root] = items.slice(0, loadCount);
|
|
63
|
+
dirsByKey[root] = Object.assign(Object.assign({}, dir), { shouldLoadNext: false, maxShowCount: loadCount, hasNext: items.length > loadCount });
|
|
64
|
+
for (const child of items.slice(0, loadCount)) {
|
|
65
|
+
if (child.type == 'dir' && !dirsByKey[child.root]) {
|
|
66
|
+
dirsByKey[child.root] = {
|
|
67
|
+
shouldLoadNext: false,
|
|
68
|
+
maxShowCount: null,
|
|
69
|
+
hasNext: false,
|
|
70
|
+
isExpanded: false,
|
|
71
|
+
type: 'dir',
|
|
72
|
+
level: dir.level + 1,
|
|
73
|
+
root: child.root,
|
|
74
|
+
text: child.text,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
dirsByKey[root] = Object.assign(Object.assign({}, dir), { shouldLoadNext: false });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return Object.assign(Object.assign({}, tree), { dirsByKey,
|
|
85
|
+
childrenByKey, refreshAll: false });
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
exports.dbKeys_loadMissing = dbKeys_loadMissing;
|
|
89
|
+
function dbKeys_markNodeExpanded(tree, root, isExpanded) {
|
|
90
|
+
const node = tree.dirsByKey[root];
|
|
91
|
+
if (!node) {
|
|
92
|
+
return tree;
|
|
93
|
+
}
|
|
94
|
+
return Object.assign(Object.assign({}, tree), { dirsByKey: Object.assign(Object.assign({}, tree.dirsByKey), { [root]: Object.assign(Object.assign({}, node), { isExpanded, shouldLoadNext: isExpanded }) }) });
|
|
95
|
+
}
|
|
96
|
+
exports.dbKeys_markNodeExpanded = dbKeys_markNodeExpanded;
|
|
97
|
+
function dbKeys_refreshAll(tree) {
|
|
98
|
+
const root = {
|
|
99
|
+
isExpanded: true,
|
|
100
|
+
level: 0,
|
|
101
|
+
root: '',
|
|
102
|
+
type: 'dir',
|
|
103
|
+
shouldLoadNext: true,
|
|
104
|
+
};
|
|
105
|
+
return Object.assign(Object.assign({}, tree), { childrenByKey: {}, dirsByKey: {
|
|
106
|
+
'': root,
|
|
107
|
+
}, refreshAll: true, root });
|
|
108
|
+
}
|
|
109
|
+
exports.dbKeys_refreshAll = dbKeys_refreshAll;
|
|
110
|
+
function dbKeys_reloadFolder(tree, root) {
|
|
111
|
+
return Object.assign(Object.assign({}, tree), { childrenByKey: (0, omit_1.default)(tree.childrenByKey, root), dirsByKey: Object.assign(Object.assign({}, tree.dirsByKey), { [root]: Object.assign(Object.assign({}, tree.dirsByKey[root]), { shouldLoadNext: true, hasNext: undefined }) }) });
|
|
112
|
+
}
|
|
113
|
+
exports.dbKeys_reloadFolder = dbKeys_reloadFolder;
|
|
114
|
+
function addFlatItems(tree, root, res) {
|
|
115
|
+
const item = tree.dirsByKey[root];
|
|
116
|
+
if (!item.isExpanded) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
const children = tree.childrenByKey[root] || [];
|
|
120
|
+
for (const child of children) {
|
|
121
|
+
res.push(child);
|
|
122
|
+
if (child.type == 'dir') {
|
|
123
|
+
addFlatItems(tree, child.root, res);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function dbKeys_getFlatList(tree) {
|
|
128
|
+
const res = [];
|
|
129
|
+
addFlatItems(tree, '', res);
|
|
130
|
+
return res;
|
|
131
|
+
}
|
|
132
|
+
exports.dbKeys_getFlatList = dbKeys_getFlatList;
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -40,3 +40,4 @@ __exportStar(require("./getConnectionLabel"), exports);
|
|
|
40
40
|
__exportStar(require("./detectSqlFilterBehaviour"), exports);
|
|
41
41
|
__exportStar(require("./filterBehaviours"), exports);
|
|
42
42
|
__exportStar(require("./schemaInfoTools"), exports);
|
|
43
|
+
__exportStar(require("./dbKeysLoader"), exports);
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "6.1.
|
|
2
|
+
"version": "6.1.4",
|
|
3
3
|
"name": "dbgate-tools",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"typings": "lib/index.d.ts",
|
|
@@ -25,14 +25,14 @@
|
|
|
25
25
|
],
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "^13.7.0",
|
|
28
|
-
"dbgate-types": "^6.1.
|
|
28
|
+
"dbgate-types": "^6.1.4",
|
|
29
29
|
"jest": "^24.9.0",
|
|
30
30
|
"ts-jest": "^25.2.1",
|
|
31
31
|
"typescript": "^4.4.3"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"dbgate-query-splitter": "^4.11.3",
|
|
35
|
-
"dbgate-sqltree": "^6.1.
|
|
35
|
+
"dbgate-sqltree": "^6.1.4",
|
|
36
36
|
"debug": "^4.3.4",
|
|
37
37
|
"json-stable-stringify": "^1.0.1",
|
|
38
38
|
"lodash": "^4.17.21",
|