UNPKG

firebase-tools

Version:
41 lines (40 loc) 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.command = void 0; const command_1 = require("../command"); const projectUtils_1 = require("../projectUtils"); const fileUtils_1 = require("../dataconnect/fileUtils"); const error_1 = require("../error"); const requireAuth_1 = require("../requireAuth"); const requirePermissions_1 = require("../requirePermissions"); const ensureApis_1 = require("../dataconnect/ensureApis"); const permissionsSetup_1 = require("../gcp/cloudsql/permissionsSetup"); const permissions_1 = require("../gcp/cloudsql/permissions"); const schemaMigration_1 = require("../dataconnect/schemaMigration"); const connect_1 = require("../gcp/cloudsql/connect"); const cloudSqlAdminClient = require("../gcp/cloudsql/cloudsqladmin"); exports.command = new command_1.Command("dataconnect:sql:setup [serviceId]") .description("set up your CloudSQL database") .before(requirePermissions_1.requirePermissions, [ "firebasedataconnect.services.list", "firebasedataconnect.schemas.list", "firebasedataconnect.schemas.update", "cloudsql.instances.connect", ]) .before(requireAuth_1.requireAuth) .action(async (serviceId, options) => { var _a; const projectId = (0, projectUtils_1.needProjectId)(options); await (0, ensureApis_1.ensureApis)(projectId); const serviceInfo = await (0, fileUtils_1.pickService)(projectId, options.config, serviceId); const instanceId = (_a = serviceInfo.dataConnectYaml.schema.datasource.postgresql) === null || _a === void 0 ? void 0 : _a.cloudSql.instanceId; if (!instanceId) { throw new error_1.FirebaseError("dataconnect.yaml is missing field schema.datasource.postgresql.cloudsql.instanceId"); } const { serviceName, instanceName, databaseId } = (0, schemaMigration_1.getIdentifiers)(serviceInfo.schema); await (0, schemaMigration_1.ensureServiceIsConnectedToCloudSql)(serviceName, instanceName, databaseId, true); const { user, mode } = await (0, connect_1.getIAMUser)(options); await cloudSqlAdminClient.createUser(projectId, instanceId, mode, user); const schemaInfo = await (0, permissionsSetup_1.getSchemaMetadata)(instanceId, databaseId, permissions_1.DEFAULT_SCHEMA, options); await (0, permissionsSetup_1.setupSQLPermissions)(instanceId, databaseId, schemaInfo, options); });