Browse Source

add setting to enable lazy mode

pull/30/head
cweijan 5 years ago
parent
commit
6100e5194e
  1. 3
      README.md
  2. 5
      package.json
  3. 1
      src/common/constants.ts
  4. 18
      src/provider/Complection/chain/tableChain.ts
  5. 8
      src/provider/treeDataProvider.ts

3
README.md

@ -68,6 +68,9 @@ MySQL Client For Visual Studio Code
// open query result as full screen.
"vscode-mysql.fullQueryScreen":false,
// Load database meta info when connected, If your machine's performance is low, turn it off.
"vscode-mysql.fullQueryScreen":true,
// set max tables show of each database.
"vscode-mysql.maxTableCount": 500
}

5
package.json

@ -723,6 +723,11 @@
"default": false,
"description": "Support delimiter when import sql."
},
"vscode-mysql.loadMetaOnConnect": {
"type": "boolean",
"default": true,
"description": "Load database meta info when connected, If your machine's performance is low, turn it off."
},
"vscode-mysql.fullQueryScreen": {
"type": "boolean",
"default": false,

1
src/common/constants.ts

@ -26,6 +26,7 @@ export enum CacheKey {
export enum ConfigKey {
MAX_TABLE_COUNT = "maxTableCount",
ENABLE_DELIMITER = "enableDelimiter",
LOAD_META_ON_CONNECT = "loadMetaOnConnect",
QUERY_FULL_SCREEN = "fullQueryScreen",
}

18
src/provider/Complection/chain/tableChain.ts

@ -6,22 +6,23 @@ import { TableNode } from "../../../model/main/tableNode";
import { ComplectionChain, ComplectionContext } from "../complectionContext";
import { Util } from "../../../common/util";
import { ConnectionManager } from "../../../service/connectionManager";
import { TableGroup } from "../../../model/main/tableGroup";
export class TableChain implements ComplectionChain {
public getComplection(complectionContext: ComplectionContext): vscode.CompletionItem[] {
public async getComplection(complectionContext: ComplectionContext): Promise<vscode.CompletionItem[]> {
if (complectionContext.preChart == ".") {
const temp = this.generateTableComplectionItem(complectionContext.preWord);
const temp = await this.generateTableComplectionItem(complectionContext.preWord);
if (temp.length == 0) {
return null;
} else {
return this.generateTableComplectionItem(complectionContext.preWord);
return await this.generateTableComplectionItem(complectionContext.preWord);
}
}
if (complectionContext.preWord && complectionContext.preWord.match(/\b(into|from|update|table|join)\b/ig)) {
return this.generateTableComplectionItem();
return await this.generateTableComplectionItem();
}
return null;
}
@ -30,7 +31,7 @@ export class TableChain implements ComplectionChain {
return true;
}
private generateTableComplectionItem(inputWord?: string): vscode.CompletionItem[] {
private async generateTableComplectionItem(inputWord?: string): Promise<vscode.CompletionItem[]> {
let tableNodes: Node[] = [];
const tableNames: string[] = [];
@ -41,11 +42,14 @@ export class TableChain implements ComplectionChain {
}
if (inputWord) {
const connectcionid = lcp.getConnectId();
DatabaseCache.getDatabaseListOfConnection(connectcionid).forEach((databaseNode) => {
for (const databaseNode of DatabaseCache.getDatabaseListOfConnection(connectcionid)) {
if (databaseNode.database === inputWord) {
tableNodes = DatabaseCache.getTableListOfDatabase(databaseNode.id);
if (tableNodes == null || tableNodes.length == 0) {
tableNodes = await new TableGroup(databaseNode.info).getChildren()
}
}
});
}
} else {
const databaseid = `${lcp.getConnectId()}_${lcp.database}`;
const tableList = DatabaseCache.getTableListOfDatabase(databaseid);

8
src/provider/treeDataProvider.ts

@ -1,12 +1,12 @@
import * as path from "path";
import * as vscode from "vscode";
import { CacheKey } from "../common/constants";
import { CacheKey, ConfigKey } from "../common/constants";
import { ConnectionManager } from "../service/connectionManager";
import { DatabaseCache } from "../service/common/databaseCache";
import { ConnectionNode } from "../model/database/connectionNode";
import { DatabaseNode } from "../model/database/databaseNode";
import { Node } from "../model/interface/node";
import { UserGroup } from "../model/database/userGroup";
import { Global } from "../common/global";
export class DbTreeDataProvider implements vscode.TreeDataProvider<Node> {
@ -16,7 +16,9 @@ export class DbTreeDataProvider implements vscode.TreeDataProvider<Node> {
constructor(private context: vscode.ExtensionContext) {
DbTreeDataProvider.instance = this
this.init()
if (Global.getConfig<boolean>(ConfigKey.LOAD_META_ON_CONNECT)) {
this.init()
}
}
/**

Loading…
Cancel
Save