Skip to content

Commit f7974f4

Browse files
committed
Fix app layer
1 parent ccbaaa1 commit f7974f4

File tree

2 files changed

+32
-26
lines changed

2 files changed

+32
-26
lines changed

server/internal/core/application/indexer.go

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@ import (
55
"context"
66
"encoding/hex"
77
"fmt"
8+
"math"
9+
"sort"
10+
"strings"
11+
"time"
12+
813
"github.com/ark-network/ark/common"
914
"github.com/ark-network/ark/common/tree"
1015
"github.com/ark-network/ark/server/internal/core/domain"
1116
"github.com/ark-network/ark/server/internal/core/ports"
1217
"github.com/btcsuite/btcd/btcec/v2/schnorr"
1318
"github.com/btcsuite/btcd/btcutil/psbt"
1419
"github.com/decred/dcrd/dcrec/secp256k1/v4"
15-
"math"
16-
"sort"
17-
"strings"
18-
"time"
1920
)
2021

2122
const (
@@ -30,13 +31,13 @@ const (
3031

3132
type IndexerService interface {
3233
GetCommitmentTxInfo(ctx context.Context, txid string) (*CommitmentTxResp, error)
33-
GetVtxoTree(ctx context.Context, batchOutpoint Outpoint, page Page) (*VtxoTreeResp, error)
34-
GetForfeitTxs(ctx context.Context, batchOutpoint Outpoint, page Page) (*ForfeitTxsResp, error)
35-
GetConnectors(ctx context.Context, batchOutpoint Outpoint, page Page) (*ConnectorResp, error)
36-
GetSpendableVtxos(ctx context.Context, address string, page Page) (*SpendableVtxosResp, error)
37-
GetTransactionHistory(ctx context.Context, address string, start, end int64, page Page) (*TxHistoryResp, error)
38-
GetVtxoChain(ctx context.Context, vtxoKey Outpoint, page Page) (*VtxoChainResp, error)
39-
GetVirtualTxs(ctx context.Context, txids []string, page Page) (*VirtualTxsResp, error)
34+
GetVtxoTree(ctx context.Context, batchOutpoint Outpoint, page *Page) (*VtxoTreeResp, error)
35+
GetForfeitTxs(ctx context.Context, batchOutpoint Outpoint, page *Page) (*ForfeitTxsResp, error)
36+
GetConnectors(ctx context.Context, batchOutpoint Outpoint, page *Page) (*ConnectorResp, error)
37+
GetSpendableVtxos(ctx context.Context, address string, page *Page) (*SpendableVtxosResp, error)
38+
GetTransactionHistory(ctx context.Context, address string, start, end int64, page *Page) (*TxHistoryResp, error)
39+
GetVtxoChain(ctx context.Context, vtxoKey Outpoint, page *Page) (*VtxoChainResp, error)
40+
GetVirtualTxs(ctx context.Context, txids []string, page *Page) (*VirtualTxsResp, error)
4041
GetSweptCommitmentTx(ctx context.Context, txid string) (*SweptCommitmentTxResp, error)
4142
}
4243

@@ -82,7 +83,7 @@ func (i *indexerService) GetCommitmentTxInfo(
8283
}, nil
8384
}
8485

85-
func (i *indexerService) GetVtxoTree(ctx context.Context, batchOutpoint Outpoint, page Page) (*VtxoTreeResp, error) {
86+
func (i *indexerService) GetVtxoTree(ctx context.Context, batchOutpoint Outpoint, page *Page) (*VtxoTreeResp, error) {
8687
vtxoTree, err := i.repoManager.Rounds().GetVtxoTreeWithTxid(ctx, batchOutpoint.Txid) //TODO repo methods needs to be updated with multiple batches in future
8788
if err != nil {
8889
return nil, err
@@ -96,7 +97,7 @@ func (i *indexerService) GetVtxoTree(ctx context.Context, batchOutpoint Outpoint
9697
}, nil
9798
}
9899

99-
func (i *indexerService) GetForfeitTxs(ctx context.Context, batchOutpoint Outpoint, page Page) (*ForfeitTxsResp, error) {
100+
func (i *indexerService) GetForfeitTxs(ctx context.Context, batchOutpoint Outpoint, page *Page) (*ForfeitTxsResp, error) {
100101
forfeitTxs, err := i.repoManager.Rounds().GetRoundForfeitTxs(ctx, batchOutpoint.Txid) //TODO batch thing
101102
if err != nil {
102103
return nil, err
@@ -116,21 +117,21 @@ func (i *indexerService) GetForfeitTxs(ctx context.Context, batchOutpoint Outpoi
116117

117118
}
118119

119-
func (i *indexerService) GetConnectors(ctx context.Context, batchOutpoint Outpoint, page Page) (*ConnectorResp, error) {
120-
round, err := i.repoManager.Rounds().GetRoundWithTxid(ctx, batchOutpoint.Txid) //TODO batch thing
120+
func (i *indexerService) GetConnectors(ctx context.Context, batchOutpoint Outpoint, page *Page) (*ConnectorResp, error) {
121+
connectorTree, err := i.repoManager.Rounds().GetRoundConnectorTree(ctx, batchOutpoint.Txid) //TODO batch thing
121122
if err != nil {
122123
return nil, err
123124
}
124125

125-
connectors, pageResp := paginate(flattenNodes(round.Connectors), page, maxPageSizeConnector)
126+
nodes, pageResp := paginate(flattenNodes(connectorTree), page, maxPageSizeVtxoTree)
126127

127128
return &ConnectorResp{
128-
Connectors: connectors,
129+
Connectors: nodes,
129130
Page: pageResp,
130131
}, nil
131132
}
132133

133-
func (i *indexerService) GetSpendableVtxos(ctx context.Context, address string, page Page) (*SpendableVtxosResp, error) {
134+
func (i *indexerService) GetSpendableVtxos(ctx context.Context, address string, page *Page) (*SpendableVtxosResp, error) {
134135
decodedAddress, err := common.DecodeAddress(address)
135136
if err != nil {
136137
return nil, err
@@ -156,7 +157,7 @@ func (i *indexerService) GetSpendableVtxos(ctx context.Context, address string,
156157
}
157158

158159
func (i *indexerService) GetTransactionHistory(
159-
ctx context.Context, address string, start, end int64, page Page,
160+
ctx context.Context, address string, start, end int64, page *Page,
160161
) (*TxHistoryResp, error) {
161162
allVtxos, err := i.repoManager.Vtxos().GetAll(ctx)
162163
if err != nil {
@@ -203,7 +204,7 @@ type vtxoKeyWithCreatedAt struct {
203204
CreatedAt int64
204205
}
205206

206-
func (i *indexerService) GetVtxoChain(ctx context.Context, vtxoKey Outpoint, page Page) (*VtxoChainResp, error) {
207+
func (i *indexerService) GetVtxoChain(ctx context.Context, vtxoKey Outpoint, page *Page) (*VtxoChainResp, error) {
207208
chainMap := make(map[vtxoKeyWithCreatedAt][]string)
208209

209210
outpoint := domain.VtxoKey{
@@ -289,7 +290,7 @@ func (i *indexerService) buildChain(
289290
return nil
290291
}
291292

292-
func (i *indexerService) GetVirtualTxs(ctx context.Context, txids []string, page Page) (*VirtualTxsResp, error) {
293+
func (i *indexerService) GetVirtualTxs(ctx context.Context, txids []string, page *Page) (*VirtualTxsResp, error) {
293294
txs, err := i.repoManager.Rounds().GetTxsWithTxids(ctx, txids)
294295
if err != nil {
295296
return nil, err
@@ -310,7 +311,10 @@ func (i *indexerService) GetSweptCommitmentTx(ctx context.Context, txid string)
310311
return &SweptCommitmentTxResp{}, nil
311312
}
312313

313-
func paginate[T any](items []T, params Page, maxSize int) ([]T, PageResp) {
314+
func paginate[T any](items []T, params *Page, maxSize int) ([]T, PageResp) {
315+
if params == nil {
316+
return items, PageResp{}
317+
}
314318
if params.PageSize <= 0 {
315319
params.PageSize = maxSize
316320
}
@@ -320,10 +324,11 @@ func paginate[T any](items []T, params Page, maxSize int) ([]T, PageResp) {
320324

321325
totalCount := len(items)
322326
totalPages := int(math.Ceil(float64(totalCount) / float64(params.PageSize)))
327+
next := min(params.PageNum+1, totalPages)
323328

324329
resp := PageResp{
325330
Current: params.PageNum,
326-
Next: params.PageNum + 1,
331+
Next: next,
327332
Total: totalPages,
328333
}
329334

server/internal/core/application/indexer_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package application
22

33
import (
44
"context"
5-
"github.com/btcsuite/btcd/btcutil/psbt"
6-
"github.com/stretchr/testify/assert"
75
"testing"
86
"time"
97

8+
"github.com/btcsuite/btcd/btcutil/psbt"
9+
"github.com/stretchr/testify/assert"
10+
1011
"github.com/ark-network/ark/server/internal/core/domain" // adapt for your project
1112
"github.com/btcsuite/btcd/chaincfg/chainhash"
1213
"github.com/btcsuite/btcd/wire"
@@ -96,7 +97,7 @@ func TestBuildChain(t *testing.T) {
9697
Vout: 0,
9798
}
9899

99-
resp, err := svc.GetVtxoChain(ctx, outpoint, Page{})
100+
resp, err := svc.GetVtxoChain(ctx, outpoint, nil)
100101
require.NoError(t, err, "buildChain should succeed")
101102

102103
redeemTx3Txs := resp.Transactions[redeemTx3ID]

0 commit comments

Comments
 (0)