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>
75 lines
2.5 KiB
Go
75 lines
2.5 KiB
Go
package postgres
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/gaze-network/indexer-network/modules/nodesale/datagateway"
|
|
"github.com/gaze-network/indexer-network/modules/nodesale/internal/entity"
|
|
"github.com/gaze-network/indexer-network/modules/nodesale/repository/postgres/gen"
|
|
"github.com/samber/lo"
|
|
)
|
|
|
|
func mapNodes(nodes []gen.Node) []entity.Node {
|
|
return lo.Map(nodes, func(item gen.Node, index int) entity.Node {
|
|
return entity.Node{
|
|
SaleBlock: uint64(item.SaleBlock),
|
|
SaleTxIndex: uint32(item.SaleTxIndex),
|
|
NodeID: uint32(item.NodeID),
|
|
TierIndex: item.TierIndex,
|
|
DelegatedTo: item.DelegatedTo,
|
|
OwnerPublicKey: item.OwnerPublicKey,
|
|
PurchaseTxHash: item.PurchaseTxHash,
|
|
DelegateTxHash: item.DelegateTxHash,
|
|
}
|
|
})
|
|
}
|
|
|
|
func mapNodeSales(nodeSales []gen.NodeSale) []entity.NodeSale {
|
|
return lo.Map(nodeSales, func(item gen.NodeSale, index int) entity.NodeSale {
|
|
return entity.NodeSale{
|
|
BlockHeight: uint64(item.BlockHeight),
|
|
TxIndex: uint32(item.TxIndex),
|
|
Name: item.Name,
|
|
StartsAt: item.StartsAt.Time,
|
|
EndsAt: item.EndsAt.Time,
|
|
Tiers: item.Tiers,
|
|
SellerPublicKey: item.SellerPublicKey,
|
|
MaxPerAddress: uint32(item.MaxPerAddress),
|
|
DeployTxHash: item.DeployTxHash,
|
|
MaxDiscountPercentage: item.MaxDiscountPercentage,
|
|
SellerWallet: item.SellerWallet,
|
|
}
|
|
})
|
|
}
|
|
|
|
func mapNodeCountByTierIndexRows(nodeCount []gen.GetNodeCountByTierIndexRow) []datagateway.GetNodeCountByTierIndexRow {
|
|
return lo.Map(nodeCount, func(item gen.GetNodeCountByTierIndexRow, index int) datagateway.GetNodeCountByTierIndexRow {
|
|
return datagateway.GetNodeCountByTierIndexRow{
|
|
TierIndex: item.TierIndex,
|
|
}
|
|
})
|
|
}
|
|
|
|
func mapNodeSalesEvents(events []gen.Event) []entity.NodeSaleEvent {
|
|
return lo.Map(events, func(item gen.Event, index int) entity.NodeSaleEvent {
|
|
var meta entity.MetadataEventPurchase
|
|
err := json.Unmarshal(item.Metadata, &meta)
|
|
if err != nil {
|
|
meta = entity.MetadataEventPurchase{}
|
|
}
|
|
return entity.NodeSaleEvent{
|
|
TxHash: item.TxHash,
|
|
BlockHeight: item.BlockHeight,
|
|
TxIndex: item.TxIndex,
|
|
WalletAddress: item.WalletAddress,
|
|
Valid: item.Valid,
|
|
Action: item.Action,
|
|
RawMessage: item.RawMessage,
|
|
ParsedMessage: item.ParsedMessage,
|
|
BlockTimestamp: item.BlockTimestamp.Time.UTC(),
|
|
BlockHash: item.BlockHash,
|
|
Metadata: &meta,
|
|
}
|
|
})
|
|
}
|