30 lines
1.5 KiB
TypeScript
30 lines
1.5 KiB
TypeScript
"use strict";
|
|
import { writeFileSync } from 'fs';
|
|
import { unparse } from 'papaparse';
|
|
import { createMollieClient, MollieClient } from '@mollie/api-client';
|
|
import { log, mapKeys, prepend } from './utils';
|
|
import { mollieKeys, listAll } from './mollie';
|
|
|
|
async function main() {
|
|
const mollie = createMollieClient({ apiKey: mollieKeys.leden });
|
|
exportMollieCustomers(mollie);
|
|
exportMolliePayments(mollie);
|
|
}
|
|
|
|
async function exportMollieCustomers(mollie: MollieClient) {
|
|
const page$ = mollie.customers.list();
|
|
const list = (await listAll(page$, 500))
|
|
.map(({ id, name, email, createdAt }) => ({ id, name, email, createdAt }));
|
|
writeFileSync('./data/customers.csv', unparse(list));
|
|
}
|
|
|
|
async function exportMolliePayments(mollie: MollieClient) {
|
|
const page$ = mollie.payments.list();
|
|
const list = (await listAll(page$, 500))
|
|
// const list = Array.from(await page$)
|
|
.map(({ id, createdAt, paidAt, description, method, status, isCancelable, sequenceType, profileId, customerId, mandateId, details, amount, settlementAmount, amountRefunded, amountRemaining }) => ({ id, createdAt, paidAt, description, method, status, isCancelable, sequenceType, profileId, customerId, mandateId, ...mapKeys(prepend('details.'))(details), ...mapKeys(prepend('amount.'))(amount), ...mapKeys(prepend('settlementAmount.'))(settlementAmount), ...mapKeys(prepend('amountRefunded.'))(amountRefunded), ...mapKeys(prepend('amountRemaining.'))(amountRemaining) }));
|
|
writeFileSync('./data/payments.csv', unparse(list));
|
|
}
|
|
|
|
main();
|