From 0c608dc6465774eebdc2b2631dd63b199096c7b7 Mon Sep 17 00:00:00 2001 From: HAOYUatHZ <37070449+HAOYUatHZ@users.noreply.github.com> Date: Wed, 26 Jun 2019 10:03:21 +0800 Subject: [PATCH] refactor(federation): change filter in list-txs (#221) --- federation/api/handler.go | 25 +++++++++++++++---------- federation/common/const.go | 5 ----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/federation/api/handler.go b/federation/api/handler.go index f4a25155..0ea4b070 100644 --- a/federation/api/handler.go +++ b/federation/api/handler.go @@ -16,24 +16,29 @@ type listCrosschainTxsReq struct{ Display } func (s *Server) ListCrosschainTxs(c *gin.Context, listTxsReq *listCrosschainTxsReq, query *PaginationQuery) ([]*orm.CrossTransaction, error) { var ormTxs []*orm.CrossTransaction txFilter := &orm.CrossTransaction{} - if listPending, err := listTxsReq.GetFilterBoolean("list_pending"); err == nil && listPending { - txFilter.Status = common.CrossTxPendingStatus - } - if listCompleted, err := listTxsReq.GetFilterBoolean("list_completed"); err == nil && listCompleted { - txFilter.Status = common.CrossTxCompletedStatus + + // filter tx status + if status, err := listTxsReq.GetFilterString("status"); err == nil && status != "" { + switch status { + case "pending": + txFilter.Status = common.CrossTxPendingStatus + case "completed": + txFilter.Status = common.CrossTxCompletedStatus + } } + + // filter tx hash if txHash, err := listTxsReq.GetFilterString("source_tx_hash"); err == nil && txHash != "" { txFilter.SourceTxHash = txHash } if txHash, err := listTxsReq.GetFilterString("dest_tx_hash"); err == nil && txHash != "" { txFilter.DestTxHash = sql.NullString{txHash, true} } + txQuery := s.db.Preload("Chain").Preload("Reqs").Preload("Reqs.Asset").Where(txFilter) - if onlyFromMainchain, err := listTxsReq.GetFilterBoolean("only_from_mainchain"); err == nil && onlyFromMainchain { - txQuery = txQuery.Joins("join chains on chains.id = cross_transactions.chain_id").Where("chains.name = ?", common.MainchainName) - } - if onlyFromSidechain, err := listTxsReq.GetFilterBoolean("only_from_sidechain"); err == nil && onlyFromSidechain { - txQuery = txQuery.Joins("join chains on chains.id = cross_transactions.chain_id").Where("chains.name = ?", common.SidechainName) + // filter direction + if fromChainName, err := listTxsReq.GetFilterString("from"); err == nil && fromChainName != "" { + txQuery = txQuery.Joins("join chains on chains.id = cross_transactions.chain_id").Where("chains.name = ?", fromChainName) } txQuery = txQuery.Order(fmt.Sprintf("cross_transactions.source_block_height %s", listTxsReq.Sorter.Order)) txQuery = txQuery.Order(fmt.Sprintf("cross_transactions.source_tx_index %s", listTxsReq.Sorter.Order)) diff --git a/federation/common/const.go b/federation/common/const.go index ccedfb16..94020315 100644 --- a/federation/common/const.go +++ b/federation/common/const.go @@ -1,11 +1,6 @@ package common const ( - MainchainName = "bytom" - SidechainName = "vapor" -) - -const ( _ uint8 = iota CrossTxPendingStatus CrossTxCompletedStatus -- 2.11.0