Consolidate 2 context endpoints to just one (#24276)

This commit is contained in:
Lewis Sanchez
2023-09-05 20:20:21 -07:00
committed by GitHub
parent 1b1028179b
commit 306af5645b
7 changed files with 5 additions and 77 deletions

View File

@@ -1567,10 +1567,6 @@ export interface ServerContextualizationParams {
ownerUri: string; ownerUri: string;
} }
export namespace GenerateServerContextualizationRequest {
export const type = new RequestType<ServerContextualizationParams, azdata.contextualization.GenerateServerContextualizationResult, void, void>('metadata/generateServerContext');
}
export namespace GetServerContextualizationRequest { export namespace GetServerContextualizationRequest {
export const type = new RequestType<ServerContextualizationParams, azdata.contextualization.GetServerContextualizationResult, void, void>('metadata/getServerContext'); export const type = new RequestType<ServerContextualizationParams, azdata.contextualization.GetServerContextualizationResult, void, void>('metadata/getServerContext');
} }

View File

@@ -1310,7 +1310,7 @@ export class ExecutionPlanServiceFeature extends SqlOpsFeature<undefined> {
*/ */
export class ServerContextualizationServiceFeature extends SqlOpsFeature<undefined> { export class ServerContextualizationServiceFeature extends SqlOpsFeature<undefined> {
private static readonly messagesTypes: RPCMessageType[] = [ private static readonly messagesTypes: RPCMessageType[] = [
contracts.GenerateServerContextualizationRequest.type contracts.GetServerContextualizationRequest.type
]; ];
constructor(client: SqlOpsDataClient) { constructor(client: SqlOpsDataClient) {
@@ -1330,20 +1330,6 @@ export class ServerContextualizationServiceFeature extends SqlOpsFeature<undefin
protected registerProvider(options: undefined): Disposable { protected registerProvider(options: undefined): Disposable {
const client = this._client; const client = this._client;
const generateServerContextualization = (ownerUri: string): Thenable<azdata.contextualization.GenerateServerContextualizationResult> => {
const params: contracts.ServerContextualizationParams = {
ownerUri: ownerUri
};
return client.sendRequest(contracts.GenerateServerContextualizationRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(contracts.GenerateServerContextualizationRequest.type, e);
return Promise.reject(e);
}
);
};
const getServerContextualization = (ownerUri: string): Thenable<azdata.contextualization.GetServerContextualizationResult> => { const getServerContextualization = (ownerUri: string): Thenable<azdata.contextualization.GetServerContextualizationResult> => {
const params: contracts.ServerContextualizationParams = { const params: contracts.ServerContextualizationParams = {
ownerUri: ownerUri ownerUri: ownerUri
@@ -1360,7 +1346,6 @@ export class ServerContextualizationServiceFeature extends SqlOpsFeature<undefin
return azdata.dataprotocol.registerServerContextualizationProvider({ return azdata.dataprotocol.registerServerContextualizationProvider({
providerId: client.providerId, providerId: client.providerId,
generateServerContextualization: generateServerContextualization,
getServerContextualization: getServerContextualization getServerContextualization: getServerContextualization
}); });
} }

View File

@@ -1783,13 +1783,6 @@ declare module 'azdata' {
} }
export namespace contextualization { export namespace contextualization {
export interface GenerateServerContextualizationResult {
/**
* The generated server context.
*/
context: string | undefined;
}
export interface GetServerContextualizationResult { export interface GetServerContextualizationResult {
/** /**
* The retrieved server context. * The retrieved server context.
@@ -1798,12 +1791,6 @@ declare module 'azdata' {
} }
export interface ServerContextualizationProvider extends DataProvider { export interface ServerContextualizationProvider extends DataProvider {
/**
* Generates server context.
* @param ownerUri The URI of the connection to generate context for.
*/
generateServerContextualization(ownerUri: string): Thenable<GenerateServerContextualizationResult>;
/** /**
* Gets server context, which can be in the form of create scripts but is left up each provider. * Gets server context, which can be in the form of create scripts but is left up each provider.
* @param ownerUri The URI of the connection to get context for. * @param ownerUri The URI of the connection to get context for.

View File

@@ -573,10 +573,9 @@ export class MainThreadDataProtocol extends Disposable implements MainThreadData
}); });
} }
// Database server contextualization handler // Server contextualization handler
public $registerServerContextualizationProvider(providerId: string, handle: number): void { public $registerServerContextualizationProvider(providerId: string, handle: number): void {
this._serverContextualizationService.registerProvider(providerId, <azdata.contextualization.ServerContextualizationProvider>{ this._serverContextualizationService.registerProvider(providerId, <azdata.contextualization.ServerContextualizationProvider>{
generateServerContextualization: (ownerUri: string) => this._proxy.$generateServerContextualization(handle, ownerUri),
getServerContextualization: (ownerUri: string) => this._proxy.$getServerContextualization(handle, ownerUri) getServerContextualization: (ownerUri: string) => this._proxy.$getServerContextualization(handle, ownerUri)
}); });
} }

View File

@@ -970,11 +970,7 @@ export class ExtHostDataProtocol extends ExtHostDataProtocolShape {
return this._resolveProvider<azdata.executionPlan.ExecutionPlanProvider>(handle).isExecutionPlan(value); return this._resolveProvider<azdata.executionPlan.ExecutionPlanProvider>(handle).isExecutionPlan(value);
} }
// Database Server Contextualization API // Server Contextualization API
public override $generateServerContextualization(handle: number, ownerUri: string): Thenable<azdata.contextualization.GenerateServerContextualizationResult> {
return this._resolveProvider<azdata.contextualization.ServerContextualizationProvider>(handle).generateServerContextualization(ownerUri);
}
public override $getServerContextualization(handle: number, ownerUri: string): Thenable<azdata.contextualization.GetServerContextualizationResult> { public override $getServerContextualization(handle: number, ownerUri: string): Thenable<azdata.contextualization.GetServerContextualizationResult> {
return this._resolveProvider<azdata.contextualization.ServerContextualizationProvider>(handle).getServerContextualization(ownerUri); return this._resolveProvider<azdata.contextualization.ServerContextualizationProvider>(handle).getServerContextualization(ownerUri);

View File

@@ -595,10 +595,6 @@ export abstract class ExtHostDataProtocolShape {
* Determines if the provided value is an execution plan and returns the appropriate file extension. * Determines if the provided value is an execution plan and returns the appropriate file extension.
*/ */
$isExecutionPlan(handle: number, value: string): Thenable<azdata.executionPlan.IsExecutionPlanResult> { throw ni(); } $isExecutionPlan(handle: number, value: string): Thenable<azdata.executionPlan.IsExecutionPlanResult> { throw ni(); }
/**
* Generates server context.
*/
$generateServerContextualization(handle: number, ownerUri: string): Thenable<azdata.contextualization.GenerateServerContextualizationResult> { throw ni(); }
/** /**
* Gets server context. * Gets server context.
*/ */

View File

@@ -75,43 +75,12 @@ export class ServerContextualizationService extends Disposable implements IServe
const getServerContextualizationResult = await this.getServerContextualization(uri); const getServerContextualizationResult = await this.getServerContextualization(uri);
if (getServerContextualizationResult.context) { if (getServerContextualizationResult.context) {
this._logService.info(`Server contextualization was previously generated for the URI (${uri}) connection, so sending that to Copilot for context.`); this._logService.info(`Server contextualization was retrieved for the URI (${uri}) connection, so sending that to Copilot for context.`);
await this.sendServerContextualizationToCopilot(getServerContextualizationResult.context); await this.sendServerContextualizationToCopilot(getServerContextualizationResult.context);
} }
else { else {
this._logService.info(`Server contextualization was not previously generated for the URI (${uri}) connection. Generating now...`); this._logService.warn(`Server contextualization was not generated for the URI (${uri}) connection, so no context will be sent to Copilot.`);
const generateServerContextualizationResult = await this.generateServerContextualization(uri);
if (generateServerContextualizationResult.context) {
this._logService.info(`Server contextualization was generated for the URI (${uri}) connection, so sending that to Copilot.`);
await this.sendServerContextualizationToCopilot(generateServerContextualizationResult.context);
}
else {
this._logService.warn(`Server contextualization was not generated for the URI (${uri}) connection, so no context will be sent to Copilot.`);
}
}
}
/**
* Generates server context
* @param ownerUri The URI of the connection to generate context for.
*/
private async generateServerContextualization(ownerUri: string): Promise<azdata.contextualization.GenerateServerContextualizationResult> {
const providerName = this._connectionManagementService.getProviderIdFromUri(ownerUri);
const handler = this.getProvider(providerName);
if (handler) {
this._logService.info(`Generating server contextualization for ${ownerUri}`);
return await handler.generateServerContextualization(ownerUri);
}
else {
this._logService.info(`No server contextualization provider found for ${ownerUri}`);
return Promise.resolve({
context: undefined
});
} }
} }