Files
old-spike/lib/tasks/seed_data.js

110 lines
2.9 KiB
JavaScript
Raw Normal View History

2016-01-27 20:15:09 -06:00
import extend from "extend";
import moment from "moment";
import csv from "fast-csv";
import fs from 'fs';
import MathUtils from "./../utils/math"
import DB from './../../config/database';
2016-01-26 19:42:30 -06:00
2016-01-27 20:15:09 -06:00
export class PowerDataSeed {
2016-01-26 19:42:30 -06:00
2016-01-27 20:15:09 -06:00
static saveCsv(opts, done){
opts = extend({
2016-01-31 17:18:27 -06:00
path: __dirname + "/../../data/power_data.csv"
2016-01-27 20:15:09 -06:00
}, opts || {});
var stream = fs.createReadStream(opts.path),
csvStream = csv.fromStream(stream, {headers: ['house_id', 'time', 'power']}),
rows = [];
2016-01-26 19:42:30 -06:00
2016-01-27 20:15:09 -06:00
csvStream.on("data", function(data){
2016-01-31 11:35:22 -06:00
data.time = moment.utc(parseInt(data.time)).format();
rows.push(data);
if (rows.length % 100 === 0){
DB.PowerDatum.bulkCreate(rows, {validate: true}).then(()=>{
rows = [];
});
}
2016-01-27 20:15:09 -06:00
});
csvStream.on("end", function(){
2016-01-31 11:35:22 -06:00
DB.PowerDatum.bulkCreate(rows, {validate: true}).then(()=>{
console.log("DONE!")
done();
});
2016-01-27 20:15:09 -06:00
});
2016-01-26 19:42:30 -06:00
}
2016-01-27 20:15:09 -06:00
static generateCsv(opts, done){
opts = extend({
2016-01-31 11:35:22 -06:00
start_date: moment().subtract(2, "months").unix(),
2016-01-27 20:15:09 -06:00
end_date: moment().unix(),
2016-01-31 11:35:22 -06:00
interval: 180, // every 3 minutes (in s)
2016-01-27 20:15:09 -06:00
average: 1400, // Wh
2016-01-31 17:18:27 -06:00
path: __dirname + "/../../data/power_data.csv"
2016-01-27 20:15:09 -06:00
}, opts || {});
2016-01-26 19:42:30 -06:00
2016-01-27 20:15:09 -06:00
var row_date = opts.start_date,
csvStream = csv.format({headers: true}),
2016-01-31 11:35:22 -06:00
writableStream = fs.createWriteStream(opts.path),
house_ids = opts.house_ids.split(",")
2016-01-26 19:42:30 -06:00
2016-01-27 20:15:09 -06:00
csvStream.pipe(writableStream);
2016-01-31 11:35:22 -06:00
writableStream.on("finish", ()=>{
console.log("DONE!")
done();
});
2016-01-26 19:42:30 -06:00
2016-01-31 11:35:22 -06:00
while (row_date <= opts.end_date){
for (var house_id of house_ids){
csvStream.write([house_id, row_date, MathUtils.normal(opts.average)]);
}
2016-01-27 20:15:09 -06:00
row_date += opts.interval;
}
csvStream.end();
}
}
2016-01-26 19:42:30 -06:00
2016-01-27 20:15:09 -06:00
export class HouseSeed {
static saveCsv(opts, done){
opts = extend({
2016-01-31 17:18:27 -06:00
path: __dirname + "/../../data/houses.csv"
2016-01-27 20:15:09 -06:00
}, opts || {});
var stream = fs.createReadStream(opts.path),
csvStream = csv.fromStream(stream, {headers: ['id', 'name']}),
rows = [];
2016-01-26 19:42:30 -06:00
2016-01-27 20:15:09 -06:00
csvStream.on("data", function(data){
console.log(JSON.stringify(data))
rows.push(data);
});
csvStream.on("end", function(){
console.log(rows);
2016-01-31 11:35:22 -06:00
DB.House.bulkCreate(rows, {validate: true}).then(()=>{
console.log("DONE!")
done();
});
2016-01-26 19:42:30 -06:00
});
2016-01-27 20:15:09 -06:00
}
}
2016-01-26 19:42:30 -06:00
2016-01-31 17:18:27 -06:00
export class UserSeed {
static saveCsv(opts, done){
opts = extend({
path: __dirname + "/../../data/users.csv"
}, opts || {});
var stream = fs.createReadStream(opts.path),
csvStream = csv.fromStream(stream, {headers: ['username', 'house_id']}),
rows = [];
csvStream.on("data", function(data){
console.log(JSON.stringify(data))
rows.push(data);
});
csvStream.on("end", function(){
console.log(rows);
DB.User.bulkCreate(rows, {validate: true}).then(()=>{
console.log("DONE!")
done();
});
});
}
}