From 4b055d4ae5af19d72f50d7413de646b1e343cb81 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Fri, 10 May 2024 10:35:14 -0700 Subject: [PATCH] merge + nits --- firebase-vscode/src/data-connect/index.ts | 14 ++++++----- .../src/data-connect/language-client.ts | 6 +---- src/dataconnect/provisionCloudSql.ts | 23 +++++++++---------- 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/firebase-vscode/src/data-connect/index.ts b/firebase-vscode/src/data-connect/index.ts index b8755760806..f3fdf8febd0 100644 --- a/firebase-vscode/src/data-connect/index.ts +++ b/firebase-vscode/src/data-connect/index.ts @@ -153,17 +153,19 @@ export function registerFdc( ); const schemaCodeLensProvider = new SchemaCodeLensProvider(emulatorController); + // activate language client/serer let client: LanguageClient; + const lsOutputChannel: vscode.OutputChannel = vscode.window.createOutputChannel( + "Firebase GraphQL Language Server", + ); + // setup new language client on config change context.subscriptions.push({ dispose: effect(() => { const configs = dataConnectConfigs.value?.tryReadValue; if (client) client.stop(); if (configs && configs.values.length > 0) { - client = setupLanguageClient( - context, - configs, - ); + client = setupLanguageClient(context, configs, lsOutputChannel); vscode.commands.executeCommand("fdc-graphql.start"); } }), @@ -179,7 +181,7 @@ export function registerFdc( vscode.commands.executeCommand( "firebase.dataConnect.executeIntrospection", ); - runEmulatorIssuesStream(configs,fdcService.localEndpoint.value); + runEmulatorIssuesStream(configs, fdcService.localEndpoint.value); runDataConnectCompiler(configs, fdcService.localEndpoint.value); } }), @@ -205,7 +207,7 @@ export function registerFdc( return Disposable.from( codeActions, selectedProjectStatus, - {dispose: sub1}, + { dispose: sub1 }, { dispose: effect(() => { selectedProjectStatus.text = `$(mono-firebase) ${ diff --git a/firebase-vscode/src/data-connect/language-client.ts b/firebase-vscode/src/data-connect/language-client.ts index c4ca40e4222..32882606257 100644 --- a/firebase-vscode/src/data-connect/language-client.ts +++ b/firebase-vscode/src/data-connect/language-client.ts @@ -12,12 +12,8 @@ import { ResolvedDataConnectConfigs } from "./config"; export function setupLanguageClient( context, configs: ResolvedDataConnectConfigs, + outputChannel: vscode.OutputChannel, ) { - // activate language client/serer - const outputChannel: vscode.OutputChannel = vscode.window.createOutputChannel( - "Firebase GraphQL Language Server", - ); - const serverPath = path.join("dist", "server.js"); const serverModule = context.asAbsolutePath(serverPath); diff --git a/src/dataconnect/provisionCloudSql.ts b/src/dataconnect/provisionCloudSql.ts index f3328d95f58..16112212453 100755 --- a/src/dataconnect/provisionCloudSql.ts +++ b/src/dataconnect/provisionCloudSql.ts @@ -27,14 +27,15 @@ export async function provisionCloudSql(args: { const existingInstance = await cloudSqlAdminClient.getInstance(projectId, instanceId); silent || utils.logLabeledBullet("dataconnect", `Found existing instance ${instanceId}.`); connectionName = existingInstance?.connectionName || ""; - const why = checkInstanceConfig(existingInstance, enableGoogleMlIntegration); + const why = getUpdateReason(existingInstance, enableGoogleMlIntegration); if (why) { - // TODO: Return message from checkInstanceConfig to explain exactly what changes are made silent || utils.logLabeledBullet( "dataconnect", `Instance ${instanceId} settings not compatible with Firebase Data Connect. ` + - `Updating instance to ${why}. This may take a few minutes...`, + `Updating instance. This may take a few minutes...` + + why + + "\n", ); await promiseWithSpinner( () => @@ -103,26 +104,24 @@ export async function provisionCloudSql(args: { /** * Validate that existing CloudSQL instances have the necessary settings. */ -export function checkInstanceConfig( - instance: Instance, - requireGoogleMlIntegration: boolean, -): string | false { +export function getUpdateReason(instance: Instance, requireGoogleMlIntegration: boolean): string { + let reason = ""; const settings = instance.settings; // CloudSQL instances must have public IP enabled to be used with Firebase Data Connect. if (!settings.ipConfiguration?.ipv4Enabled) { - return "enable public IP"; + reason += "\n - to enable public IP"; } if (requireGoogleMlIntegration) { if (!settings.enableGoogleMlIntegration) { - return "enable Google ML integration"; + reason += "\n - to enable Google ML integration"; } if ( !settings.databaseFlags?.some( (f) => f.name === "cloudsql.enable_google_ml_integration" && f.value === "on", ) ) { - return "enable Google ML integration database flag"; + reason += "\n - to enable Google ML integration database flag"; } } @@ -132,8 +131,8 @@ export function checkInstanceConfig( (f) => f.name === "cloudsql.iam_authentication" && f.value === "on", ) ?? false; if (!isIamEnabled) { - return "enable IAM authentication database flag"; + reason += "\n - to enable IAM authentication database flag"; } - return false; + return reason; }