mirror of
https://github.com/alexgo-io/libbrc20-indexer.git
synced 2026-01-12 16:53:11 +08:00
refactor: init user token balance data
This commit is contained in:
@@ -45,24 +45,7 @@ func (g *BRC20ModuleIndexer) ProcessMint(data *model.InscriptionBRC20Data) error
|
||||
}
|
||||
|
||||
// get user's tokens to update
|
||||
var userTokens map[string]*model.BRC20TokenBalance
|
||||
if tokens, ok := g.UserTokensBalanceData[string(data.PkScript)]; !ok {
|
||||
userTokens = make(map[string]*model.BRC20TokenBalance, 0)
|
||||
g.UserTokensBalanceData[string(data.PkScript)] = userTokens
|
||||
} else {
|
||||
userTokens = tokens
|
||||
}
|
||||
// get tokenBalance to update
|
||||
var tokenBalance *model.BRC20TokenBalance
|
||||
if token, ok := userTokens[uniqueLowerTicker]; !ok {
|
||||
tokenBalance = &model.BRC20TokenBalance{Ticker: tokenInfo.Ticker, PkScript: data.PkScript}
|
||||
userTokens[uniqueLowerTicker] = tokenBalance
|
||||
} else {
|
||||
tokenBalance = token
|
||||
}
|
||||
// init token's users
|
||||
tokenUsers := g.TokenUsersBalanceData[uniqueLowerTicker]
|
||||
tokenUsers[string(data.PkScript)] = tokenBalance
|
||||
tokenBalance := g.GetUserTokenBalance(tokenInfo.Ticker, string(data.PkScript))
|
||||
|
||||
body.BRC20Tick = tokenInfo.Ticker
|
||||
mintInfo := model.NewInscriptionBRC20TickInfo(body.BRC20Tick, body.Operation, data)
|
||||
|
||||
@@ -107,27 +107,6 @@ func (g *BRC20ModuleIndexer) ProcessTransfer(data *model.InscriptionBRC20Data, t
|
||||
return errors.New("transfer, invalid transfer")
|
||||
}
|
||||
|
||||
// to
|
||||
// get user's tokens to update
|
||||
var userTokens map[string]*model.BRC20TokenBalance
|
||||
if tokens, ok := g.UserTokensBalanceData[receiverPkScript]; !ok {
|
||||
userTokens = make(map[string]*model.BRC20TokenBalance, 0)
|
||||
g.UserTokensBalanceData[receiverPkScript] = userTokens
|
||||
} else {
|
||||
userTokens = tokens
|
||||
}
|
||||
// get tokenBalance to update
|
||||
var tokenBalance *model.BRC20TokenBalance
|
||||
if token, ok := userTokens[uniqueLowerTicker]; !ok {
|
||||
tokenBalance = &model.BRC20TokenBalance{Ticker: transferInfo.Tick, PkScript: receiverPkScript}
|
||||
userTokens[uniqueLowerTicker] = tokenBalance
|
||||
} else {
|
||||
tokenBalance = token
|
||||
}
|
||||
// set token's users
|
||||
tokenUsers := g.TokenUsersBalanceData[uniqueLowerTicker]
|
||||
tokenUsers[receiverPkScript] = tokenBalance
|
||||
|
||||
// set from
|
||||
fromTokenBalance.UpdateHeight = data.Height
|
||||
|
||||
@@ -144,6 +123,10 @@ func (g *BRC20ModuleIndexer) ProcessTransfer(data *model.InscriptionBRC20Data, t
|
||||
userHistoryFrom := g.GetBRC20HistoryByUser(senderPkScript)
|
||||
userHistoryFrom.History = append(userHistoryFrom.History, fromHistory)
|
||||
}
|
||||
|
||||
// to
|
||||
// get user's tokens to update
|
||||
tokenBalance := g.GetUserTokenBalance(transferInfo.Tick, receiverPkScript)
|
||||
// set to
|
||||
tokenBalance.UpdateHeight = data.Height
|
||||
|
||||
|
||||
@@ -178,6 +178,30 @@ func (g *BRC20ModuleIndexer) initModule() {
|
||||
g.InscriptionsValidCommitMapById = make(map[string]*model.InscriptionBRC20Data, 0) // inner valid commit
|
||||
}
|
||||
|
||||
func (g *BRC20ModuleIndexer) GetUserTokenBalance(ticker, userPkScript string) (tokenBalance *model.BRC20TokenBalance) {
|
||||
uniqueLowerTicker := strings.ToLower(ticker)
|
||||
// get user's tokens to update
|
||||
var userTokens map[string]*model.BRC20TokenBalance
|
||||
if tokens, ok := g.UserTokensBalanceData[userPkScript]; !ok {
|
||||
userTokens = make(map[string]*model.BRC20TokenBalance, 0)
|
||||
g.UserTokensBalanceData[userPkScript] = userTokens
|
||||
} else {
|
||||
userTokens = tokens
|
||||
}
|
||||
// get tokenBalance to update
|
||||
if tb, ok := userTokens[uniqueLowerTicker]; !ok {
|
||||
tokenBalance = &model.BRC20TokenBalance{Ticker: ticker, PkScript: userPkScript}
|
||||
userTokens[uniqueLowerTicker] = tokenBalance
|
||||
} else {
|
||||
tokenBalance = tb
|
||||
}
|
||||
// set token's users
|
||||
tokenUsers := g.TokenUsersBalanceData[uniqueLowerTicker]
|
||||
tokenUsers[userPkScript] = tokenBalance
|
||||
|
||||
return tokenBalance
|
||||
}
|
||||
|
||||
func (g *BRC20ModuleIndexer) GenerateApproveEventsByTransfer(inscription, tick, from, to string, amt *decimal.Decimal) (events []*model.ConditionalApproveEvent) {
|
||||
transStateStatic := &model.TransferStateForConditionalApprove{
|
||||
Tick: tick,
|
||||
|
||||
Reference in New Issue
Block a user