mirror of
https://github.com/alexgo-io/gaze-indexer.git
synced 2026-01-12 08:34:28 +08:00
* feat: recover nodesale module. * fix: refactored. * fix: fix table type. * fix: add entity * fix: bug UTC time. * ci: try to tidy before testing * ci: touch result file * ci: use echo to create new file * fix: try to skip test in ci * fix: remove os.Exit * fix: handle error * feat: add todo note * fix: Cannot run nodesale test because qtx is not initiated. * fix: 50% chance public key compare incorrectly. * fix: more consistent SQL * fix: sanity refactor. * fix: remove unused code. * fix: move last_block_default to config file. * fix: minor mistakes. * fix: * fix: refactor * fix: refactor * fix: delegate tx hash not record into db. * refactor: prepare for moving integration tests. * refactor: convert to unit tests. * fix: change to using input values since output values deducted fee. * feat: add extra unit test. * fix: wrong timestamp format. * fix: handle block timeout = 0 --------- Co-authored-by: Gaze <gazenw@users.noreply.github.com>
73 lines
2.1 KiB
Go
73 lines
2.1 KiB
Go
package httphandler
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/cockroachdb/errors"
|
|
"github.com/gaze-network/indexer-network/common/errs"
|
|
"github.com/gaze-network/indexer-network/modules/nodesale/datagateway"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type nodeRequest struct {
|
|
DeployId string `query:"deployId"`
|
|
OwnerPublicKey string `query:"ownerPublicKey"`
|
|
DelegateePublicKey string `query:"delegateePublicKey"`
|
|
}
|
|
|
|
type nodeResponse struct {
|
|
DeployId string `json:"deployId"`
|
|
NodeId uint32 `json:"nodeId"`
|
|
TierIndex int32 `json:"tierIndex"`
|
|
DelegatedTo string `json:"delegatedTo"`
|
|
OwnerPublicKey string `json:"ownerPublicKey"`
|
|
PurchaseTxHash string `json:"purchaseTxHash"`
|
|
DelegateTxHash string `json:"delegateTxHash"`
|
|
PurchaseBlockHeight int32 `json:"purchaseBlockHeight"`
|
|
}
|
|
|
|
func (h *handler) nodesHandler(ctx *fiber.Ctx) error {
|
|
var request nodeRequest
|
|
err := ctx.QueryParser(&request)
|
|
if err != nil {
|
|
return errors.Wrap(err, "cannot parse query")
|
|
}
|
|
|
|
ownerPublicKey := request.OwnerPublicKey
|
|
delegateePublicKey := request.DelegateePublicKey
|
|
|
|
var blockHeight int64
|
|
var txIndex int32
|
|
count, err := fmt.Sscanf(request.DeployId, "%d-%d", &blockHeight, &txIndex)
|
|
if count != 2 || err != nil {
|
|
return errs.NewPublicError("Invalid deploy ID")
|
|
}
|
|
|
|
nodes, err := h.nodeSaleDg.GetNodesByPubkey(ctx.UserContext(), datagateway.GetNodesByPubkeyParams{
|
|
SaleBlock: blockHeight,
|
|
SaleTxIndex: txIndex,
|
|
OwnerPublicKey: ownerPublicKey,
|
|
DelegatedTo: delegateePublicKey,
|
|
})
|
|
if err != nil {
|
|
return errors.Wrap(err, "Can't get nodes from db")
|
|
}
|
|
responses := make([]nodeResponse, len(nodes))
|
|
for i, node := range nodes {
|
|
responses[i].DeployId = request.DeployId
|
|
responses[i].NodeId = node.NodeID
|
|
responses[i].TierIndex = node.TierIndex
|
|
responses[i].DelegatedTo = node.DelegatedTo
|
|
responses[i].OwnerPublicKey = node.OwnerPublicKey
|
|
responses[i].PurchaseTxHash = node.PurchaseTxHash
|
|
responses[i].DelegateTxHash = node.DelegateTxHash
|
|
responses[i].PurchaseBlockHeight = txIndex
|
|
}
|
|
|
|
err = ctx.JSON(responses)
|
|
if err != nil {
|
|
return errors.Wrap(err, "Go fiber cannot parse JSON")
|
|
}
|
|
return nil
|
|
}
|