aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--db/index.js10
-rw-r--r--routes/lightning/receive.js29
2 files changed, 30 insertions, 9 deletions
diff --git a/db/index.js b/db/index.js
index 9e78da9d..b411a8ef 100644
--- a/db/index.js
+++ b/db/index.js
@@ -17,7 +17,17 @@ db["User"].hasMany(db["Payment"], {
foreignKey: "user_id"
});
+db["User"].hasMany(db["Invoice"], {
+ as: "invoices",
+ foreignKey: "user_id"
+});
+
db["Payment"].belongsTo(db["User"], {
as: "user",
foreignKey: "user_id"
});
+
+db["Invoice"].belongsTo(db["User"], {
+ as: "user",
+ foreignKey: "user_id"
+});
diff --git a/routes/lightning/receive.js b/routes/lightning/receive.js
index f70867ac..c4ce2414 100644
--- a/routes/lightning/receive.js
+++ b/routes/lightning/receive.js
@@ -1,23 +1,34 @@
const handlePayment = async msg => {
if (!msg.settled) return;
+ l.info("lightning strikes!", msg.payment_request);
- let payment = await db.Payment.findOne({
+ let invoice = await db.Invoice.findOne({
include: { model: db.User, as: "user" },
where: {
- hash: msg.payment_request
+ text: msg.payment_request
}
});
- if (!payment) return;
+ if (!invoice) return;
- const { user } = payment;
+ const { user } = invoice;
+ const amount = parseInt(msg.value);
- payment.received = true;
- user.balance += parseInt(msg.value);
- payment.rate = app.get("rates")[user.currency];
- payment.confirmed = true;
- payment.currency = user.currency;
+ const payment = await db.Payment.create({
+ user_id: user.id,
+ hash: invoice.text,
+ amount,
+ currency: user.currency,
+ rate: app.get("rates")[user.currency],
+ received: true,
+ confirmed: true,
+ asset: 'LNBTC',
+ });
+
+ invoice.received = msg.value;
+ user.balance += amount;
+ await invoice.save();
await payment.save();
await user.save();
payments.push(msg.payment_request);