2019-09-26 10:39:20 +02:00
|
|
|
const ObjectId = require('bson-objectid');
|
|
|
|
const _ = require('lodash');
|
|
|
|
const common = require('../../../../lib/common');
|
|
|
|
|
|
|
|
module.exports.config = {
|
|
|
|
transaction: true,
|
|
|
|
irreversible: true
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports.up = (options) => {
|
|
|
|
const localOptions = _.merge({
|
|
|
|
context: {internal: true},
|
|
|
|
migrating: true
|
|
|
|
}, options);
|
|
|
|
|
|
|
|
const memberAttrs = [
|
|
|
|
'name',
|
|
|
|
'email',
|
|
|
|
'created_at',
|
|
|
|
'created_by',
|
|
|
|
'updated_at',
|
|
|
|
'updated_by'
|
|
|
|
];
|
|
|
|
|
2019-10-11 11:43:18 +02:00
|
|
|
return localOptions.transacting('subscribers').select()
|
|
|
|
.then((subscribers) => {
|
|
|
|
if (subscribers && subscribers.length > 0) {
|
2019-09-26 10:39:20 +02:00
|
|
|
common.logging.info(`Adding ${subscribers.length} entries to members`);
|
|
|
|
|
|
|
|
let members = _.map(subscribers, (subscriber) => {
|
|
|
|
let member = memberAttrs.reduce(function (obj, prop) {
|
|
|
|
return Object.assign(obj, {
|
2019-10-11 11:43:18 +02:00
|
|
|
[prop]: subscriber[prop]
|
2019-09-26 10:39:20 +02:00
|
|
|
});
|
|
|
|
}, {});
|
|
|
|
member.id = ObjectId.generate();
|
|
|
|
|
|
|
|
return member;
|
|
|
|
});
|
2019-11-11 12:20:38 +01:00
|
|
|
|
|
|
|
return Promise.map(members, (member) => {
|
|
|
|
return localOptions.transacting('members').insert(member);
|
|
|
|
});
|
2019-09-26 10:39:20 +02:00
|
|
|
} else {
|
|
|
|
common.logging.info('Skipping populating members table: found 0 subscribers');
|
|
|
|
return Promise.resolve();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports.down = () => {
|
|
|
|
return Promise.reject();
|
|
|
|
};
|