Table Designer - Save Changes feature and Editor related features (#17335)

* table designer add/remove row support

* save changes and editor support

* address comments

* fix build error

* including missing change

* lower case request name
This commit is contained in:
Alan Ren
2021-10-11 15:09:25 -07:00
committed by GitHub
parent e5f50499ce
commit ce4459a7b2
23 changed files with 495 additions and 90 deletions

View File

@@ -1033,6 +1033,11 @@ export interface TableDesignerEditRequestParams {
data: azdata.designers.DesignerData
}
export interface SaveTableDesignerChangesRequestParams {
tableInfo: azdata.designers.TableInfo,
data: azdata.designers.DesignerData
}
export namespace GetTableDesignerInfoRequest {
export const type = new RequestType<azdata.designers.TableInfo, azdata.designers.TableDesignerInfo, void, void>('tabledesigner/gettabledesignerinfo');
}
@@ -1041,4 +1046,8 @@ export namespace ProcessTableDesignerEditRequest {
export const type = new RequestType<TableDesignerEditRequestParams, azdata.designers.DesignerEditResult, void, void>('tabledesigner/processedit');
}
export namespace SaveTableDesignerChangesRequest {
export const type = new RequestType<SaveTableDesignerChangesRequestParams, void, void, void>('tabledesigner/savechanges');
}
// ------------------------------- < Table Designer > ------------------------------------

View File

@@ -1108,7 +1108,7 @@ export class TableDesignerFeature extends SqlOpsFeature<undefined> {
protected registerProvider(options: undefined): Disposable {
const client = this._client;
const getTableDesignerInfo = async (tableInfo: azdata.designers.TableInfo): Promise<azdata.designers.TableDesignerInfo> => {
const getTableDesignerInfo = (tableInfo: azdata.designers.TableInfo): Thenable<azdata.designers.TableDesignerInfo> => {
try {
return client.sendRequest(contracts.GetTableDesignerInfoRequest.type, tableInfo);
}
@@ -1117,7 +1117,7 @@ export class TableDesignerFeature extends SqlOpsFeature<undefined> {
return Promise.reject(e);
}
};
const processTableEdit = async (tableInfo: azdata.designers.TableInfo, data: azdata.designers.DesignerData, tableChangeInfo: azdata.designers.DesignerEdit): Promise<azdata.designers.DesignerEditResult> => {
const processTableEdit = (tableInfo: azdata.designers.TableInfo, data: azdata.designers.DesignerData, tableChangeInfo: azdata.designers.DesignerEdit): Thenable<azdata.designers.DesignerEditResult> => {
let params: contracts.TableDesignerEditRequestParams = {
tableInfo: tableInfo,
data: data,
@@ -1132,10 +1132,25 @@ export class TableDesignerFeature extends SqlOpsFeature<undefined> {
}
};
const saveTable = (tableInfo: azdata.designers.TableInfo, data: azdata.designers.DesignerData): Thenable<void> => {
let params: contracts.SaveTableDesignerChangesRequestParams = {
tableInfo: tableInfo,
data: data
};
try {
return client.sendRequest(contracts.SaveTableDesignerChangesRequest.type, params);
}
catch (e) {
client.logFailedRequest(contracts.SaveTableDesignerChangesRequest.type, e);
return Promise.reject(e);
}
};
return azdata.dataprotocol.registerTableDesignerProvider({
providerId: client.providerId,
getTableDesignerInfo,
processTableEdit
processTableEdit,
saveTable
});
}
}

View File

@@ -18,12 +18,17 @@ export function registerTableDesignerCommands(appContext: AppContext) {
}));
appContext.extensionContext.subscriptions.push(vscode.commands.registerCommand('mssql.designTable', async (context: azdata.ObjectExplorerContext) => {
const server = context.connectionProfile.serverName;
const database = context.connectionProfile.databaseName;
const schema = context.nodeInfo.metadata.schema;
const name = context.nodeInfo.metadata.name;
await azdata.designers.openTableDesigner(sqlProviderName, {
server: context.connectionProfile.serverName,
database: context.connectionProfile.databaseName,
server: server,
database: database,
isNewTable: false,
name: context.nodeInfo.metadata.name,
schema: context.nodeInfo.metadata.schema
name: name,
schema: schema,
id: `${server}|${database}|${schema}|${name}`
});
}));