mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-24 23:48:13 -05:00
Added labels to data-generator
no issue
This commit is contained in:
parent
db7ac14467
commit
36ea0cc6d6
4 changed files with 79 additions and 2 deletions
|
@ -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)
|
||||
|
|
|
@ -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')
|
||||
};
|
||||
|
|
29
ghost/data-generator/lib/tables/labels.js
Normal file
29
ghost/data-generator/lib/tables/labels.js
Normal 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;
|
34
ghost/data-generator/lib/tables/members-labels.js
Normal file
34
ghost/data-generator/lib/tables/members-labels.js
Normal 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;
|
Loading…
Add table
Reference in a new issue