* direct receives and send paid action * remove withdrawl->invoiceForward has many relationship * fix formatMsats implicit type expectations * ui + dropping direct payment bolt11s * squash migrations * fix bolt11 dropping and improve paid action wallet logging * remove redundant sender id * fix redirect when funding account over threshold * better logging
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { deletePayment } from 'ln-service'
 | |
| import { INVOICE_RETENTION_DAYS } from '@/lib/constants'
 | |
| 
 | |
| export async function autoDropBolt11s ({ models, lnd }) {
 | |
|   const retention = `${INVOICE_RETENTION_DAYS} days`
 | |
| 
 | |
|   // This query will update the withdrawls and return what the hash and bol11 values were before the update
 | |
|   const invoices = await models.$queryRaw`
 | |
|     WITH to_be_updated AS (
 | |
|       SELECT id, hash, bolt11
 | |
|       FROM "Withdrawl"
 | |
|       WHERE "userId" IN (SELECT id FROM users WHERE "autoDropBolt11s")
 | |
|       AND now() > created_at + ${retention}::INTERVAL
 | |
|       AND hash IS NOT NULL
 | |
|       AND status IS NOT NULL
 | |
|     ), updated_rows AS (
 | |
|       UPDATE "Withdrawl"
 | |
|       SET hash = NULL, bolt11 = NULL, preimage = NULL
 | |
|       FROM to_be_updated
 | |
|       WHERE "Withdrawl".id = to_be_updated.id)
 | |
|     SELECT * FROM to_be_updated;`
 | |
| 
 | |
|   if (invoices.length > 0) {
 | |
|     for (const invoice of invoices) {
 | |
|       try {
 | |
|         await deletePayment({ id: invoice.hash, lnd })
 | |
|       } catch (error) {
 | |
|         console.error(`Error removing invoice with hash ${invoice.hash}:`, error)
 | |
|         await models.withdrawl.update({
 | |
|           where: { id: invoice.id },
 | |
|           data: { hash: invoice.hash, bolt11: invoice.bolt11, preimage: invoice.preimage }
 | |
|         })
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   await models.$queryRaw`
 | |
|     UPDATE "DirectPayment"
 | |
|     SET hash = NULL, bolt11 = NULL, preimage = NULL
 | |
|     WHERE "receiverId" IN (SELECT id FROM users WHERE "autoDropBolt11s")
 | |
|     AND now() > created_at + ${retention}::INTERVAL
 | |
|     AND hash IS NOT NULL`
 | |
| }
 |