From 2c42090cd90f7688a7812cfeeda518c286cf7ffc Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Sun, 31 Jan 2016 11:35:22 -0600 Subject: [PATCH] seed house and power data --- .gitignore | 1 + config/database.js | 2 -- lib/tasks/seed_data.js | 38 +++++++++++++++++++++++++++----------- lib/utils/math.js | 4 ++-- models/power_datum.js | 4 ++-- 5 files changed, 32 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 204ade5..0eb175f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules/ bin/ +data/example/ diff --git a/config/database.js b/config/database.js index 5c960de..8bbc0ca 100644 --- a/config/database.js +++ b/config/database.js @@ -21,8 +21,6 @@ class Database { Database[model.name] = model; Database.models.push(model); }); - console.log("!!!! TEST !!!!") - console.log(Database.PowerDatum); // add associations for (var model of Database.models){ diff --git a/lib/tasks/seed_data.js b/lib/tasks/seed_data.js index 6d3357b..e0ef61b 100644 --- a/lib/tasks/seed_data.js +++ b/lib/tasks/seed_data.js @@ -16,33 +16,46 @@ export class PowerDataSeed { rows = []; csvStream.on("data", function(data){ - rows.push(rows); + data.time = moment.utc(parseInt(data.time)).format(); + rows.push(data); + if (rows.length % 100 === 0){ + DB.PowerDatum.bulkCreate(rows, {validate: true}).then(()=>{ + rows = []; + }); + } }); csvStream.on("end", function(){ - DB.PowerDatum.bulkCreate(rows, {validate: true}).then(done); + DB.PowerDatum.bulkCreate(rows, {validate: true}).then(()=>{ + console.log("DONE!") + done(); + }); }); } static generateCsv(opts, done){ opts = extend({ - start_date: moment.subtract(1, "months").unix(), + start_date: moment().subtract(2, "months").unix(), end_date: moment().unix(), - interval: 15 * 60, // every 15 minutes (in s) + interval: 180, // every 3 minutes (in s) average: 1400, // Wh path: __dirname + "/../../data/example/power_data.csv" }, opts || {}); var row_date = opts.start_date, csvStream = csv.format({headers: true}), - writableStream = fs.createWriteStream(opts.path); + writableStream = fs.createWriteStream(opts.path), + house_ids = opts.house_ids.split(",") csvStream.pipe(writableStream); - writableStream.on("finish", done); + writableStream.on("finish", ()=>{ + console.log("DONE!") + done(); + }); - while (row_date <= end_date){ - csvStream.write(house_ids.map((house_id)=>{ - return [house_id, row_date, MathUtils.normal(opts.average)] - })); + while (row_date <= opts.end_date){ + for (var house_id of house_ids){ + csvStream.write([house_id, row_date, MathUtils.normal(opts.average)]); + } row_date += opts.interval; } csvStream.end(); @@ -64,7 +77,10 @@ export class HouseSeed { }); csvStream.on("end", function(){ console.log(rows); - DB.House.bulkCreate(rows, {validate: true}).then(done); + DB.House.bulkCreate(rows, {validate: true}).then(()=>{ + console.log("DONE!") + done(); + }); }); } } diff --git a/lib/utils/math.js b/lib/utils/math.js index f4c8eb1..ad8d608 100644 --- a/lib/utils/math.js +++ b/lib/utils/math.js @@ -1,7 +1,7 @@ export default class { - + static normal(average){ - return average + n6() * average; + return average + this.n6() * average; } static n6(){ diff --git a/models/power_datum.js b/models/power_datum.js index 2479714..72ffdff 100644 --- a/models/power_datum.js +++ b/models/power_datum.js @@ -23,10 +23,10 @@ var PowerDatum = DB.sequelize.define('PowerDatum', { primaryKey: true, autoIncrement: true // Automatically gets converted to SERIAL for postgres }, - time: DB.Sequelize.FLOAT, + time: DB.Sequelize.DATE, power: DB.Sequelize.FLOAT }, { - tableName: "power_data", + tableName: "power_data", instanceMethods: { },