mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-03-11 02:12:21 -05:00
Added member feedback to data generator
refs: https://github.com/TryGhost/Toolbox/issues/454
This commit is contained in:
parent
1e435fb328
commit
72ba6ec4af
3 changed files with 47 additions and 7 deletions
|
@ -34,7 +34,8 @@ const {
|
|||
OffersImporter,
|
||||
LabelsImporter,
|
||||
MembersLabelsImporter,
|
||||
RolesUsersImporter
|
||||
RolesUsersImporter,
|
||||
MembersFeedbackImporter
|
||||
} = tables;
|
||||
const path = require('path');
|
||||
const fs = require('fs/promises');
|
||||
|
@ -409,11 +410,8 @@ class DataGenerator {
|
|||
const rolesUsersImporter = new RolesUsersImporter(transaction, {roles});
|
||||
await rolesUsersImporter.importForEach(users, {amount: 1});
|
||||
|
||||
// TODO: Members labels
|
||||
|
||||
// TODO: Email clicks - redirect, members_click_events (relies on emails)
|
||||
|
||||
// TODO: Feedback - members_feedback (relies on members and posts)
|
||||
const membersFeedbackImporter = new MembersFeedbackImporter(transaction, {emails});
|
||||
await membersFeedbackImporter.importForEach(emailRecipients, {amount: 1});
|
||||
|
||||
await transaction.commit();
|
||||
|
||||
|
|
|
@ -33,5 +33,6 @@ module.exports = {
|
|||
OffersImporter: require('./offers'),
|
||||
LabelsImporter: require('./labels'),
|
||||
MembersLabelsImporter: require('./members-labels'),
|
||||
RolesUsersImporter: require('./roles-users')
|
||||
RolesUsersImporter: require('./roles-users'),
|
||||
MembersFeedbackImporter: require('./members-feedback')
|
||||
};
|
||||
|
|
41
ghost/data-generator/lib/tables/members-feedback.js
Normal file
41
ghost/data-generator/lib/tables/members-feedback.js
Normal file
|
@ -0,0 +1,41 @@
|
|||
const TableImporter = require('./base');
|
||||
const {faker} = require('@faker-js/faker');
|
||||
const {luck} = require('../utils/random');
|
||||
const dateToDatabaseString = require('../utils/database-date');
|
||||
|
||||
class MembersFeedbackImporter extends TableImporter {
|
||||
static table = 'members_feedback';
|
||||
|
||||
constructor(knex, {emails}) {
|
||||
super(MembersFeedbackImporter.table, knex);
|
||||
this.emails = emails;
|
||||
}
|
||||
|
||||
setImportOptions({model}) {
|
||||
this.model = model;
|
||||
}
|
||||
|
||||
generate() {
|
||||
// ~10% of people who opened the email will leave feedback
|
||||
if (!this.model.opened_at || luck(90)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const openedAt = new Date(this.model.opened_at);
|
||||
const laterOn = new Date(this.model.opened_at);
|
||||
laterOn.setMinutes(laterOn.getMinutes() + 60);
|
||||
const feedbackTime = new Date(openedAt.valueOf() + (Math.random() * (laterOn.valueOf() - openedAt.valueOf())));
|
||||
|
||||
const postId = this.emails.find(email => email.id === this.model.email_id).post_id;
|
||||
return {
|
||||
id: faker.database.mongodbObjectId(),
|
||||
score: luck(70) ? 1 : 0,
|
||||
member_id: this.model.member_id,
|
||||
post_id: postId,
|
||||
created_at: dateToDatabaseString(feedbackTime),
|
||||
updated_at: dateToDatabaseString(feedbackTime)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = MembersFeedbackImporter;
|
Loading…
Add table
Reference in a new issue