0d7944861c
no issue Free and premium newsletters were the other way around in the demo-data. This was a good opportunity to stop the email table importer from relying on the newsletter name, and use the order alone.
54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
const TableImporter = require('./base');
|
|
const {faker} = require('@faker-js/faker');
|
|
const {luck} = require('../utils/random');
|
|
const dateToDatabaseString = require('../utils/database-date');
|
|
|
|
class MembersSubscribeEventsImporter extends TableImporter {
|
|
constructor(knex, {newsletters, subscriptions}) {
|
|
super('members_subscribe_events', knex);
|
|
this.newsletters = newsletters;
|
|
this.subscriptions = subscriptions;
|
|
}
|
|
|
|
setImportOptions({model}) {
|
|
this.model = model;
|
|
this.count = 0;
|
|
}
|
|
|
|
generate() {
|
|
const count = this.count;
|
|
this.count = this.count + 1;
|
|
|
|
if (count === 1 && this.model.status === 'free') {
|
|
return null;
|
|
}
|
|
|
|
let createdAt = dateToDatabaseString(faker.date.between(new Date(this.model.created_at), new Date()));
|
|
let subscribed = luck(80);
|
|
|
|
// Free newsletter by default
|
|
let newsletterId = this.newsletters[1].id;
|
|
if (this.model.status === 'paid' && count === 0) {
|
|
// Paid newsletter
|
|
newsletterId = this.newsletters[0].id;
|
|
createdAt = this.subscriptions.find(s => s.member_id === this.model.id).created_at;
|
|
subscribed = luck(98);
|
|
}
|
|
|
|
if (!subscribed) {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
id: faker.database.mongodbObjectId(),
|
|
member_id: this.model.id,
|
|
newsletter_id: newsletterId,
|
|
subscribed: true,
|
|
created_at: createdAt,
|
|
source: 'member'
|
|
};
|
|
}
|
|
}
|
|
|
|
module.exports = MembersSubscribeEventsImporter;
|