Skip to content

Commit 2014bc2

Browse files
feat: Make PostgreSql#database and PostgreSql#cloudSql optional (#8989)
* feat: Make PostgreSql#database and PostgreSql#cloudSql optional --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
1 parent 69ca585 commit 2014bc2

File tree

6 files changed

+13
-11
lines changed

6 files changed

+13
-11
lines changed

src/commands/dataconnect-services-list.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export const command = new Command("dataconnect:services:list")
4040
const connectors = await client.listConnectors(service.name);
4141
const serviceName = names.parseServiceName(service.name);
4242
const postgresDatasource = schema?.datasources.find((d) => d.postgresql);
43-
const instanceName = postgresDatasource?.postgresql?.cloudSql.instance ?? "";
43+
const instanceName = postgresDatasource?.postgresql?.cloudSql?.instance ?? "";
4444
const instanceId = instanceName.split("/").pop();
4545
const dbId = postgresDatasource?.postgresql?.database ?? "";
4646
const dbName = `CloudSQL Instance: ${instanceId}\nDatabase: ${dbId}`;

src/dataconnect/schemaMigration.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -342,12 +342,14 @@ export function getIdentifiers(schema: Schema): {
342342
const postgresDatasource = schema.datasources.find((d) => d.postgresql);
343343
const databaseId = postgresDatasource?.postgresql?.database;
344344
if (!databaseId) {
345-
throw new FirebaseError("Service does not have a postgres datasource, cannot migrate");
345+
throw new FirebaseError(
346+
"Data Connect schema must have a postgres datasource with a database name.",
347+
);
346348
}
347-
const instanceName = postgresDatasource?.postgresql?.cloudSql.instance;
349+
const instanceName = postgresDatasource?.postgresql?.cloudSql?.instance;
348350
if (!instanceName) {
349351
throw new FirebaseError(
350-
"tried to migrate schema but instance name was not provided in dataconnect.yaml",
352+
"Data Connect schema must have a postgres datasource with a CloudSQL instance.",
351353
);
352354
}
353355
const instanceId = instanceName.split("/").pop()!;
@@ -611,10 +613,10 @@ export async function ensureServiceIsConnectedToCloudSql(
611613

612614
const postgresDatasource = currentSchema.datasources.find((d) => d.postgresql);
613615
const postgresql = postgresDatasource?.postgresql;
614-
if (postgresql?.cloudSql.instance !== instanceId) {
616+
if (postgresql?.cloudSql?.instance !== instanceId) {
615617
logLabeledWarning(
616618
"dataconnect",
617-
`Switching connected Cloud SQL instance\nFrom ${postgresql?.cloudSql.instance}\nTo ${instanceId}`,
619+
`Switching connected Cloud SQL instance\nFrom ${postgresql?.cloudSql?.instance}\nTo ${instanceId}`,
618620
);
619621
}
620622
if (postgresql?.database !== databaseId) {

src/dataconnect/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ export interface Datasource {
3232
export type SchemaValidation = "STRICT" | "COMPATIBLE";
3333

3434
export interface PostgreSql {
35-
database: string;
36-
cloudSql: CloudSqlInstance;
35+
database?: string;
36+
cloudSql?: CloudSqlInstance;
3737
schemaValidation?: SchemaValidation | "NONE" | "SQL_SCHEMA_VALIDATION_UNSPECIFIED";
3838
}
3939

src/deploy/dataconnect/deploy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export default async function (
8585
.map(async (s) => {
8686
const postgresDatasource = s.schema.datasources.find((d) => d.postgresql);
8787
if (postgresDatasource) {
88-
const instanceId = postgresDatasource.postgresql?.cloudSql.instance.split("/").pop();
88+
const instanceId = postgresDatasource.postgresql?.cloudSql?.instance.split("/").pop();
8989
const databaseId = postgresDatasource.postgresql?.database;
9090
if (!instanceId || !databaseId) {
9191
return Promise.resolve();

src/deploy/dataconnect/prepare.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ export default async function (context: any, options: DeployOptions): Promise<vo
8181
.map(async (s) => {
8282
const postgresDatasource = s.schema.datasources.find((d) => d.postgresql);
8383
if (postgresDatasource) {
84-
const instanceId = postgresDatasource.postgresql?.cloudSql.instance.split("/").pop();
84+
const instanceId = postgresDatasource.postgresql?.cloudSql?.instance.split("/").pop();
8585
const databaseId = postgresDatasource.postgresql?.database;
8686
if (!instanceId || !databaseId) {
8787
return Promise.resolve();

src/init/features/dataconnect/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ async function promptForExistingServices(setup: Setup, info: RequiredInfo): Prom
281281
info.connectors = [emptyConnector];
282282
if (choice.schema) {
283283
const primaryDatasource = choice.schema.datasources.find((d) => d.postgresql);
284-
if (primaryDatasource?.postgresql?.cloudSql.instance) {
284+
if (primaryDatasource?.postgresql?.cloudSql?.instance) {
285285
const instanceName = parseCloudSQLInstanceName(
286286
primaryDatasource.postgresql.cloudSql.instance,
287287
);

0 commit comments

Comments
 (0)