Added labels to data-generator

no issue
This commit is contained in:
Sam Lord 2023-02-17 17:01:20 +00:00
parent db7ac14467
commit 36ea0cc6d6
4 changed files with 79 additions and 2 deletions

View File

@ -31,7 +31,9 @@ const {
EmailRecipientsImporter,
RedirectsImporter,
MembersClickEventsImporter,
OffersImporter
OffersImporter,
LabelsImporter,
MembersLabelsImporter
} = tables;
const path = require('path');
const fs = require('fs/promises');
@ -382,6 +384,16 @@ class DataGenerator {
const offersImporter = new OffersImporter(transaction, {products: products.filter(product => product.name !== 'Free')});
await offersImporter.import({amount: 2});
const labelsImporter = new LabelsImporter(transaction);
const labels = await labelsImporter.import({amount: 10});
const membersLabelsImporter = new MembersLabelsImporter(transaction, {labels});
await membersLabelsImporter.importForEach(members, {
amount: 1
});
// TODO: Members labels
// TODO: Email clicks - redirect, members_click_events (relies on emails)
// TODO: Feedback - members_feedback (relies on members and posts)

View File

@ -30,5 +30,7 @@ module.exports = {
EmailRecipientsImporter: require('./email-recipients'),
RedirectsImporter: require('./redirects'),
MembersClickEventsImporter: require('./members-click-events'),
OffersImporter: require('./offers')
OffersImporter: require('./offers'),
LabelsImporter: require('./labels'),
MembersLabelsImporter: require('./members-labels')
};

View File

@ -0,0 +1,29 @@
const TableImporter = require('./base');
const {faker} = require('@faker-js/faker');
const {slugify} = require('@tryghost/string');
const {blogStartDate} = require('../utils/blog-info');
const dateToDatabaseString = require('../utils/database-date');
class LabelsImporter extends TableImporter {
static table = 'labels';
constructor(knex) {
super(LabelsImporter.table, knex);
}
generate() {
let name = `${faker.color.human()} ${faker.name.jobType()}`;
name = `${name[0].toUpperCase()}${name.slice(1)}`;
return {
id: faker.database.mongodbObjectId(),
name: name,
slug: `${slugify(name)}`,
created_at: dateToDatabaseString(blogStartDate),
created_by: '1',
updated_at: dateToDatabaseString(blogStartDate),
updated_by: '1'
};
}
}
module.exports = LabelsImporter;

View File

@ -0,0 +1,34 @@
const TableImporter = require('./base');
const {faker} = require('@faker-js/faker');
const {luck} = require('../utils/random');
class MembersLabelsImporter extends TableImporter {
static table = 'members_labels';
constructor(knex, {labels}) {
super(MembersLabelsImporter.table, knex);
this.labels = labels;
}
setImportOptions({model}) {
this.model = model;
}
generate() {
if (luck(90)) {
// 90% of members don't have labels
return;
}
return {
id: faker.database.mongodbObjectId(),
member_id: this.model.id,
label_id: this.labels[faker.datatype.number({
min: 0,
max: this.labels.length - 1
})].id,
sort_order: 0
};
}
}
module.exports = MembersLabelsImporter;