const createPool = async () => {
const config = {pool: {}, options: {}};
// Check if a Secret Manager secret version is defined
// If a version is defined, retrieve the secret from Secret Manager and set as the DB_PASS
const {CLOUD_SQL_CREDENTIALS_SECRET} = process.env;
if (CLOUD_SQL_CREDENTIALS_SECRET) {
const secrets = await accessSecretVersion(CLOUD_SQL_CREDENTIALS_SECRET);
try {
process.env.DB_PASS = secrets.toString();
} catch (err) {
err.message = `Unable to parse secret from Secret Manager. Make sure that the secret is JSON formatted: \n ${err.message} `;
throw err;
}
}
config.user = process.env.DB_USER; // e.g. 'my-db-user'
config.password = process.env.DB_PASS; // e.g. 'my-db-password'
config.database = process.env.DB_NAME; // e.g. 'my-database'
// set the server to '172.17.0.1' when connecting from App Engine Flex
config.server = process.env.DEPLOYED ? '172.17.0.1' : '127.0.0.1';
config.port = 1433;
// ...
config.options.trustServerCertificate = true;
return await mssql.connect(config);
};