scripts/purge-uploads-table.js (53 lines of code) (raw):

#!/usr/bin/env node const fs = require('fs'); const AWS = require('aws-sdk'); const parseHocon = require('hoconjs/build/hoconjs'); const configPath = '/etc/gu/media-atom-maker.private.conf'; AWS.config.update({ credentials: new AWS.SharedIniFileCredentials({ profile: 'media-service' }), region: 'eu-west-1' }); function getConfig() { return new Promise((resolve, reject) => { fs.readFile(configPath, 'utf8', (err, rawFile) => { if (err) { reject(err); } else { const config = parseHocon(rawFile); resolve(config); } }) }); } function scanTable (tableName) { return new Promise((resolve, reject) => { const dynamodb = new AWS.DynamoDB(); dynamodb.scan({TableName: tableName}, (err, data) => { if (err) { reject(err); } else { resolve(data); } }); }) } getConfig().then(config => { const table = config.aws.dynamo.uploadTrackingTableName; const dynamodb = new AWS.DynamoDB(); scanTable(table).then(data => { console.log(`deleting ${data.Items.length} items`); data.Items.forEach(item => { console.log(item); const options = { TableName: table, Key: item }; dynamodb.deleteItem(options, (err, data) => { if (err) { console.log(`Error! ${err}`); } else { console.log('Deleted'); console.log(data); } }); }); console.log('Done.'); }).catch(err => { console.log(`Error! ${err}`); }); });