Fix duplicate autowithdrawal logs (#1121)
* Fix duplicate autowithdrawal success log * Fix duplicate autowithdrawal error log
This commit is contained in:
parent
e9a33ae12e
commit
df631878e0
|
@ -0,0 +1,23 @@
|
||||||
|
CREATE OR REPLACE FUNCTION reverse_withdrawl(wid INTEGER, wstatus "WithdrawlStatus")
|
||||||
|
RETURNS INTEGER
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
msats_fee_paying BIGINT;
|
||||||
|
msats_paying BIGINT;
|
||||||
|
user_id INTEGER;
|
||||||
|
BEGIN
|
||||||
|
PERFORM ASSERT_SERIALIZED();
|
||||||
|
|
||||||
|
IF EXISTS (SELECT 1 FROM "Withdrawl" WHERE id = wid AND status IS NULL) THEN
|
||||||
|
SELECT "msatsPaying", "msatsFeePaying", "userId" INTO msats_paying, msats_fee_paying, user_id
|
||||||
|
FROM "Withdrawl" WHERE id = wid AND status IS NULL;
|
||||||
|
|
||||||
|
UPDATE "Withdrawl" SET status = wstatus, updated_at = now_utc() WHERE id = wid AND status IS NULL;
|
||||||
|
|
||||||
|
UPDATE users SET msats = msats + msats_paying + msats_fee_paying WHERE id = user_id;
|
||||||
|
RETURN 0;
|
||||||
|
END IF;
|
||||||
|
RETURN 1;
|
||||||
|
END;
|
||||||
|
$$;
|
|
@ -238,11 +238,11 @@ async function checkWithdrawal ({ data: { hash }, boss, models, lnd }) {
|
||||||
)
|
)
|
||||||
if (code === 0) {
|
if (code === 0) {
|
||||||
notifyWithdrawal(dbWdrwl.userId, wdrwl)
|
notifyWithdrawal(dbWdrwl.userId, wdrwl)
|
||||||
}
|
if (dbWdrwl.wallet) {
|
||||||
if (dbWdrwl.wallet) {
|
// this was an autowithdrawal
|
||||||
// this was an autowithdrawal
|
const message = `autowithdrawal of ${numWithUnits(msatsToSats(paid), { abbreviate: false })} with ${numWithUnits(msatsToSats(fee), { abbreviate: false })} as fee`
|
||||||
const message = `autowithdrawal of ${numWithUnits(msatsToSats(paid), { abbreviate: false })} with ${numWithUnits(msatsToSats(fee), { abbreviate: false })} as fee`
|
await addWalletLog({ wallet: dbWdrwl.wallet.type, level: 'SUCCESS', message }, { models, me: { id: dbWdrwl.userId } })
|
||||||
await addWalletLog({ wallet: dbWdrwl.wallet.type, level: 'SUCCESS', message }, { models, me: { id: dbWdrwl.userId } })
|
}
|
||||||
}
|
}
|
||||||
} else if (wdrwl?.is_failed || notFound) {
|
} else if (wdrwl?.is_failed || notFound) {
|
||||||
let status = 'UNKNOWN_FAILURE'; let message = 'unknown failure'
|
let status = 'UNKNOWN_FAILURE'; let message = 'unknown failure'
|
||||||
|
@ -260,15 +260,15 @@ async function checkWithdrawal ({ data: { hash }, boss, models, lnd }) {
|
||||||
message = 'no route found'
|
message = 'no route found'
|
||||||
}
|
}
|
||||||
|
|
||||||
await serialize(
|
const [{ reverse_withdrawl: code }] = await serialize(
|
||||||
models.$executeRaw`
|
models.$queryRaw`
|
||||||
SELECT reverse_withdrawl(${dbWdrwl.id}::INTEGER, ${status}::"WithdrawlStatus")`,
|
SELECT reverse_withdrawl(${dbWdrwl.id}::INTEGER, ${status}::"WithdrawlStatus")`,
|
||||||
{ models }
|
{ models }
|
||||||
)
|
)
|
||||||
|
|
||||||
if (dbWdrwl.wallet) {
|
if (code === 0 && dbWdrwl.wallet) {
|
||||||
// add error into log for autowithdrawal
|
// add error into log for autowithdrawal
|
||||||
addWalletLog({
|
await addWalletLog({
|
||||||
wallet: dbWdrwl.wallet.type,
|
wallet: dbWdrwl.wallet.type,
|
||||||
level: 'ERROR',
|
level: 'ERROR',
|
||||||
message: 'autowithdrawal failed: ' + message
|
message: 'autowithdrawal failed: ' + message
|
||||||
|
|
Loading…
Reference in New Issue