const AWS = require('aws-sdk'); AWS.config.update({region: 'us-east-1'}); const knex = require('knex')({ client: 'mysql', connection: { host: 'nzoth-whispers.cnr1c5jzuhe8.us-east-1.rds.amazonaws.com', user: 'lambda_user', password: 'AppleADay', database: 'nzoth' } }); const whispers = require('./whispers.json'); const snsService = new AWS.SNS({apiVersion: '2010-03-31'}); const getRandomWhisper = () => { const randomIndex = Math.floor(Math.random() * (whispers.length - 1)); return whispers[randomIndex]; }; const sendWhisper = PhoneNumber => { // TODO : Include opt-out logic const Message = getRandomWhisper(); console.log(`Sending "${Message}" to "${PhoneNumber}"`); return snsService.publish({ Message: Message, PhoneNumber: PhoneNumber }).promise() .catch(err => console.error(`Error sending sms: ${err}`)); }; exports.handler = async (event) => { const phoneNumbers = await knex .select().from('phone_numbers').where('is_deleted', 0) .catch(err => console.error(`Error getting phone_numbers: ${err}`)); if (!phoneNumbers) { return; } const inFlightMessages = phoneNumbers .map(r => r.phone_number) .map( sendWhisper ); await Promise.all(inFlightMessages).catch(err => console.error(err)); console.log('Wrapping up'); return; };