UNPKG

@mondaycom/apps-cli

Version:

A cli tool to manage apps (and monday-code projects) in monday.com

41 lines (40 loc) 1.68 kB
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.'); } };