diff --git a/package.json b/package.json index 7de9966..a1ad20d 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,7 @@ "enableREQueryAndSortCriteria": true, "relationships": { "entityNameSeparator": "." - }, - "checkAwsCredentials": true + } } }, "description": "Hackolade plugin for Amazon DocumentDB", diff --git a/reverse_engineering/api.js b/reverse_engineering/api.js index f5f3ac0..30da3aa 100644 --- a/reverse_engineering/api.js +++ b/reverse_engineering/api.js @@ -39,21 +39,60 @@ module.exports = { } }, - async getDbCollectionsNames(connectionInfo, logger, cb, app) { - const sshService = app.require('@hackolade/ssh-service'); - + async validateConnection(connectionInfo, logger, cb) { const log = createLogger({ - title: 'Retrieving databases and collections information', + title: 'Validate connection', hiddenKeys: connectionInfo.hiddenKeys, logger, }); try { logger.clear(); - log.info(getSystemInfo(connectionInfo.appVersion)); log.info(connectionInfo, 'connectionInfo'); + const docDbClientInstance = await getDocDbClientInstance({ + connectionInfo: { + ...connectionInfo, + ...parseHost(connectionInfo.host, log), + }, + logger: log, + }); + + log.info('Getting cluster information'); + + try { + const cluster = await docDbClientInstance.getCluster(); + if (!cluster) { + return cb(null, "Cluster doesn't exist in the chosen region."); + } + } catch (err) { + return cb(null, err); + } + + log.info('Cluster information retrieved successfully'); + + cb(); + } catch (error) { + log.error(error); + + return cb({ + message: error.message, + stack: error.stack, + }); + } + }, + + async getDbCollectionsNames(connectionInfo, logger, cb, app) { + const sshService = app.require('@hackolade/ssh-service'); + + const log = createLogger({ + title: 'Retrieving databases and collections information', + hiddenKeys: connectionInfo.hiddenKeys, + logger, + }); + + try { await getDocDbClientInstance({ connectionInfo: { ...connectionInfo,