diff --git a/.gitignore b/.gitignore index 998848a..5ad1855 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules config.js output/*.mp3 +uploaded/*.mp3 diff --git a/README.md b/README.md index 002d7c1..4b813e7 100644 --- a/README.md +++ b/README.md @@ -33,3 +33,20 @@ create database eulagy_test; GRANT ALL PRIVILEGES ON DATABASE eulagy to eulagy_test; ``` +### Helper functions +#### List buckets +```bash +node lib/buckets +``` + +#### Create bucket +Bucket name defaults to `eulagy`. Will not create a bucket that already exists. +```bash +node lib/buckets create [name] +``` + +#### Upload files +Will upload all files from `output` to S3 bucket named `eulagy`. DOES NOT check for duplicates, so move records from `output` to `uploaded` once they are uploaded. +```bash +node lib/buckets upload +``` diff --git a/lib/buckets.js b/lib/buckets.js new file mode 100644 index 0000000..62da461 --- /dev/null +++ b/lib/buckets.js @@ -0,0 +1,88 @@ +'use strict' + +// mostly from https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-creating-buckets.html + +const AWS = require('aws-sdk'); +const fsPromises = require('fs').promises; +// Create S3 service object +const s3 = new AWS.S3({apiVersion: '2006-03-01'}); + +// Call S3 to list current buckets +const listBuckets = function() { + return s3.listBuckets((err, data) => { + if (err) { + console.log("Error", err); + } else { + return data; + } + }).promise(); +}; + +const createBucket = function(name) { + const bucketName = name || 'eulagy'; + + listBuckets() + .then(bs => { + bs['Buckets'].forEach( b => { + if(b['Name'] === bucketName) { + console.log(`${bucketName} already exists!`); + return true; + } + console.log(`Will create ${bucketName}`); + }); + }) + .then(() => { + s3.createBucket({ Bucket: bucketName }, (err, data) => { + if (err) { + console.log(`Error in createBucket:\n ${err}`); + } else { + console.log(`Success!: ${data.Location}`, data) + } + }); + }); +}; + +const listFiles = function(name) { + const bucketName = name || 'eulagy'; + return s3.listObjects({ Bucket: bucketName }, function(err, data) { + if (err) { + console.log("Error", err); + } else { + return data; + } + }).promise(); +}; + +const uploadFile = function(name, data) { + console.log('yyyyyyy', data); + const params = { Bucket: 'eulagy', Key: name, Body: data }; + return s3.upload (params, function (err, data) { + if (err) { + console.log("Error", err, data); + } + }).promise(); +} + +// create buckets, up +const uploadFiles = function() { + return fsPromises.readdir('output') + .then((files, err) => { + files.forEach(f => { + fsPromises.readFile(`output/${f}`) + .then((buffer, err) => { + uploadFile(f, buffer) + .then(() => { console.log(`Uploaded ${f}`); }); + }); + }); + }); +}; + +if (process.argv[2] === 'create') { + createBucket(); +} else if (process.argv[2] === 'files') { + listFiles().then(d => { console.log(d); }); +} else if (process.argv[2] === 'upload') { + uploadFiles().then(d => {}); +} else { + listBuckets().then(d => { console.log(d); }); +} \ No newline at end of file diff --git a/lib/db_to_mp3.js b/lib/db_to_mp3.js index d0cfa9c..075fb0b 100644 --- a/lib/db_to_mp3.js +++ b/lib/db_to_mp3.js @@ -2,7 +2,7 @@ const app = require('../app'); -const dbToMp3 = function() { +function() { const records = app .getAllRecords() .then(rs => { @@ -14,6 +14,4 @@ const dbToMp3 = function() { }); }); }) -}; - -dbToMp3(); \ No newline at end of file +}(); diff --git a/uploaded/.keep b/uploaded/.keep new file mode 100644 index 0000000..e69de29