Skip to content

Commit

Permalink
feat: support list deal by piece
Browse files Browse the repository at this point in the history
  • Loading branch information
simlecode committed Oct 9, 2023
1 parent cec5837 commit ff86f92
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 0 deletions.
3 changes: 3 additions & 0 deletions models/badger/storage_deal.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,9 @@ func (sdr *storageDealRepo) ListDeal(ctx context.Context, params *types.StorageD
deal.State == storagemarket.StorageDealExpired || deal.State == storagemarket.StorageDealError) {
return false, nil
}
if len(params.PieceCID) != 0 && deal.Proposal.PieceCID.String() != params.PieceCID {
return false, nil
}
if count >= params.Offset && count < end {
storageDeals = append(storageDeals, deal)
}
Expand Down
15 changes: 15 additions & 0 deletions models/badger/storage_deal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@ func TestListDeal(t *testing.T) {
ctx, r, dealCases := prepareStorageDealTest(t)

peers := []peer.ID{peer.ID("1"), peer.ID("2")}
byPiece := make(map[string]int)
miner := []address.Address{dealCases[0].Proposal.Provider, testutil.AddressProvider()(t)}
states := []storagemarket.StorageDealStatus{
storagemarket.StorageDealAcceptWait,
Expand All @@ -315,6 +316,7 @@ func TestListDeal(t *testing.T) {
deal.State = states[i%4]
err := r.SaveDeal(ctx, &deal)
assert.NoError(t, err)
byPiece[deal.Proposal.PieceCID.String()]++
}

// refresh UpdatedAt and CreationTime
Expand Down Expand Up @@ -388,6 +390,19 @@ func TestListDeal(t *testing.T) {
})
assert.NoError(t, err)
assert.Len(t, deals, 2)

// test piece
for piece, count := range byPiece {
deals, err = r.ListDeal(ctx, &markettypes.StorageDealQueryParams{
Page: markettypes.Page{
Limit: 100,
},
PieceCID: piece,
})
assert.NoError(t, err)
assert.Len(t, deals, count)
}

}

func TestGetStoragePieceInfo(t *testing.T) {
Expand Down
3 changes: 3 additions & 0 deletions models/mysql/storage_deal.go
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,9 @@ func (sdr *storageDealRepo) ListDeal(ctx context.Context, params *types.StorageD
if params.State != nil {
query.Where("state = ?", params.State)
}
if len(params.PieceCID) != 0 {
query.Where("cdp_piece_cid = ?", params.PieceCID)
}
if discardFailedDeal {
states := []storagemarket.StorageDealStatus{storagemarket.StorageDealFailing,
storagemarket.StorageDealExpired, storagemarket.StorageDealError, storagemarket.StorageDealSlashed}
Expand Down
11 changes: 11 additions & 0 deletions models/mysql/storage_deal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,17 @@ func TestListDeal(t *testing.T) {
res, err = r.StorageDealRepo().ListDeal(ctx, &types.StorageDealQueryParams{Page: defPage, DiscardFailedDeal: true})
assert.NoError(t, err)
assert.Len(t, res, 2)

// test piece
piece := dbStorageDealCases[0].PieceCID.String()
rows, err = getFullRows(dbStorageDealCases[0])
assert.NoError(t, err)
sql, vars, err = getSQL(newQuery().Where("cdp_piece_cid = ?", piece).Limit(caseCount).Find(&storageDeals))
assert.NoError(t, err)
mock.ExpectQuery(regexp.QuoteMeta(sql)).WithArgs(vars...).WillReturnRows(rows)
res, err = r.StorageDealRepo().ListDeal(ctx, &types.StorageDealQueryParams{Page: defPage, PieceCID: piece})
assert.NoError(t, err)
assert.Len(t, res, 1)
}

func TestListDealByAddr(t *testing.T) {
Expand Down

0 comments on commit ff86f92

Please sign in to comment.