Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Enhancement] CLNRest convert /v1/listpays to /v1/sql #2298

Merged
merged 1 commit into from
Aug 2, 2024

Conversation

newtonick
Copy link
Contributor

@newtonick newtonick commented Jul 22, 2024

Description

Like in PR #2290 and #2295, both bkpr-listaccountevents and listinvoices was converted to sql to improve performance. This PR is similar in purpose but for listpays. The listpays endpoint returns every lightning payment made by the node. In larger or older nodes this can be problematic. This PR limits payments returned to the last 150 payments made (completed, pending or failed).

This PR updates the listpays endpoint to sql to query the sendpays table. The listpays endpoint is a CLN plugin written in C; which I believe is defined here. The is no pays table available in the sql endpoint. The sendpays table is a list of payments attempts and payment parts. The query I include in this PR provides identical data point output (to the best of my knowledge) as the listpays but allows the limit to the last 150 payments by created_at timestamp.

Here is the query included in the PR:

select
  sp.payment_hash
, sp.groupid
, min(sp.status) as status
, min(sp.destination) as destination
, min(sp.created_at) as created_at
, min(sp.description) as description
, min(sp.bolt11) as bolt11
, min(sp.bolt12) as bolt12
, sum(case when sp.status = 'complete' then sp.amount_sent_msat else null end) as amount_sent_msat
, sum(case when sp.status = 'complete' then sp.amount_msat else 0 end) as amount_msat
, max(sp.payment_preimage) as preimage
from sendpays sp group by sp.payment_hash, sp.groupid
order by created_index desc
limit 150

This pull request is categorized as a:

  • New feature
  • Bug fix
  • Code refactor
  • Configuration change
  • Locales update
  • Quality assurance
  • Other

Checklist

  • I’ve run yarn run tsc and made sure my code compiles correctly
  • I’ve run yarn run lint and made sure my code didn’t contain any problematic patterns
  • I’ve run yarn run prettier and made sure my code is formatted correctly
  • I’ve run yarn run test and made sure all of the tests pass

Testing

If you modified or added a utility file, did you add new unit tests?

  • No, I’m a fool
  • Yes
  • N/A

I have tested this PR on the following platforms (please specify OS version and phone model/VM):

  • Android
  • iOS

I have tested this PR with the following types of nodes (please specify node version and API version where appropriate):

  • Embedded LND
  • LND (REST)
  • LND (Lightning Node Connect)
  • Core Lightning (CLNRest)
  • LndHub
  • [DEPRECATED] Core Lightning (c-lightning-REST)
  • [DEPRECATED] Core Lightning (Spark)
  • [DEPRECATED] Eclair

Locales

  • I’ve added new locale text that requires translations
  • I’m aware that new translations should be made on the ZEUS Transfix page and not directly to this repo

Third Party Dependencies and Packages

  • Contributors will need to run yarn after this PR is merged in
  • 3rd party dependencies have been modified:
    • verify that package.json and yarn.lock have been properly updated
    • verify that dependencies are installed for both iOS and Android platforms

Other:

  • Changes were made that require an update to the README
  • Changes were made that require an update to onboarding

@kaloudis kaloudis added this to the v0.9.0 milestone Jul 24, 2024
Copy link
Contributor

@kaloudis kaloudis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uTACK

@kaloudis kaloudis merged commit f0c3330 into ZeusLN:master Aug 2, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants