0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-03-25 02:31:59 -05:00

Updated members-csv to handle error column when unparsing

no-issue

This also allows for different the member object structure returned from parse
This commit is contained in:
Fabien O'Carroll 2020-10-27 10:42:35 +00:00 committed by Fabien 'egg' O'Carroll
parent 05d5310343
commit 019d99fcc2

View file

@ -2,15 +2,30 @@ const _ = require('lodash');
const papaparse = require('papaparse'); const papaparse = require('papaparse');
const unparse = (members) => { const unparse = (members) => {
const columns = new Set([
'id',
'email',
'name',
'note',
'subscribed_to_emails',
'complimentary_plan',
'stripe_customer_id',
'created_at',
'deleted_at',
'labels'
]);
const mappedMembers = members.map((member) => { const mappedMembers = members.map((member) => {
let stripeCustomerId; if (member.error) {
columns.add('error');
if (member.stripe) {
stripeCustomerId = _.get(member, 'stripe.subscriptions[0].customer.id');
} }
let labels = [];
if (member.labels) { let labels = '';
labels = `${member.labels.map(l => l.name).join(',')}`; if (typeof member.labels === 'string') {
labels = member.labels;
} else if (Array.isArray(member.labels)) {
labels = member.labels.map((l) => {
return typeof l === 'string' ? l : l.name;
}).join(',');
} }
return { return {
@ -19,15 +34,18 @@ const unparse = (members) => {
name: member.name, name: member.name,
note: member.note, note: member.note,
subscribed_to_emails: member.subscribed, subscribed_to_emails: member.subscribed,
complimentary_plan: member.comped, complimentary_plan: member.comped || member.complimentary_plan,
stripe_customer_id: stripeCustomerId, stripe_customer_id: _.get(member, 'stripe.subscriptions[0].customer.id') || member.stripe_customer_id,
created_at: member.created_at, created_at: member.created_at,
deleted_at: member.deleted_at, deleted_at: member.deleted_at,
labels: labels labels: labels,
error: member.error || null
}; };
}); });
return papaparse.unparse(mappedMembers); return papaparse.unparse(mappedMembers, {
columns: Array.from(columns.values())
});
}; };
module.exports = unparse; module.exports = unparse;