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

Updating graphql objects in go-sdk #155

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions examples/example.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,14 +79,16 @@ func main() {
transactionsConnection, err := account.GetTransactions(
client.Requester,
&count, // first
nil, //after
nil, // after
nil, // types
nil, // after_date
nil, // before_date
&network, // bitcoin_network
nil, // lightning_node_id
nil, // statuses
nil, //exclude_failures
nil, // exclude_failures
nil, // min_amount
nil, // max_amount
)
if err != nil {
fmt.Printf("get transactions failed: %v", err)
Expand Down Expand Up @@ -127,14 +129,16 @@ func main() {
transactionsConnection, err = account.GetTransactions(
client.Requester,
&pageSize, // first
after, //after
after, // after
nil, // types
nil, // after_date
nil, // before_date
&network, // bitcoin_network
nil, // lightning_node_id
nil, // statuses
nil, //exclude_failures
nil, // exclude_failures
nil, // min_amount
nil, // max_amount
)
fmt.Printf("We got %v transactions for the page (iteration #%v)\n", transactionsConnection.Count, iterations)
if *transactionsConnection.PageInfo.HasNextPage {
Expand All @@ -153,14 +157,16 @@ func main() {
transactionsConnection, err = account.GetTransactions(
client.Requester,
&count, // first
nil, //after
nil, // after
nil, // types
&afterDate, // after_date
nil, // before_date
&network, // bitcoin_network
nil, // lightning_node_id
nil, // statuses
nil, //exclude_failures
nil, // exclude_failures
nil, // min_amount
nil, // max_amount
)
fmt.Printf("We had %v transactions in the past 24 hours.", transactionsConnection.Count)
fmt.Println()
Expand Down
24 changes: 15 additions & 9 deletions objects/account.go
Original file line number Diff line number Diff line change
Expand Up @@ -734,11 +734,11 @@ func (obj Account) GetChannels(requester *requester.Requester, bitcoinNetwork Bi
return result, nil
}

func (obj Account) GetTransactions(requester *requester.Requester, first *int64, after *string, types *[]TransactionType, afterDate *time.Time, beforeDate *time.Time, bitcoinNetwork *BitcoinNetwork, lightningNodeId *string, statuses *[]TransactionStatus, excludeFailures *TransactionFailures) (*AccountToTransactionsConnection, error) {
query := `query FetchAccountToTransactionsConnection($entity_id: ID!, $first: Int, $after: String, $types: [TransactionType!], $after_date: DateTime, $before_date: DateTime, $bitcoin_network: BitcoinNetwork, $lightning_node_id: ID, $statuses: [TransactionStatus!], $exclude_failures: TransactionFailures) {
func (obj Account) GetTransactions(requester *requester.Requester, first *int64, after *string, types *[]TransactionType, afterDate *time.Time, beforeDate *time.Time, bitcoinNetwork *BitcoinNetwork, lightningNodeId *string, statuses *[]TransactionStatus, excludeFailures *TransactionFailures, maxAmount *CurrencyAmountInput, minAmount *CurrencyAmountInput) (*AccountToTransactionsConnection, error) {
query := `query FetchAccountToTransactionsConnection($entity_id: ID!, $first: Int, $after: String, $types: [TransactionType!], $after_date: DateTime, $before_date: DateTime, $bitcoin_network: BitcoinNetwork, $lightning_node_id: ID, $statuses: [TransactionStatus!], $exclude_failures: TransactionFailures, $max_amount: CurrencyAmountInput, $min_amount: CurrencyAmountInput) {
entity(id: $entity_id) {
... on Account {
transactions(, first: $first, after: $after, types: $types, after_date: $after_date, before_date: $before_date, bitcoin_network: $bitcoin_network, lightning_node_id: $lightning_node_id, statuses: $statuses, exclude_failures: $exclude_failures) {
transactions(, first: $first, after: $after, types: $types, after_date: $after_date, before_date: $before_date, bitcoin_network: $bitcoin_network, lightning_node_id: $lightning_node_id, statuses: $statuses, exclude_failures: $exclude_failures, max_amount: $max_amount, min_amount: $min_amount) {
Copy link

Choose a reason for hiding this comment

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

There is a syntax error in the transactions query - an extra comma appears after the opening parenthesis. The correct syntax should be transactions(first: $first, ...). This causes no runtime issues but should be fixed for consistency with GraphQL syntax.

Spotted by Graphite Reviewer

Is this helpful? React 👍 or 👎 to let us know.

__typename
account_to_transactions_connection_count: count
account_to_transactions_connection_page_info: page_info {
Expand Down Expand Up @@ -1337,6 +1337,8 @@ func (obj Account) GetTransactions(requester *requester.Requester, first *int64,
"lightning_node_id": lightningNodeId,
"statuses": statuses,
"exclude_failures": excludeFailures,
"max_amount": maxAmount,
"min_amount": minAmount,
}

response, err := requester.ExecuteGraphql(query, variables, nil)
Expand All @@ -1351,11 +1353,11 @@ func (obj Account) GetTransactions(requester *requester.Requester, first *int64,
return result, nil
}

func (obj Account) GetPaymentRequests(requester *requester.Requester, first *int64, after *string, afterDate *time.Time, beforeDate *time.Time, bitcoinNetwork *BitcoinNetwork, lightningNodeId *string) (*AccountToPaymentRequestsConnection, error) {
query := `query FetchAccountToPaymentRequestsConnection($entity_id: ID!, $first: Int, $after: String, $after_date: DateTime, $before_date: DateTime, $bitcoin_network: BitcoinNetwork, $lightning_node_id: ID) {
func (obj Account) GetPaymentRequests(requester *requester.Requester, first *int64, after *string, afterDate *time.Time, beforeDate *time.Time, bitcoinNetwork *BitcoinNetwork, lightningNodeId *string, maxAmount *CurrencyAmountInput, minAmount *CurrencyAmountInput) (*AccountToPaymentRequestsConnection, error) {
query := `query FetchAccountToPaymentRequestsConnection($entity_id: ID!, $first: Int, $after: String, $after_date: DateTime, $before_date: DateTime, $bitcoin_network: BitcoinNetwork, $lightning_node_id: ID, $max_amount: CurrencyAmountInput, $min_amount: CurrencyAmountInput) {
entity(id: $entity_id) {
... on Account {
payment_requests(, first: $first, after: $after, after_date: $after_date, before_date: $before_date, bitcoin_network: $bitcoin_network, lightning_node_id: $lightning_node_id) {
payment_requests(, first: $first, after: $after, after_date: $after_date, before_date: $before_date, bitcoin_network: $bitcoin_network, lightning_node_id: $lightning_node_id, max_amount: $max_amount, min_amount: $min_amount) {
__typename
account_to_payment_requests_connection_count: count
account_to_payment_requests_connection_page_info: page_info {
Expand Down Expand Up @@ -1688,6 +1690,8 @@ func (obj Account) GetPaymentRequests(requester *requester.Requester, first *int
"before_date": beforeDate,
"bitcoin_network": bitcoinNetwork,
"lightning_node_id": lightningNodeId,
"max_amount": maxAmount,
"min_amount": minAmount,
}

response, err := requester.ExecuteGraphql(query, variables, nil)
Expand All @@ -1702,11 +1706,11 @@ func (obj Account) GetPaymentRequests(requester *requester.Requester, first *int
return result, nil
}

func (obj Account) GetWithdrawalRequests(requester *requester.Requester, first *int64, after *string, bitcoinNetworks *[]BitcoinNetwork, statuses *[]WithdrawalRequestStatus, nodeIds *[]string, idempotencyKeys *[]string, afterDate *time.Time, beforeDate *time.Time) (*AccountToWithdrawalRequestsConnection, error) {
query := `query FetchAccountToWithdrawalRequestsConnection($entity_id: ID!, $first: Int, $after: String, $bitcoin_networks: [BitcoinNetwork!], $statuses: [WithdrawalRequestStatus!], $node_ids: [ID!], $idempotency_keys: [String!], $after_date: DateTime, $before_date: DateTime) {
func (obj Account) GetWithdrawalRequests(requester *requester.Requester, first *int64, after *string, bitcoinNetworks *[]BitcoinNetwork, statuses *[]WithdrawalRequestStatus, nodeIds *[]string, idempotencyKeys *[]string, afterDate *time.Time, beforeDate *time.Time, maxAmount *CurrencyAmountInput, minAmount *CurrencyAmountInput) (*AccountToWithdrawalRequestsConnection, error) {
query := `query FetchAccountToWithdrawalRequestsConnection($entity_id: ID!, $first: Int, $after: String, $bitcoin_networks: [BitcoinNetwork!], $statuses: [WithdrawalRequestStatus!], $node_ids: [ID!], $idempotency_keys: [String!], $after_date: DateTime, $before_date: DateTime, $max_amount: CurrencyAmountInput, $min_amount: CurrencyAmountInput) {
entity(id: $entity_id) {
... on Account {
withdrawal_requests(, first: $first, after: $after, bitcoin_networks: $bitcoin_networks, statuses: $statuses, node_ids: $node_ids, idempotency_keys: $idempotency_keys, after_date: $after_date, before_date: $before_date) {
withdrawal_requests(, first: $first, after: $after, bitcoin_networks: $bitcoin_networks, statuses: $statuses, node_ids: $node_ids, idempotency_keys: $idempotency_keys, after_date: $after_date, before_date: $before_date, max_amount: $max_amount, min_amount: $min_amount) {
__typename
account_to_withdrawal_requests_connection_count: count
account_to_withdrawal_requests_connection_page_info: page_info {
Expand Down Expand Up @@ -1785,6 +1789,8 @@ func (obj Account) GetWithdrawalRequests(requester *requester.Requester, first *
"idempotency_keys": idempotencyKeys,
"after_date": afterDate,
"before_date": beforeDate,
"max_amount": maxAmount,
"min_amount": minAmount,
}

response, err := requester.ExecuteGraphql(query, variables, nil)
Expand Down
4 changes: 4 additions & 0 deletions objects/all_entities.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ const (
... on LightsparkNodeWithRemoteSigning {
...LightsparkNodeWithRemoteSigningFragment
}
... on Offer {
...OfferFragment
}
... on OutgoingPayment {
...OutgoingPaymentFragment
}
Expand Down Expand Up @@ -90,6 +93,7 @@ const (
InvoiceFragment +
LightsparkNodeWithOSKFragment +
LightsparkNodeWithRemoteSigningFragment +
OfferFragment +
OutgoingPaymentFragment +
OutgoingPaymentAttemptFragment +
RoutingTransactionFragment +
Expand Down
14 changes: 14 additions & 0 deletions objects/create_offer_input.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Copyright ©, 2023-present, Lightspark Group, Inc. - All Rights Reserved
package objects

type CreateOfferInput struct {

// NodeId The node from which to create the offer.
NodeId string `json:"create_offer_input_node_id"`

// AmountMsats The amount for which the offer should be created, in millisatoshis. Setting the amount to 0 will allow the payer to specify an amount.
AmountMsats *int64 `json:"create_offer_input_amount_msats"`

// Description A short description of the offer.
Description *string `json:"create_offer_input_description"`
}
19 changes: 19 additions & 0 deletions objects/create_offer_output.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Copyright ©, 2023-present, Lightspark Group, Inc. - All Rights Reserved
package objects

import "github.com/lightsparkdev/go-sdk/types"

type CreateOfferOutput struct {
Offer types.EntityWrapper `json:"create_offer_output_offer"`
}

const (
CreateOfferOutputFragment = `
fragment CreateOfferOutputFragment on CreateOfferOutput {
__typename
create_offer_output_offer: offer {
id
}
}
`
)
5 changes: 5 additions & 0 deletions objects/create_test_mode_invoice_input.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@
package objects

type CreateTestModeInvoiceInput struct {

// LocalNodeId The local node from which to create the invoice.
LocalNodeId string `json:"create_test_mode_invoice_input_local_node_id"`

// AmountMsats The amount for which the invoice should be created, in millisatoshis. Setting the amount to 0 will allow the payer to specify an amount.
AmountMsats int64 `json:"create_test_mode_invoice_input_amount_msats"`

// Memo An optional memo to include in the invoice.
Memo *string `json:"create_test_mode_invoice_input_memo"`

// InvoiceType The type of invoice to create.
InvoiceType *InvoiceType `json:"create_test_mode_invoice_input_invoice_type"`
}
8 changes: 8 additions & 0 deletions objects/currency_amount_input.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Copyright ©, 2023-present, Lightspark Group, Inc. - All Rights Reserved
package objects

type CurrencyAmountInput struct {
Value int64 `json:"currency_amount_input_value"`

Unit CurrencyUnit `json:"currency_amount_input_unit"`
}
6 changes: 6 additions & 0 deletions objects/entity.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,12 @@ func EntityUnmarshal(data map[string]interface{}) (Entity, error) {
return nil, err
}
return lightsparkNodeWithRemoteSigning, nil
case "Offer":
var offer Offer
if err := json.Unmarshal(dataJSON, &offer); err != nil {
return nil, err
}
return offer, nil
case "OutgoingPayment":
var outgoingPayment OutgoingPayment
if err := json.Unmarshal(dataJSON, &outgoingPayment); err != nil {
Expand Down
69 changes: 69 additions & 0 deletions objects/offer.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// Copyright ©, 2023-present, Lightspark Group, Inc. - All Rights Reserved
package objects

import "time"

// Offer This object represents a BOLT #12 offer (https://github.com/lightning/bolts/blob/master/12-offer-encoding.md) created by a Lightspark Node. You can retrieve this object to receive relevant payment information for a specific offer generated by a Lightspark node.
type Offer struct {

// Id The unique identifier of this entity across all Lightspark systems. Should be treated as an opaque string.
Id string `json:"offer_id"`

// CreatedAt The date and time when the entity was first created.
CreatedAt time.Time `json:"offer_created_at"`

// UpdatedAt The date and time when the entity was last updated.
UpdatedAt time.Time `json:"offer_updated_at"`

// EncodedOffer The BOLT12 encoded offer. Starts with 'lno'.
EncodedOffer string `json:"offer_encoded_offer"`

// Amount The amount of the offer. If null, the payer chooses the amount.
Amount *CurrencyAmount `json:"offer_amount"`

// Description The description of the offer.
Description *string `json:"offer_description"`

// Typename The typename of the object
Typename string `json:"__typename"`
}

const (
OfferFragment = `
fragment OfferFragment on Offer {
__typename
offer_id: id
offer_created_at: created_at
offer_updated_at: updated_at
offer_encoded_offer: encoded_offer
offer_amount: amount {
__typename
currency_amount_original_value: original_value
currency_amount_original_unit: original_unit
currency_amount_preferred_currency_unit: preferred_currency_unit
currency_amount_preferred_currency_value_rounded: preferred_currency_value_rounded
currency_amount_preferred_currency_value_approx: preferred_currency_value_approx
}
offer_description: description
}
`
)

// GetId The unique identifier of this entity across all Lightspark systems. Should be treated as an opaque string.
func (obj Offer) GetId() string {
return obj.Id
}

// GetCreatedAt The date and time when the entity was first created.
func (obj Offer) GetCreatedAt() time.Time {
return obj.CreatedAt
}

// GetUpdatedAt The date and time when the entity was last updated.
func (obj Offer) GetUpdatedAt() time.Time {
return obj.UpdatedAt
}

func (obj Offer) GetTypename() string {
return obj.Typename
}
26 changes: 26 additions & 0 deletions objects/pay_test_mode_invoice_input.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright ©, 2023-present, Lightspark Group, Inc. - All Rights Reserved
package objects

type PayTestModeInvoiceInput struct {

// NodeId The node from where you want to send the payment.
NodeId string `json:"pay_test_mode_invoice_input_node_id"`

// EncodedInvoice The invoice you want to pay (as defined by the BOLT11 standard).
EncodedInvoice string `json:"pay_test_mode_invoice_input_encoded_invoice"`

// TimeoutSecs The timeout in seconds that we will try to make the payment.
TimeoutSecs int64 `json:"pay_test_mode_invoice_input_timeout_secs"`

// MaximumFeesMsats The maximum amount of fees that you want to pay for this payment to be sent, expressed in msats.
MaximumFeesMsats int64 `json:"pay_test_mode_invoice_input_maximum_fees_msats"`

// FailureReason The failure reason to trigger for the payment. If not set, pay_invoice will be called.
FailureReason *PaymentFailureReason `json:"pay_test_mode_invoice_input_failure_reason"`

// AmountMsats The amount you will pay for this invoice, expressed in msats. It should ONLY be set when the invoice amount is zero.
AmountMsats *int64 `json:"pay_test_mode_invoice_input_amount_msats"`

// IdempotencyKey The idempotency key of the request. The same result will be returned for the same idempotency key.
IdempotencyKey *string `json:"pay_test_mode_invoice_input_idempotency_key"`
}