Skip to content

Commit

Permalink
Updating graphql objects in go-sdk
Browse files Browse the repository at this point in the history
  • Loading branch information
JasonCWang committed Jan 14, 2025
1 parent 037c4b0 commit 897de66
Show file tree
Hide file tree
Showing 10 changed files with 178 additions and 15 deletions.
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) {
__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"`
}

0 comments on commit 897de66

Please sign in to comment.