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,
|
EmailRecipientsImporter,
|
||||||
RedirectsImporter,
|
RedirectsImporter,
|
||||||
MembersClickEventsImporter,
|
MembersClickEventsImporter,
|
||||||
OffersImporter
|
OffersImporter,
|
||||||
|
LabelsImporter,
|
||||||
|
MembersLabelsImporter
|
||||||
} = tables;
|
} = tables;
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const fs = require('fs/promises');
|
const fs = require('fs/promises');
|
||||||
|
@ -382,6 +384,16 @@ class DataGenerator {
|
||||||
const offersImporter = new OffersImporter(transaction, {products: products.filter(product => product.name !== 'Free')});
|
const offersImporter = new OffersImporter(transaction, {products: products.filter(product => product.name !== 'Free')});
|
||||||
await offersImporter.import({amount: 2});
|
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: Email clicks - redirect, members_click_events (relies on emails)
|
||||||
|
|
||||||
// TODO: Feedback - members_feedback (relies on members and posts)
|
// TODO: Feedback - members_feedback (relies on members and posts)
|
||||||
|
|
|
@ -30,5 +30,7 @@ module.exports = {
|
||||||
EmailRecipientsImporter: require('./email-recipients'),
|
EmailRecipientsImporter: require('./email-recipients'),
|
||||||
RedirectsImporter: require('./redirects'),
|
RedirectsImporter: require('./redirects'),
|
||||||
MembersClickEventsImporter: require('./members-click-events'),
|
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