in typescript/src/export/exportSubscriptions.ts [10:48]
export async function handler(): Promise<any> {
const bucket = process.env['ExportBucket'];
if (!bucket) throw new Error('Variable ExportBucket must be set');
const className = process.env['ClassName'];
let stream = null;
switch (className) {
case 'Subscription':
console.log('Reading subscription from subscriptions');
stream = new DynamoStream(dynamoMapper.scan(SubscriptionEmpty));
break;
case 'UserSubscription':
console.log('Reading user subscription from user subscription');
stream = new DynamoStream(dynamoMapper.scan(UserSubscriptionEmpty));
break;
default:
throw new Error(`Invalid ClassName value ${className}`);
}
const zippedStream = zlib.createGzip();
stream.pipe(zippedStream);
const yesterday = plusDays(new Date(), -1).toISOString().substr(0, 10);
const prefix = Stage === 'PROD' ? 'data' : 'code-data';
const filename = `${prefix}/date=${yesterday}/${yesterday}.json.gz`;
console.log(`uploading ${filename} to s3`);
const managedUpload = s3.upload({
Bucket: bucket,
Key: filename,
Body: zippedStream,
ACL: 'bucket-owner-full-control',
});
await managedUpload.promise();
console.log(`Export succeeded, read ${stream.recordCount()} records`);
return { recordCount: stream.recordCount() };
}