aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--db/index.js17
-rw-r--r--db/models/accounts.js9
-rw-r--r--routes/liquid/receive.js31
3 files changed, 50 insertions, 7 deletions
diff --git a/db/index.js b/db/index.js
index b411a8ef..bb94fb98 100644
--- a/db/index.js
+++ b/db/index.js
@@ -8,12 +8,13 @@ db = new Sequelize(conf.database, conf.username, conf.password, {
dialectOptions: { multipleStatements: true }
});
+require("./models/accounts.js");
require("./models/invoices.js");
require("./models/payments.js");
require("./models/users.js");
-db["User"].hasMany(db["Payment"], {
- as: "payments",
+db["User"].hasMany(db["Account"], {
+ as: "accounts",
foreignKey: "user_id"
});
@@ -22,7 +23,12 @@ db["User"].hasMany(db["Invoice"], {
foreignKey: "user_id"
});
-db["Payment"].belongsTo(db["User"], {
+db["User"].hasMany(db["Payment"], {
+ as: "payments",
+ foreignKey: "user_id"
+});
+
+db["Account"].belongsTo(db["User"], {
as: "user",
foreignKey: "user_id"
});
@@ -31,3 +37,8 @@ db["Invoice"].belongsTo(db["User"], {
as: "user",
foreignKey: "user_id"
});
+
+db["Payment"].belongsTo(db["User"], {
+ as: "user",
+ foreignKey: "user_id"
+});
diff --git a/db/models/accounts.js b/db/models/accounts.js
index 57c9e82a..aeaf8d5e 100644
--- a/db/models/accounts.js
+++ b/db/models/accounts.js
@@ -55,6 +55,15 @@ const attributes = {
comment: null,
field: "balance"
},
+ pending: {
+ type: DataTypes.DOUBLE,
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "pending"
+ },
};
const options = {
diff --git a/routes/liquid/receive.js b/routes/liquid/receive.js
index 68189e38..ff58f1c4 100644
--- a/routes/liquid/receive.js
+++ b/routes/liquid/receive.js
@@ -22,7 +22,7 @@ zmqRawTx.on("message", async (topic, message, sequence) => {
tx.vout.map(async o => {
if (!(o.scriptPubKey && o.scriptPubKey.addresses)) return;
- const { asset } = o.asset;
+ const { asset } = o;
const value = toSats(o.value);
const address = o.scriptPubKey.addresses[0];
@@ -47,7 +47,30 @@ zmqRawTx.on("message", async (topic, message, sequence) => {
let confirmed = 0;
- user.pending += value;
+ if (asset === config.liquid.btcasset) {
+ user.pending += value;
+ } else {
+ const params = {
+ user_id: user.id,
+ asset,
+ };
+
+ const account = await db.Account.findOne({
+ where: params
+ });
+
+ console.log("params", params);
+ if (account) {
+ account.pending += value;
+ await account.save();
+ } else {
+ params.balance = 0;
+ params.pending = value;
+ l.info("creating", params);
+ await db.Account.create(params);
+ }
+ }
+
user.confidential = await lq.getNewAddress();
user.liquid = (await lq.getAddressInfo(
user.confidential
@@ -72,7 +95,7 @@ zmqRawTx.on("message", async (topic, message, sequence) => {
});
payments.push(blinded.txid);
- l.info("liquid detected", user.username, value);
+ l.info("liquid detected", user.username, asset, value);
emit(user.username, "payment", payment);
}
})
@@ -112,7 +135,7 @@ setInterval(async () => {
let user = await p.getUser();
- const asset = await db.Asset.findOne({
+ const asset = await db.Account.findOne({
where: {
user_id: user.id,
asset: p.asset