dbgate-tools 6.8.2 → 7.0.0-alpha.12

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/index.d.ts CHANGED
@@ -24,6 +24,6 @@ export * from './getConnectionLabel';
24
24
  export * from './detectSqlFilterBehaviour';
25
25
  export * from './filterBehaviours';
26
26
  export * from './schemaInfoTools';
27
- export * from './dbKeysLoader';
27
+ export * from './redisKeysLoader';
28
28
  export * from './rowProgressReporter';
29
29
  export * from './diagramTools';
package/lib/index.js CHANGED
@@ -40,6 +40,6 @@ __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);
43
+ __exportStar(require("./redisKeysLoader"), exports);
44
44
  __exportStar(require("./rowProgressReporter"), exports);
45
45
  __exportStar(require("./diagramTools"), exports);
package/lib/nameTools.js CHANGED
@@ -139,4 +139,5 @@ exports.DATA_FOLDER_NAMES = [
139
139
  { name: 'datadeploy', label: 'Data deploy jobs' },
140
140
  { name: 'dbcompare', label: 'Database compare jobs' },
141
141
  { name: 'apps', label: 'Applications' },
142
+ { name: 'themes', label: 'Themes' },
142
143
  ];
@@ -0,0 +1,80 @@
1
+ export declare const DB_KEYS_SHOW_INCREMENT = 100;
2
+ export interface RedisNodeModelBase {
3
+ text?: string;
4
+ sortKey: string;
5
+ key: string;
6
+ count?: number;
7
+ level: number;
8
+ keyPath: string[];
9
+ parentKey: string;
10
+ }
11
+ export interface RedisLeafNodeModel extends RedisNodeModelBase {
12
+ type: 'string' | 'hash' | 'set' | 'list' | 'zset' | 'stream' | 'binary' | 'ReJSON-RL';
13
+ }
14
+ export interface RedisFolderNodeModel extends RedisNodeModelBase {
15
+ type: 'dir';
16
+ }
17
+ export interface RedisFolderStateMode {
18
+ key: string;
19
+ visibleCount?: number;
20
+ isExpanded?: boolean;
21
+ }
22
+ export interface RedisTreeModel {
23
+ treeKeySeparator: string;
24
+ root: RedisFolderNodeModel;
25
+ dirsByKey: {
26
+ [key: string]: RedisFolderNodeModel;
27
+ };
28
+ dirStateByKey: {
29
+ [key: string]: RedisFolderStateMode;
30
+ };
31
+ childrenByKey: {
32
+ [key: string]: RedisNodeModel[];
33
+ };
34
+ keyObjectsByKey: {
35
+ [key: string]: RedisNodeModel;
36
+ };
37
+ scannedKeys: number;
38
+ loadCount: number;
39
+ dbsize: number;
40
+ cursor: string;
41
+ loadedAll: boolean;
42
+ }
43
+ export type RedisNodeModel = RedisLeafNodeModel | RedisFolderNodeModel;
44
+ export interface RedisLoadedModel {
45
+ key: string;
46
+ type: 'string' | 'hash' | 'set' | 'list' | 'zset' | 'stream' | 'binary' | 'ReJSON-RL';
47
+ count?: number;
48
+ }
49
+ export interface RedisLoadResult {
50
+ nextCursor: string;
51
+ keys: RedisLoadedModel[];
52
+ dbsize: number;
53
+ }
54
+ export type RedisChangeModelFunction = (func: (model: RedisTreeModel) => RedisTreeModel, loadNextPage: boolean) => void;
55
+ export declare function redis_mergeNextPage(tree: RedisTreeModel, nextPage: RedisLoadResult): RedisTreeModel;
56
+ export declare function redis_markNodeExpanded(tree: RedisTreeModel, root: string, isExpanded: boolean): RedisTreeModel;
57
+ export declare function redis_showNextItems(tree: RedisTreeModel, root: string): RedisTreeModel;
58
+ export declare function redis_createNewModel(treeKeySeparator: string): RedisTreeModel;
59
+ export declare function redis_clearLoadedData(tree: RedisTreeModel): RedisTreeModel;
60
+ export declare function redis_getFlatList(tree: RedisTreeModel): RedisNodeModel[];
61
+ export interface SupportedRedisKeyType {
62
+ name: string;
63
+ label: string;
64
+ dbKeyFields: {
65
+ name: string;
66
+ cols?: number;
67
+ label?: string;
68
+ placeholder?: string;
69
+ }[];
70
+ dbKeyFieldsForGrid?: {
71
+ name: string;
72
+ cols?: number;
73
+ label?: string;
74
+ }[];
75
+ keyColumn?: string;
76
+ showItemList?: boolean;
77
+ showGeneratedId?: boolean;
78
+ }
79
+ export declare const supportedRedisKeyTypes: SupportedRedisKeyType[];
80
+ export declare function findSupportedRedisKeyType(type: string): SupportedRedisKeyType | undefined;
@@ -3,89 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.dbKeys_getFlatList = exports.dbKeys_clearLoadedData = exports.dbKeys_createNewModel = exports.dbKeys_showNextItems = exports.dbKeys_markNodeExpanded = exports.dbKeys_mergeNextPage = exports.DB_KEYS_SHOW_INCREMENT = void 0;
6
+ exports.findSupportedRedisKeyType = exports.supportedRedisKeyTypes = exports.redis_getFlatList = exports.redis_clearLoadedData = exports.redis_createNewModel = exports.redis_showNextItems = exports.redis_markNodeExpanded = exports.redis_mergeNextPage = exports.DB_KEYS_SHOW_INCREMENT = void 0;
7
7
  const sortBy_1 = __importDefault(require("lodash/sortBy"));
