@mondaycom/apps-cli
Version:
A cli tool to manage apps (and monday-code projects) in monday.com
41 lines (40 loc) • 1.68 kB
JavaScript
import chalk from 'chalk';
import { appStorageConnectionStringUrl } from '../consts/urls.js';
import { execute } from './api-service.js';
import { databaseConnectionStringResponseSchema } from './schemas/database-service-schemas.js';
import { addRegionToQuery } from '../utils/region.js';
import { HttpError } from '../types/errors/index.js';
import { HttpMethodTypes } from '../types/services/api-service.js';
import logger from '../utils/logger.js';
import { appsUrlBuilder } from '../utils/urls-builder.js';
const getPublicIp = async () => {
const response = await fetch('https://checkip.amazonaws.com/');
if (!response.ok) {
throw new Error('Could not fetch public IP address.');
}
const ip = await response.text();
return ip.trim();
};
export const getDatabaseConnectionString = async (appId, region) => {
const DEBUG_TAG = 'get_database_connection_string';
try {
const baseUrl = appStorageConnectionStringUrl(appId);
const url = appsUrlBuilder(baseUrl);
const publicIp = await getPublicIp();
logger.log(chalk.dim(`Retrieving database connection string... client IP: ${publicIp}`));
const response = await execute({
url,
headers: { Accept: 'application/json' },
method: HttpMethodTypes.GET,
query: addRegionToQuery({ clientIp: publicIp }, region),
}, databaseConnectionStringResponseSchema);
return response;
}
catch (error) {
logger.debug(error, DEBUG_TAG);
if (error instanceof HttpError) {
throw error;
}
throw new Error('Failed to fetch database connection string.');
}
};