update wallet code to prisma 5, handle prisma 5 errors on serialization

This commit is contained in:
keyan 2023-07-31 08:31:40 -05:00
parent acd8a8de5a
commit c909efb7b7
4 changed files with 9 additions and 9 deletions

View File

@ -35,17 +35,17 @@ async function serialize (models, call) {
if (error.message.includes('SN_REVOKED_OR_EXHAUSTED')) {
bail(new Error('faucet has been revoked or is exhausted'))
}
if (error.message.includes('23514')) {
bail(new Error('constraint failure'))
}
if (error.message.includes('SN_INV_PENDING_LIMIT')) {
bail(new Error('too many pending invoices'))
}
if (error.message.includes('SN_INV_EXCEED_BALANCE')) {
bail(new Error('pending invoices must not cause balance to exceed 1m sats'))
}
if (error.message.includes('40001')) {
throw new Error('wallet balance serialization failure - retry again')
if (error.message.includes('40001') || error.code === 'P2034') {
throw new Error('wallet balance serialization failure - try again')
}
if (error.message.includes('23514') || ['P2002', 'P2003', 'P2004'].includes(error.code)) {
bail(new Error('constraint failure'))
}
bail(error)
}

View File

@ -211,7 +211,7 @@ export default {
const [inv] = await serialize(models,
models.$queryRaw`SELECT * FROM create_invoice(${invoice.id}, ${invoice.request},
${expiresAt}, ${amount * 1000}, ${me.id}::INTEGER, ${description})`)
${expiresAt}::timestamp, ${amount * 1000}, ${me.id}::INTEGER, ${description})`)
return inv
} catch (error) {

View File

@ -47,7 +47,7 @@ export default async ({ query: { username, amount, nostr } }, res) => {
await serialize(models,
models.$queryRaw`SELECT * FROM create_invoice(${invoice.id}, ${invoice.request},
${expiresAt}, ${Number(amount)}, ${user.id}::INTEGER, ${noteStr || description})`)
${expiresAt}::timestamp, ${Number(amount)}, ${user.id}::INTEGER, ${noteStr || description})`)
return res.status(200).json({
pr: invoice.request,

View File

@ -60,7 +60,7 @@ function checkWithdrawal ({ boss, models, lnd }) {
const fee = Number(wdrwl.payment.fee_mtokens)
const paid = Number(wdrwl.payment.mtokens) - fee
await serialize(models, models.$executeRaw`
SELECT confirm_withdrawl(${id}, ${paid}, ${fee})`)
SELECT confirm_withdrawl(${id}::INTEGER, ${paid}, ${fee})`)
} else if (wdrwl?.is_failed || notFound) {
let status = 'UNKNOWN_FAILURE'
if (wdrwl?.failed.is_insufficient_balance) {
@ -73,7 +73,7 @@ function checkWithdrawal ({ boss, models, lnd }) {
status = 'ROUTE_NOT_FOUND'
}
await serialize(models, models.$executeRaw`
SELECT reverse_withdrawl(${id}, ${status})`)
SELECT reverse_withdrawl(${id}::INTEGER, ${status})`)
} else {
// we need to requeue to check again in 5 seconds
await boss.send('checkWithdrawal', { id, hash }, walletOptions)