Files
old-spike/lib/tasks/seed_data.js
Eric Hulburd e4513282f9 seed houses
2016-01-27 20:15:09 -06:00

72 lines
1.9 KiB
JavaScript

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';
export class PowerDataSeed {
static saveCsv(opts, done){
opts = extend({
path: __dirname + "/../../data/example/power_data.csv"
}, opts || {});
var stream = fs.createReadStream(opts.path),
csvStream = csv.fromStream(stream, {headers: ['house_id', 'time', 'power']}),
rows = [];
csvStream.on("data", function(data){
rows.push(rows);
});
csvStream.on("end", function(){
DB.PowerDatum.bulkCreate(rows, {validate: true}).then(done);
});
}
static generateCsv(opts, done){
opts = extend({
start_date: moment.subtract(1, "months").unix(),
end_date: moment().unix(),
interval: 15 * 60, // every 15 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);
csvStream.pipe(writableStream);
writableStream.on("finish", done);
while (row_date <= end_date){
csvStream.write(house_ids.map((house_id)=>{
return [house_id, row_date, MathUtils.normal(opts.average)]
}));
row_date += opts.interval;
}
csvStream.end();
}
}
export class HouseSeed {
static saveCsv(opts, done){
opts = extend({
path: __dirname + "/../../data/example/houses.csv"
}, opts || {});
var stream = fs.createReadStream(opts.path),
csvStream = csv.fromStream(stream, {headers: ['id', 'name']}),
rows = [];
csvStream.on("data", function(data){
console.log(JSON.stringify(data))
rows.push(data);
});
csvStream.on("end", function(){
console.log(rows);
DB.House.bulkCreate(rows, {validate: true}).then(done);
});
}
}