mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-07 03:16:45 +01:00
implemented fromIdx and toIdx in transaction-pool request
This commit is contained in:
@@ -172,6 +172,18 @@ func parseIdx(c querier) (*common.Idx, error) {
|
|||||||
return stringToIdx(idxStr, name)
|
return stringToIdx(idxStr, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func parseFromIdx(c querier) (*common.Idx, error) {
|
||||||
|
const name = "fromAccountIndex"
|
||||||
|
idxStr := c.Query(name)
|
||||||
|
return stringToIdx(idxStr, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseToIdx(c querier) (*common.Idx, error) {
|
||||||
|
const name = "toAccountIndex"
|
||||||
|
idxStr := c.Query(name)
|
||||||
|
return stringToIdx(idxStr, name)
|
||||||
|
}
|
||||||
|
|
||||||
func parseExitFilters(c querier) (*common.TokenID, *ethCommon.Address, *babyjub.PublicKeyComp, *common.Idx, error) {
|
func parseExitFilters(c querier) (*common.TokenID, *ethCommon.Address, *babyjub.PublicKeyComp, *common.Idx, error) {
|
||||||
// TokenID
|
// TokenID
|
||||||
tid, err := parseQueryUint("tokenId", nil, 0, maxUint32, c)
|
tid, err := parseQueryUint("tokenId", nil, 0, maxUint32, c)
|
||||||
|
|||||||
@@ -427,10 +427,16 @@ paths:
|
|||||||
description: State of the transactions, e.g. "pend"
|
description: State of the transactions, e.g. "pend"
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/PoolL2TransactionState'
|
$ref: '#/components/schemas/PoolL2TransactionState'
|
||||||
- name: accountIndex
|
- name: fromAccountIndex
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
description: Id of the account
|
description: Id of the from account
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/AccountIndex'
|
||||||
|
- name: toAccountIndex
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
description: Id of the to account
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/AccountIndex'
|
$ref: '#/components/schemas/AccountIndex'
|
||||||
responses:
|
responses:
|
||||||
|
|||||||
@@ -56,8 +56,14 @@ func (a *API) getPoolTx(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) getPoolTxs(c *gin.Context) {
|
func (a *API) getPoolTxs(c *gin.Context) {
|
||||||
// Get idx
|
// Get from idx
|
||||||
idx, err := parseIdx(c)
|
fromIdx, err := parseFromIdx(c)
|
||||||
|
if err != nil {
|
||||||
|
retBadReq(err, c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Get to idx
|
||||||
|
toIdx, err := parseToIdx(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
retBadReq(err, c)
|
retBadReq(err, c)
|
||||||
return
|
return
|
||||||
@@ -69,7 +75,7 @@ func (a *API) getPoolTxs(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Fetch txs from l2DB
|
// Fetch txs from l2DB
|
||||||
txs, err := a.l2.GetPoolTxs(idx, state)
|
txs, err := a.l2.GetPoolTxs(fromIdx, toIdx, state)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
retSQLErr(err, c)
|
retSQLErr(err, c)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ func TestPoolTxs(t *testing.T) {
|
|||||||
fetchedTxs := testPoolTxsResponse{}
|
fetchedTxs := testPoolTxsResponse{}
|
||||||
require.NoError(t, doGoodReq(
|
require.NoError(t, doGoodReq(
|
||||||
"GET",
|
"GET",
|
||||||
endpoint+"?accountIndex=hez:ETH:263",
|
endpoint+"?fromAccountIndex=hez:ETH:263",
|
||||||
nil, &fetchedTxs))
|
nil, &fetchedTxs))
|
||||||
assert.Equal(t, 1, len(fetchedTxs.Txs))
|
assert.Equal(t, 1, len(fetchedTxs.Txs))
|
||||||
assert.Equal(t, "hez:ETH:263", fetchedTxs.Txs[0].FromIdx)
|
assert.Equal(t, "hez:ETH:263", fetchedTxs.Txs[0].FromIdx)
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ func (l2db *L2DB) GetTxAPI(txID common.TxID) (*PoolTxAPI, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetPoolTxs return Txs from the pool
|
// GetPoolTxs return Txs from the pool
|
||||||
func (l2db *L2DB) GetPoolTxs(idx *common.Idx, state *common.PoolL2TxState) ([]*PoolTxAPI, error) {
|
func (l2db *L2DB) GetPoolTxs(fromIdx, toIdx *common.Idx, state *common.PoolL2TxState) ([]*PoolTxAPI, error) {
|
||||||
cancel, err := l2db.apiConnCon.Acquire()
|
cancel, err := l2db.apiConnCon.Acquire()
|
||||||
defer cancel()
|
defer cancel()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -145,7 +145,8 @@ func (l2db *L2DB) GetPoolTxs(idx *common.Idx, state *common.PoolL2TxState) ([]*P
|
|||||||
args = append(args, state)
|
args = append(args, state)
|
||||||
nextIsAnd = true
|
nextIsAnd = true
|
||||||
}
|
}
|
||||||
if idx != nil {
|
|
||||||
|
if fromIdx != nil && toIdx != nil {
|
||||||
if nextIsAnd {
|
if nextIsAnd {
|
||||||
queryStr += "AND ("
|
queryStr += "AND ("
|
||||||
} else {
|
} else {
|
||||||
@@ -153,8 +154,24 @@ func (l2db *L2DB) GetPoolTxs(idx *common.Idx, state *common.PoolL2TxState) ([]*P
|
|||||||
}
|
}
|
||||||
queryStr += "tx_pool.from_idx = ? "
|
queryStr += "tx_pool.from_idx = ? "
|
||||||
queryStr += "OR tx_pool.to_idx = ?) "
|
queryStr += "OR tx_pool.to_idx = ?) "
|
||||||
args = append(args, idx)
|
args = append(args, fromIdx)
|
||||||
args = append(args, idx)
|
args = append(args, toIdx)
|
||||||
|
} else if fromIdx != nil {
|
||||||
|
if nextIsAnd {
|
||||||
|
queryStr += "AND "
|
||||||
|
} else {
|
||||||
|
queryStr += "WHERE "
|
||||||
|
}
|
||||||
|
queryStr += "tx_pool.from_idx = ?"
|
||||||
|
args = append(args, fromIdx)
|
||||||
|
} else if toIdx != nil {
|
||||||
|
if nextIsAnd {
|
||||||
|
queryStr += "AND "
|
||||||
|
} else {
|
||||||
|
queryStr += "WHERE "
|
||||||
|
}
|
||||||
|
queryStr += "tx_pool.to_idx = ?"
|
||||||
|
args = append(args, toIdx)
|
||||||
}
|
}
|
||||||
queryStr += "AND NOT external_delete;"
|
queryStr += "AND NOT external_delete;"
|
||||||
query := l2db.dbRead.Rebind(queryStr)
|
query := l2db.dbRead.Rebind(queryStr)
|
||||||
|
|||||||
@@ -328,7 +328,7 @@ func TestL2DB_GetPoolTxs(t *testing.T) {
|
|||||||
pendingTxs = append(pendingTxs, &poolL2Txs[i])
|
pendingTxs = append(pendingTxs, &poolL2Txs[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fetchedTxs, err := l2DBWithACC.GetPoolTxs(&idx, &state)
|
fetchedTxs, err := l2DBWithACC.GetPoolTxs(&idx, &idx, &state)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, len(pendingTxs), len(fetchedTxs))
|
assert.Equal(t, len(pendingTxs), len(fetchedTxs))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user