UNPKG

@aws-cdk/aws-redshift-alpha

Version:

The CDK Construct Library for AWS::Redshift

36 lines 5.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeStatement = executeStatement; /* eslint-disable-next-line import/no-extraneous-dependencies */ const client_redshift_data_1 = require("@aws-sdk/client-redshift-data"); const redshiftData = new client_redshift_data_1.RedshiftData({}); async function executeStatement(statement, clusterProps) { const executeStatementProps = { ClusterIdentifier: clusterProps.clusterName, Database: clusterProps.databaseName, SecretArn: clusterProps.adminUserArn, Sql: statement, }; const executedStatement = await redshiftData.executeStatement(executeStatementProps); if (!executedStatement.Id) { throw new Error('Service error: Statement execution did not return a statement ID'); } await waitForStatementComplete(executedStatement.Id); } const waitTimeout = 100; async function waitForStatementComplete(statementId) { await new Promise((resolve) => { setTimeout(() => resolve(), waitTimeout); }); const statement = await redshiftData.describeStatement({ Id: statementId }); if (statement.Status !== 'FINISHED' && statement.Status !== 'FAILED' && statement.Status !== 'ABORTED') { return waitForStatementComplete(statementId); } else if (statement.Status === 'FINISHED') { return; } else { throw new Error(`Statement status was ${statement.Status}: ${statement.Error}`); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc2hpZnQtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlZHNoaWZ0LWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSw0Q0FZQztBQWxCRCxnRUFBZ0U7QUFDaEUsd0VBQTZEO0FBRzdELE1BQU0sWUFBWSxHQUFHLElBQUksbUNBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVuQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxZQUEwQjtJQUNsRixNQUFNLHFCQUFxQixHQUFHO1FBQzVCLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxXQUFXO1FBQzNDLFFBQVEsRUFBRSxZQUFZLENBQUMsWUFBWTtRQUNuQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFlBQVk7UUFDcEMsR0FBRyxFQUFFLFNBQVM7S0FDZixDQUFDO0lBQ0YsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUNELE1BQU0sd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUN4QixLQUFLLFVBQVUsd0JBQXdCLENBQUMsV0FBbUI7SUFDekQsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQThCLEVBQUUsRUFBRTtRQUNuRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxVQUFVLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2RyxPQUFPLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7U0FBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDM0MsT0FBTztJQUNULENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsU0FBUyxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCB7IFJlZHNoaWZ0RGF0YSB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1yZWRzaGlmdC1kYXRhJztcbmltcG9ydCB0eXBlIHsgQ2x1c3RlclByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IHJlZHNoaWZ0RGF0YSA9IG5ldyBSZWRzaGlmdERhdGEoe30pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVN0YXRlbWVudChzdGF0ZW1lbnQ6IHN0cmluZywgY2x1c3RlclByb3BzOiBDbHVzdGVyUHJvcHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZXhlY3V0ZVN0YXRlbWVudFByb3BzID0ge1xuICAgIENsdXN0ZXJJZGVudGlmaWVyOiBjbHVzdGVyUHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgRGF0YWJhc2U6IGNsdXN0ZXJQcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgU2VjcmV0QXJuOiBjbHVzdGVyUHJvcHMuYWRtaW5Vc2VyQXJuLFxuICAgIFNxbDogc3RhdGVtZW50LFxuICB9O1xuICBjb25zdCBleGVjdXRlZFN0YXRlbWVudCA9IGF3YWl0IHJlZHNoaWZ0RGF0YS5leGVjdXRlU3RhdGVtZW50KGV4ZWN1dGVTdGF0ZW1lbnRQcm9wcyk7XG4gIGlmICghZXhlY3V0ZWRTdGF0ZW1lbnQuSWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlcnZpY2UgZXJyb3I6IFN0YXRlbWVudCBleGVjdXRpb24gZGlkIG5vdCByZXR1cm4gYSBzdGF0ZW1lbnQgSUQnKTtcbiAgfVxuICBhd2FpdCB3YWl0Rm9yU3RhdGVtZW50Q29tcGxldGUoZXhlY3V0ZWRTdGF0ZW1lbnQuSWQpO1xufVxuXG5jb25zdCB3YWl0VGltZW91dCA9IDEwMDtcbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JTdGF0ZW1lbnRDb21wbGV0ZShzdGF0ZW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlOiAodmFsdWU6IHZvaWQpID0+IHZvaWQpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoKSwgd2FpdFRpbWVvdXQpO1xuICB9KTtcbiAgY29uc3Qgc3RhdGVtZW50ID0gYXdhaXQgcmVkc2hpZnREYXRhLmRlc2NyaWJlU3RhdGVtZW50KHsgSWQ6IHN0YXRlbWVudElkIH0pO1xuICBpZiAoc3RhdGVtZW50LlN0YXR1cyAhPT0gJ0ZJTklTSEVEJyAmJiBzdGF0ZW1lbnQuU3RhdHVzICE9PSAnRkFJTEVEJyAmJiBzdGF0ZW1lbnQuU3RhdHVzICE9PSAnQUJPUlRFRCcpIHtcbiAgICByZXR1cm4gd2FpdEZvclN0YXRlbWVudENvbXBsZXRlKHN0YXRlbWVudElkKTtcbiAgfSBlbHNlIGlmIChzdGF0ZW1lbnQuU3RhdHVzID09PSAnRklOSVNIRUQnKSB7XG4gICAgcmV0dXJuO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RhdGVtZW50IHN0YXR1cyB3YXMgJHtzdGF0ZW1lbnQuU3RhdHVzfTogJHtzdGF0ZW1lbnQuRXJyb3J9YCk7XG4gIH1cbn1cbiJdfQ==