Commit 42827c44 authored by vicotor's avatar vicotor

add api for tx status

parent deeb57a3
......@@ -215,6 +215,36 @@ func (d *Dao) GetHistoryInfo(user string) (history apiModel.History, err error)
return history, nil
}
func (d *Dao) GetTxStatus(tx string) (result apiModel.TxStatusResult, err error) {
collection := d.db.Collection(new(dbModel.BridgeEvent).TableName())
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
result = apiModel.TxStatusResult{
Status: constant.TransferChainNoProcess.String(),
}
cursor, err := collection.Find(ctx, bson.M{"from_chain_tx_hash": tx})
if err != nil {
return result, nil
}
defer cursor.Close(ctx)
var events []dbModel.BridgeEvent
err = cursor.All(ctx, &events)
if err != nil {
return result, nil
}
if len(events) == 0 {
return result, nil
}
event := events[0]
result.Status = constant.TransferStatus(event.ToChainStatus).String()
return result, nil
}
type tokenBalance struct {
Name string
Decimals int
......
......@@ -129,11 +129,16 @@ type QuoteResult struct {
Payload string `json:"payload"`
}
type TxStatusResult struct {
Status string `json:"status"`
}
type Querier interface {
GetBridgeConfig() (config BridgeConfig, err error)
GetAllChainSwapConfig() (map[int64]*ChainSwapConfig, error)
GetSwapConfig(int64) (*ChainSwapConfig, error)
GetHistoryInfo(user string) (history History, err error)
GetTxStatus(tx string) (result TxStatusResult, err error)
GetTokenBalance(chainId int64, user string, tokens []string) (balances TokenBalances, err error)
GetBridgeTokenBalance(chainId int64, user string) (balances TokenBalances, err error)
QuoteBridge(param QuoteBridgeParam) (quote QuoteResult, err error)
......
......@@ -48,6 +48,25 @@ func getHistory(c *gin.Context) {
c.JSON(200, withSuccess(history))
}
func getTxStatus(c *gin.Context) {
txHashStr := c.DefaultQuery("txhash", "")
txHash := common.HexToHash(txHashStr)
if _querier == nil {
log.Error("querier is nil")
c.JSON(500, withError(constant.InternalError))
return
}
status, err := _querier.GetTxStatus(strings.ToLower(txHash.String()))
if err != nil {
log.Errorf("get history error: %v", err)
c.JSON(500, withError(constant.InternalError))
return
}
c.JSON(200, withSuccess(status))
}
func bridgeRouters(c *gin.Context) {
if _querier == nil {
log.Error("querier is nil")
......
......@@ -17,6 +17,7 @@ func initRouter(conf *config.Config, e *gin.Engine) {
{
user := v1.Group("/user")
user.GET("/history", getHistory)
user.GET("/txstatus", getTxStatus)
}
{
bridge := v1.Group("/bridge")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment