lndhub/scripts/process-unpaid-invoices.js
2020-05-04 15:11:26 +01:00

39 lines
1.3 KiB
JavaScript

/**
* This script goes through all user invoices in LND and if it is settled - marks it
* so in our database. Does this only for invoices younger than week. *
*/
import { Invo } from '../class/';
const config = require('../config');
const fs = require('fs');
const Redis = require('ioredis');
const redis = new Redis(config.redis);
let bitcoinclient = require('../bitcoin');
let lightning = require('../lightning');
(async () => {
console.log('fetching listinvoices...');
let tempInv = new Invo(redis, bitcoinclient, lightning);
let listinvoices = await tempInv.listInvoices();
console.log('done', 'got', listinvoices['invoices'].length, 'invoices');
fs.writeFileSync('listInvoices.json', '[\n');
let markedInvoices = 0;
for (const invoice of listinvoices['invoices']) {
fs.appendFileSync('listInvoices.json', JSON.stringify(invoice, null, 2) + ',\n');
if (invoice.state === 'SETTLED' && +invoice.creation_date >= +new Date() / 1000 - 3600 * 24 * 7 * 2) {
tempInv.setInvoice(invoice.payment_request);
await tempInv.markAsPaidInDatabase();
markedInvoices++;
process.stdout.write(markedInvoices + '\r');
}
}
fs.appendFileSync('listInvoices.json', ']');
console.log('done, marked', markedInvoices, 'invoices');
process.exit();
})();