8
8
  exports.DB_KEYS_SHOW_INCREMENT = 100;
9
- // function dbKeys_findFolderNode(node: DbKeysNodeModel, root: string) {
10
- // if (node.type != 'dir') {
11
- // return null;
12
- // }
13
- // if (node.root === root) {
14
- // return node;
15
- // }
16
- // for (const child of node.children ?? []) {
17
- // const res = dbKeys_findFolderNode(child, root);
18
- // if (res) {
19
- // return res;
20
- // }
21
- // }
22
- // return null;
23
- // }
24
- // export async function dbKeys_loadKeysFromNode(
25
- // tree: DbKeysTreeModel,
26
- // callingRoot: string,
27
- // separator: string,
28
- // loader: DbKeysLoadFunction
29
- // ): Promise<DbKeysTreeModel> {
30
- // const callingRootNode = tree.dirsByKey[callingRoot];
31
- // if (!callingRootNode) {
32
- // return tree;
33
- // }
34
- // const newItems = await loader(callingRoot, callingRootNode.maxShowCount ?? SHOW_INCREMENT);
35
- // return {
36
- // ...tree,
37
- // childrenByKey: {
38
- // ...tree.childrenByKey,
39
- // [callingRoot]: newItems,
40
- // },
41
- // };
42
- // }
43
- // export async function dbKeys_loadMissing(tree: DbKeysTreeModel, loader: DbKeysLoadFunction): Promise<DbKeysTreeModel> {
44
- // const childrenByKey = { ...tree.childrenByKey };
45
- // const dirsByKey = { ...tree.dirsByKey };
46
- // for (const root in tree.dirsByKey) {
47
- // const dir = tree.dirsByKey[root];
48
- // if (dir.isExpanded && dir.shouldLoadNext) {
49
- // if (!tree.childrenByKey[root] || dir.hasNext) {
50
- // const loadCount = dir.maxShowCount && dir.shouldLoadNext ? dir.maxShowCount + SHOW_INCREMENT : SHOW_INCREMENT;
51
- // const items = await loader(root, loadCount + 1);
52
- // childrenByKey[root] = items.slice(0, loadCount);
53
- // dirsByKey[root] = {
54
- // ...dir,
55
- // shouldLoadNext: false,
56
- // maxShowCount: loadCount,
57
- // hasNext: items.length > loadCount,
58
- // };
59
- // for (const child of items.slice(0, loadCount)) {
60
- // if (child.type == 'dir' && !dirsByKey[child.root]) {
61
- // dirsByKey[child.root] = {
62
- // shouldLoadNext: false,
63
- // maxShowCount: null,
64
- // hasNext: false,
65
- // isExpanded: false,
66
- // type: 'dir',
67
- // level: dir.level + 1,
68
- // root: child.root,
69
- // text: child.text,
70
- // };
71
- // }
72
- // }
73
- // } else {
74
- // dirsByKey[root] = {
75
- // ...dir,
76
- // shouldLoadNext: false,
77
- // };
78
- // }
79
- // }
80
- // }
81
- // return {
82
- // ...tree,
83
- // dirsByKey,
84
- // childrenByKey,
85
- // refreshAll: false,
86
- // };
87
- // }
88
- function dbKeys_mergeNextPage(tree, nextPage) {
9
+ function redis_mergeNextPage(tree, nextPage) {
89
10
  const keyObjectsByKey = { ...tree.keyObjectsByKey };
90
11
  for (const keyObj of nextPage.keys) {
91
12
  const keyPath = keyObj.key.split(tree.treeKeySeparator);
@@ -151,8 +72,8 @@ function dbKeys_mergeNextPage(tree, nextPage) {
151
72
  dbsize: nextPage.dbsize,
152
73
  };
153
74
  }
154
- exports.dbKeys_mergeNextPage = dbKeys_mergeNextPage;
155
- function dbKeys_markNodeExpanded(tree, root, isExpanded) {
75
+ exports.redis_mergeNextPage = redis_mergeNextPage;
76
+ function redis_markNodeExpanded(tree, root, isExpanded) {
156
77
  const node = tree.dirStateByKey[root];
157
78
  return {
158
79
  ...tree,
@@ -165,8 +86,8 @@ function dbKeys_markNodeExpanded(tree, root, isExpanded) {
165
86
  },
166
87
  };
167
88
  }
168
- exports.dbKeys_markNodeExpanded = dbKeys_markNodeExpanded;
169
- function dbKeys_showNextItems(tree, root) {
89
+ exports.redis_markNodeExpanded = redis_markNodeExpanded;
90
+ function redis_showNextItems(tree, root) {
170
91
  var _a;
171
92
  const node = tree.dirStateByKey[root];
172
93
  return {
@@ -180,8 +101,8 @@ function dbKeys_showNextItems(tree, root) {
180
101
  },
181
102
  };
182
103
  }
183
- exports.dbKeys_showNextItems = dbKeys_showNextItems;
184
- function dbKeys_createNewModel(treeKeySeparator) {
104
+ exports.redis_showNextItems = redis_showNextItems;
105
+ function redis_createNewModel(treeKeySeparator) {
185
106
  const root = {
186
107
  level: 0,
187
108
  type: 'dir',
@@ -212,8 +133,8 @@ function dbKeys_createNewModel(treeKeySeparator) {
212
133
  loadedAll: false,
213
134
  };
214
135
  }
215
- exports.dbKeys_createNewModel = dbKeys_createNewModel;
216
- function dbKeys_clearLoadedData(tree) {
136
+ exports.redis_createNewModel = redis_createNewModel;
137
+ function redis_clearLoadedData(tree) {
217
138
  return {
218
139
  ...tree,
219
140
  childrenByKey: {},
@@ -227,21 +148,7 @@ function dbKeys_clearLoadedData(tree) {
227
148
  loadedAll: false,
228
149
  };
229
150
  }
230
- exports.dbKeys_clearLoadedData = dbKeys_clearLoadedData;
231
- // export function dbKeys_reloadFolder(tree: DbKeysTreeModel, root: string): DbKeysTreeModel {
232
- // return {
233
- // ...tree,
234
- // childrenByKey: _omit(tree.childrenByKey, root),
235
- // dirsByKey: {
236
- // ...tree.dirsByKey,
237
- // [root]: {
238
- // ...tree.dirsByKey[root],
239
- // shouldLoadNext: true,
240
- // hasNext: undefined,
241
- // },
242
- // },
243
- // };
244
- // }
151
+ exports.redis_clearLoadedData = redis_clearLoadedData;
245
152
  function addFlatItems(tree, root, res, visitedRoots = []) {
246
153
  const item = tree.dirStateByKey[root];
247
154
  if (!(item === null || item === void 0 ? void 0 : item.isExpanded)) {
@@ -259,9 +166,74 @@ function addFlatItems(tree, root, res, visitedRoots = []) {
259
166
  }
260
167
  }
261
168
  }
262
- function dbKeys_getFlatList(tree) {
169
+ function redis_getFlatList(tree) {
263
170
  const res = [];
264
171
  addFlatItems(tree, '', res);
265
172
  return res;
266
173
  }
267
- exports.dbKeys_getFlatList = dbKeys_getFlatList;
174
+ exports.redis_getFlatList = redis_getFlatList;
175
+ exports.supportedRedisKeyTypes = [
176
+ {
177
+ name: 'string',
178
+ label: 'String',
179
+ dbKeyFields: [{ name: 'value' }],
180
+ },
181
+ {
182
+ name: 'list',
183
+ label: 'List',
184
+ dbKeyFields: [{ name: 'value', cols: 12 }],
185
+ showItemList: true,
186
+ },
187
+ {
188
+ name: 'set',
189
+ label: 'Set',
190
+ dbKeyFields: [{ name: 'value', cols: 12 }],
191
+ keyColumn: 'value',
192
+ showItemList: true,
193
+ },
194
+ {
195
+ name: 'zset',
196
+ label: 'Sorted Set',
197
+ dbKeyFields: [
198
+ { name: 'member', cols: 8 },
199
+ { name: 'score', cols: 4 },
200
+ ],
201
+ keyColumn: 'member',
202
+ showItemList: true,
203
+ },
204
+ {
205
+ name: 'hash',
206
+ label: 'Hash',
207
+ dbKeyFields: [
208
+ { name: 'key', cols: 3, label: 'Field' },
209
+ { name: 'value', cols: 7 },
210
+ { name: 'ttl', cols: 2, label: 'TTL' },
211
+ ],
212
+ keyColumn: 'key',
213
+ showItemList: true,
214
+ },
215
+ {
216
+ name: 'stream',
217
+ label: 'Stream',
218
+ dbKeyFields: [
219
+ { name: 'field', cols: 6 },
220
+ { name: 'value', cols: 6 },
221
+ ],
222
+ dbKeyFieldsForGrid: [
223
+ { name: 'id', cols: 6 },
224
+ { name: 'value', cols: 6 },
225
+ ],
226
+ keyColumn: 'id',
227
+ showItemList: true,
228
+ showGeneratedId: true,
229
+ },
230
+ {
231
+ name: 'json',
232
+ label: 'JSON',
233
+ dbKeyFields: [{ name: 'value' }],
234
+ },
235
+ ];
236
+ function findSupportedRedisKeyType(type) {
237
+ return exports.supportedRedisKeyTypes.find(t => t.name === type);
238
+ }
239
+ exports.findSupportedRedisKeyType = findSupportedRedisKeyType;
@@ -466,6 +466,7 @@ function getIconForRedisType(type) {
466
466
  case 'binary':
467
467
  return 'img type-binary';
468
468
  case 'ReJSON-RL':
469
+ case 'JSON':
469
470
  return 'img type-rejson';
470
471
  default:
471
472
  return null;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "6.8.2",
2
+ "version": "7.0.0-alpha.12",
3
3
  "name": "dbgate-tools",
4
4
  "main": "lib/index.js",
5
5
  "typings": "lib/index.d.ts",
@@ -26,7 +26,7 @@
26
26
  ],
27
27
  "devDependencies": {
28
28
  "@types/node": "^13.7.0",
29
- "dbgate-types": "^6.8.2",
29
+ "dbgate-types": "^7.0.0-alpha.12",
30
30
  "jest": "^28.1.3",
31
31
  "ts-jest": "^28.0.7",
32
32
  "typescript": "^4.4.3"
@@ -34,7 +34,7 @@
34
34
  "dependencies": {
35
35
  "blueimp-md5": "^2.19.0",
36
36
  "dbgate-query-splitter": "^4.11.9",
37
- "dbgate-sqltree": "^6.8.2",
37
+ "dbgate-sqltree": "^7.0.0-alpha.12",
38
38
  "debug": "^4.3.4",
39
39
  "json-stable-stringify": "^1.0.1",
40
40
  "lodash": "^4.17.21",
@@ -1,60 +0,0 @@
1
- export declare const DB_KEYS_SHOW_INCREMENT = 100;
2
- export interface DbKeysNodeModelBase {
3
- text?: string;
4
- sortKey: string;
5
- key: string;
6
- count?: number;
7
- level: number;
8
- keyPath: string[];
9
- parentKey: string;
10
- }
11
- export interface DbKeysLeafNodeModel extends DbKeysNodeModelBase {
12
- type: 'string' | 'hash' | 'set' | 'list' | 'zset' | 'stream' | 'binary' | 'ReJSON-RL';
13
- }
14
- export interface DbKeysFolderNodeModel extends DbKeysNodeModelBase {
15
- type: 'dir';
16
- }
17
- export interface DbKeysFolderStateMode {
18
- key: string;
19
- visibleCount?: number;
20
- isExpanded?: boolean;
21
- }
22
- export interface DbKeysTreeModel {
23
- treeKeySeparator: string;
24
- root: DbKeysFolderNodeModel;
25
- dirsByKey: {
26
- [key: string]: DbKeysFolderNodeModel;
27
- };
28
- dirStateByKey: {
29
- [key: string]: DbKeysFolderStateMode;
30
- };
31
- childrenByKey: {
32
- [key: string]: DbKeysNodeModel[];
33
- };
34
- keyObjectsByKey: {
35
- [key: string]: DbKeysNodeModel;
36
- };
37
- scannedKeys: number;
38
- loadCount: number;
39
- dbsize: number;
40
- cursor: string;
41
- loadedAll: boolean;
42
- }
43
- export type DbKeysNodeModel = DbKeysLeafNodeModel | DbKeysFolderNodeModel;
44
- export interface DbKeyLoadedModel {
45
- key: string;
46
- type: 'string' | 'hash' | 'set' | 'list' | 'zset' | 'stream' | 'binary' | 'ReJSON-RL';
47
- count?: number;
48
- }
49
- export interface DbKeysLoadResult {
50
- nextCursor: string;
51
- keys: DbKeyLoadedModel[];
52
- dbsize: number;
53
- }
54
- export type DbKeysChangeModelFunction = (func: (model: DbKeysTreeModel) => DbKeysTreeModel, loadNextPage: boolean) => void;
55
- export declare function dbKeys_mergeNextPage(tree: DbKeysTreeModel, nextPage: DbKeysLoadResult): DbKeysTreeModel;
56
- export declare function dbKeys_markNodeExpanded(tree: DbKeysTreeModel, root: string, isExpanded: boolean): DbKeysTreeModel;
57
- export declare function dbKeys_showNextItems(tree: DbKeysTreeModel, root: string): DbKeysTreeModel;
58
- export declare function dbKeys_createNewModel(treeKeySeparator: string): DbKeysTreeModel;
59
- export declare function dbKeys_clearLoadedData(tree: DbKeysTreeModel): DbKeysTreeModel;
60
- export declare function dbKeys_getFlatList(tree: DbKeysTreeModel): DbKeysNodeModel[];